DFLayoutVideoFieldProperties.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace InABox.Core
  5. {
  6. public class DFLayoutVideoFieldProperties : DFLayoutFieldProperties<byte[]>
  7. {
  8. public enum VideoQuality
  9. {
  10. Default,
  11. Low,
  12. Medium,
  13. High
  14. }
  15. [IntegerEditor(ToolTip = "Maximum video length (sec)")]
  16. public int MaximumVideoLength { get; set; } = 0;
  17. [EnumLookupEditor(typeof(VideoQuality))]
  18. public VideoQuality Quality { get; set; } = VideoQuality.Default;
  19. public override string FormatValue(object? value)
  20. {
  21. return value != null ? "Yes" : "";
  22. }
  23. public override object? ParseValue(object? value)
  24. {
  25. if (value is byte[])
  26. return value;
  27. if (value is string str)
  28. {
  29. if (Guid.TryParse(str, out var id))
  30. {
  31. return Array.Empty<byte>();
  32. }
  33. try
  34. {
  35. return Convert.FromBase64String(str);
  36. }
  37. catch (Exception e)
  38. {
  39. Logger.Send(LogType.Error, "", $"Error in video data; invalid Base-64: {e.Message}");
  40. return null;
  41. }
  42. }
  43. return null;
  44. }
  45. }
  46. }