DFLayoutEmbeddedImageProperties.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using Newtonsoft.Json.Linq;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Drawing;
  5. namespace InABox.Core
  6. {
  7. public class DFLayoutEmbeddedImageProperties : DFLayoutFieldProperties<Guid, DFLayoutEmbeddedMediaValue>
  8. {
  9. [EditorSequence(-995)]
  10. [NullEditor]
  11. public override Guid Default { get; set; }
  12. [CheckBoxEditor]
  13. [EditorSequence(1)]
  14. public bool DisableLibrary { get; set; }
  15. public override string FormatValue(DFLayoutEmbeddedMediaValue value)
  16. {
  17. return value.ID != Guid.Empty ? "Yes" : "";
  18. }
  19. public override DFLayoutEmbeddedMediaValue DeserializeValue(DFLoadStorageEntry entry)
  20. {
  21. var value = new DFLayoutEmbeddedMediaValue();
  22. value.Deserialize(entry);
  23. return value;
  24. }
  25. public override void SerializeValue(DFSaveStorageEntry entry, DFLayoutEmbeddedMediaValue value)
  26. {
  27. value.Serialize(entry);
  28. }
  29. public override Guid GetValue(DFLayoutEmbeddedMediaValue value)
  30. {
  31. return value.ID;
  32. }
  33. public override IEnumerable<CoreColumn> GetDisplayColumns()
  34. {
  35. yield return new CoreColumn { ColumnName = Code, DataType = typeof(byte[]) };
  36. yield return new CoreColumn { ColumnName = $"{Code}.ID", DataType = typeof(Guid) };
  37. yield return new CoreColumn { ColumnName = $"{Code}.Thumbnail", DataType = typeof(byte[]) };
  38. }
  39. public override IEnumerable<KeyValuePair<string, object?>> GetDisplayValues(DFLayoutEmbeddedMediaValue value)
  40. {
  41. if(value.Data != null && value.Data.Length > 0)
  42. {
  43. yield return new KeyValuePair<string, object?>(Code, value.Data);
  44. }
  45. else
  46. {
  47. yield return new KeyValuePair<string, object?>(Code, DigitalFormDocumentFactory.LoadDocument(value.ID));
  48. }
  49. yield return new KeyValuePair<string, object?>($"{Code}.ID", value.ID);
  50. yield return new KeyValuePair<string, object?>($"{Code}.Thumbnail", value.Thumbnail);
  51. }
  52. protected override void LoadProperties()
  53. {
  54. base.LoadProperties();
  55. DisableLibrary = GetProperty("DisableLibrary", false);
  56. }
  57. protected override void SaveProperties()
  58. {
  59. base.SaveProperties();
  60. SetProperty("DisableLibrary", DisableLibrary);
  61. }
  62. }
  63. }