DFLayoutVideoFieldProperties.cs 3.0 KB

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