DFLayoutMultiImageProperties.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Newtonsoft.Json.Linq;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. namespace InABox.Core
  6. {
  7. public class DFLayoutMultiImageProperties : DFLayoutFieldProperties<List<Guid>, DFLayoutEmbeddedMediaValues>
  8. {
  9. [CheckBoxEditor]
  10. public bool DisableLibrary { get; set; } = false;
  11. public override string FormatValue(DFLayoutEmbeddedMediaValues value)
  12. {
  13. return value.Present ? "Yes" : "";
  14. }
  15. public override DFLayoutEmbeddedMediaValues DeserializeValue(DFLoadStorageEntry entry)
  16. {
  17. var value = new DFLayoutEmbeddedMediaValues();
  18. value.Deserialize(entry);
  19. return value;
  20. }
  21. public override void SerializeValue(DFSaveStorageEntry entry, DFLayoutEmbeddedMediaValues value)
  22. {
  23. value.Serialize(entry);
  24. }
  25. public override List<Guid> GetValue(DFLayoutEmbeddedMediaValues value)
  26. {
  27. return value.Select(x => x.ID).ToList();
  28. }
  29. public override IEnumerable<CoreColumn> GetDisplayColumns()
  30. {
  31. yield return new CoreColumn { ColumnName = Code, DataType = typeof(List<byte[]>) };
  32. yield return new CoreColumn { ColumnName = $"{Code}.IDs", DataType = typeof(List<Guid>) };
  33. yield return new CoreColumn { ColumnName = $"{Code}.Thumbnails", DataType = typeof(List<byte[]>) };
  34. }
  35. public override IEnumerable<KeyValuePair<string, object?>> GetDisplayValues(DFLayoutEmbeddedMediaValues value)
  36. {
  37. yield return new KeyValuePair<string, object?>(Code, value.Select(x => DigitalFormDocumentFactory.LoadDocument(x.ID)).ToList());
  38. yield return new KeyValuePair<string, object?>($"{Code}.IDs", value.Select(x => x.ID).ToList());
  39. yield return new KeyValuePair<string, object?>($"{Code}.Thumbnails", value.Select(x => x.Thumbnail).ToList());
  40. }
  41. protected override void LoadProperties()
  42. {
  43. base.LoadProperties();
  44. DisableLibrary = GetProperty("DisableLibrary", false);
  45. }
  46. protected override void SaveProperties()
  47. {
  48. base.SaveProperties();
  49. SetProperty("DisableLibrary", DisableLibrary);
  50. }
  51. }
  52. }