DFLayoutVideoFieldProperties.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace InABox.Core
  5. {
  6. public class DFLayoutVideoFieldProperties : DFLayoutFieldProperties<byte[], DFLayoutEmbeddedMediaValue>
  7. {
  8. public enum VideoQuality
  9. {
  10. Default,
  11. Low,
  12. Medium,
  13. High
  14. }
  15. [EditorSequence(-995)]
  16. [NullEditor]
  17. public override byte[] Default { get; set; } = new byte[] { };
  18. [CheckBoxEditor]
  19. [EditorSequence(100)]
  20. public bool DisableLibrary { get; set; }
  21. [Comment("Maximum video length (sec)")]
  22. [IntegerEditor]
  23. [EditorSequence(101)]
  24. public int MaximumVideoLength { get; set; } = 0;
  25. [EnumLookupEditor(typeof(VideoQuality))]
  26. [EditorSequence(102)]
  27. public VideoQuality Quality { get; set; } = VideoQuality.Default;
  28. public override string FormatValue(DFLayoutEmbeddedMediaValue value)
  29. {
  30. return value.ID != Guid.Empty ? "Yes" : "";
  31. }
  32. public override DFLayoutEmbeddedMediaValue DeserializeValue(DFLoadStorageEntry entry)
  33. {
  34. var value = new DFLayoutEmbeddedMediaValue();
  35. value.Deserialize(entry);
  36. return value;
  37. }
  38. public override void SerializeValue(DFSaveStorageEntry entry, DFLayoutEmbeddedMediaValue value)
  39. {
  40. value.Serialize(entry);
  41. }
  42. public override byte[] GetValue(DFLayoutEmbeddedMediaValue value)
  43. {
  44. return value.Data ?? Default;
  45. }
  46. public override IEnumerable<CoreColumn> GetDisplayColumns()
  47. {
  48. yield return new CoreColumn { ColumnName = Code, DataType = typeof(byte[]) };
  49. yield return new CoreColumn { ColumnName = $"{Code}.ID", DataType = typeof(Guid) };
  50. yield return new CoreColumn { ColumnName = $"{Code}.Thumbnail", DataType = typeof(byte[]) };
  51. }
  52. public override IEnumerable<KeyValuePair<string, object?>> GetDisplayValues(DFLayoutEmbeddedMediaValue value)
  53. {
  54. yield return new KeyValuePair<string, object?>(Code, DigitalFormDocumentFactory.LoadDocument(value.ID));
  55. yield return new KeyValuePair<string, object?>($"{Code}.ID", value.ID);
  56. yield return new KeyValuePair<string, object?>($"{Code}.Thumbnail", value.Thumbnail);
  57. }
  58. protected override void LoadProperties()
  59. {
  60. base.LoadProperties();
  61. DisableLibrary = GetProperty(nameof(DisableLibrary), false);
  62. MaximumVideoLength = GetProperty(nameof(MaximumVideoLength), 0);
  63. Quality = GetProperty(nameof(Quality), VideoQuality.Default);
  64. }
  65. protected override void SaveProperties()
  66. {
  67. base.SaveProperties();
  68. SetProperty(nameof(DisableLibrary), DisableLibrary);
  69. SetProperty(nameof(MaximumVideoLength),MaximumVideoLength);
  70. SetProperty(nameof(Quality), Quality);
  71. }
  72. }
  73. }