DFLayoutEmbeddedImageProperties.cs 2.6 KB

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