DFLayoutMultiImageProperties.cs 2.4 KB

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