DFLayoutVideoFieldProperties.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. [CheckBoxEditor]
  16. [EditorSequence(100)]
  17. public bool DisableLibrary { get; set; }
  18. [IntegerEditor(ToolTip = "Maximum video length (sec)")]
  19. [EditorSequence(101)]
  20. public int MaximumVideoLength { get; set; } = 0;
  21. [EnumLookupEditor(typeof(VideoQuality))]
  22. [EditorSequence(102)]
  23. public VideoQuality Quality { get; set; } = VideoQuality.Default;
  24. public override string FormatValue(DFLayoutEmbeddedMediaValue value)
  25. {
  26. return value.ID != Guid.Empty ? "Yes" : "";
  27. }
  28. public override DFLayoutEmbeddedMediaValue DeserializeValue(DFLoadStorageEntry entry)
  29. {
  30. var value = new DFLayoutEmbeddedMediaValue();
  31. value.Deserialize(entry);
  32. return value;
  33. }
  34. public override void SerializeValue(DFSaveStorageEntry entry, DFLayoutEmbeddedMediaValue value)
  35. {
  36. value.Serialize(entry);
  37. }
  38. public override byte[] GetValue(DFLayoutEmbeddedMediaValue value)
  39. {
  40. return value.Data ?? Default;
  41. }
  42. public override IEnumerable<CoreColumn> GetDisplayColumns()
  43. {
  44. yield return new CoreColumn { ColumnName = Code, DataType = typeof(byte[]) };
  45. yield return new CoreColumn { ColumnName = $"{Code}.ID", DataType = typeof(Guid) };
  46. yield return new CoreColumn { ColumnName = $"{Code}.Thumbnail", DataType = typeof(byte[]) };
  47. }
  48. public override IEnumerable<KeyValuePair<string, object?>> GetDisplayValues(DFLayoutEmbeddedMediaValue value)
  49. {
  50. yield return new KeyValuePair<string, object?>(Code, DigitalFormDocumentFactory.LoadDocument(value.ID));
  51. yield return new KeyValuePair<string, object?>($"{Code}.ID", value.ID);
  52. yield return new KeyValuePair<string, object?>($"{Code}.Thumbnail", value.Thumbnail);
  53. }
  54. protected override void LoadProperties()
  55. {
  56. base.LoadProperties();
  57. DisableLibrary = GetProperty(nameof(DisableLibrary), false);
  58. MaximumVideoLength = GetProperty(nameof(MaximumVideoLength), 0);
  59. Quality = GetProperty(nameof(Quality), VideoQuality.Default);
  60. }
  61. protected override void SaveProperties()
  62. {
  63. base.SaveProperties();
  64. SetProperty(nameof(DisableLibrary), DisableLibrary);
  65. SetProperty(nameof(MaximumVideoLength),MaximumVideoLength);
  66. SetProperty(nameof(Quality), Quality);
  67. }
  68. }
  69. }