DFLayoutMultiImageProperties.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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(1)]
  10. [CheckBoxEditor]
  11. public bool DisableLibrary { get; set; } = false;
  12. [CheckBoxEditor]
  13. [EditorSequence(2)]
  14. public bool Editable { get; set; } = true;
  15. public override string FormatValue(DFLayoutEmbeddedMediaValues value)
  16. {
  17. return value.Present ? "Yes" : "";
  18. }
  19. public override DFLayoutEmbeddedMediaValues DeserializeValue(DFLoadStorageEntry entry)
  20. {
  21. var value = new DFLayoutEmbeddedMediaValues();
  22. value.Deserialize(entry);
  23. return value;
  24. }
  25. public override void SerializeValue(DFSaveStorageEntry entry, DFLayoutEmbeddedMediaValues value)
  26. {
  27. value.Serialize(entry);
  28. }
  29. public override List<Guid> GetValue(DFLayoutEmbeddedMediaValues value)
  30. {
  31. return value.Select(x => x.ID).ToList();
  32. }
  33. public override IEnumerable<CoreColumn> GetDisplayColumns()
  34. {
  35. yield return new CoreColumn { ColumnName = Code, DataType = typeof(List<byte[]>) };
  36. yield return new CoreColumn { ColumnName = $"{Code}.IDs", DataType = typeof(List<Guid>) };
  37. yield return new CoreColumn { ColumnName = $"{Code}.Thumbnails", DataType = typeof(List<byte[]>) };
  38. }
  39. public override IEnumerable<KeyValuePair<string, object?>> GetDisplayValues(DFLayoutEmbeddedMediaValues value)
  40. {
  41. yield return new KeyValuePair<string, object?>(Code, value.Select(x => DigitalFormDocumentFactory.LoadDocument(x.ID)).ToList());
  42. yield return new KeyValuePair<string, object?>($"{Code}.IDs", value.Select(x => x.ID).ToList());
  43. yield return new KeyValuePair<string, object?>($"{Code}.Thumbnails", value.Select(x => x.Thumbnail).ToList());
  44. }
  45. protected override void LoadProperties()
  46. {
  47. base.LoadProperties();
  48. DisableLibrary = GetProperty("DisableLibrary", false);
  49. Editable = GetProperty("Editable", true);
  50. }
  51. protected override void SaveProperties()
  52. {
  53. base.SaveProperties();
  54. SetProperty("DisableLibrary", DisableLibrary);
  55. SetProperty("Editable", Editable);
  56. }
  57. }
  58. }