DFLayoutBooleanFieldProperties.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. namespace InABox.Core
  2. {
  3. public enum DesignBooleanFieldType
  4. {
  5. Checkbox,
  6. ComboBox,
  7. Buttons
  8. }
  9. public class DFLayoutBooleanFieldProperties : DFLayoutFieldProperties<bool, bool?>
  10. {
  11. [EnumLookupEditor(typeof(DesignBooleanFieldType))]
  12. [EditorSequence(1)]
  13. public DesignBooleanFieldType Type { get; set; }
  14. [TextBoxEditor]
  15. [EditorSequence(2)]
  16. public string TrueValue { get; set; }
  17. [TextBoxEditor]
  18. [EditorSequence(3)]
  19. public string FalseValue { get; set; }
  20. protected override void LoadProperties()
  21. {
  22. base.LoadProperties();
  23. Type = GetProperty("Type", DesignBooleanFieldType.Checkbox);
  24. TrueValue = GetProperty("TrueValue", "True");
  25. FalseValue = GetProperty("FalseValue", "False");
  26. }
  27. protected override void SaveProperties()
  28. {
  29. base.SaveProperties();
  30. SetProperty("Type", Type);
  31. SetProperty("TrueValue", TrueValue);
  32. SetProperty("FalseValue", FalseValue);
  33. }
  34. public override string FormatValue(bool? value)
  35. {
  36. return value == true ? TrueValue : FalseValue;
  37. }
  38. public override bool GetValue(bool? value)
  39. {
  40. return value ?? Default;
  41. }
  42. public override bool? DeserializeValue(DFLoadStorageEntry entry)
  43. {
  44. var value = entry.GetValue();
  45. if (value is bool b)
  46. return b;
  47. if (bool.TryParse(value as string, out var result))
  48. return result;
  49. if (value is string str)
  50. {
  51. if (str == TrueValue)
  52. return true;
  53. if (str == FalseValue)
  54. return false;
  55. return null;
  56. }
  57. return null;
  58. }
  59. public override void SerializeValue(DFSaveStorageEntry entry, bool? value)
  60. {
  61. if(value == true)
  62. {
  63. entry.SetValue(TrueValue);
  64. }
  65. else if (value == false)
  66. {
  67. entry.SetValue(FalseValue);
  68. }
  69. }
  70. }
  71. }