DFLayoutBooleanFieldProperties.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. [EditorSequence(-995)]
  12. [CheckBoxEditor]
  13. public override bool? Default { get; set; }
  14. [EnumLookupEditor(typeof(DesignBooleanFieldType))]
  15. [EditorSequence(1)]
  16. public DesignBooleanFieldType Type { get; set; }
  17. [TextBoxEditor]
  18. [EditorSequence(2)]
  19. public string TrueValue { get; set; }
  20. [TextBoxEditor]
  21. [EditorSequence(3)]
  22. public string FalseValue { get; set; }
  23. protected override void LoadProperties()
  24. {
  25. base.LoadProperties();
  26. Type = GetProperty("Type", DesignBooleanFieldType.Checkbox);
  27. TrueValue = GetProperty("TrueValue", "True");
  28. FalseValue = GetProperty("FalseValue", "False");
  29. }
  30. protected override void SaveProperties()
  31. {
  32. base.SaveProperties();
  33. SetProperty("Type", Type);
  34. SetProperty("TrueValue", TrueValue);
  35. SetProperty("FalseValue", FalseValue);
  36. }
  37. public override string FormatValue(bool? value)
  38. {
  39. return value switch
  40. {
  41. true => TrueValue,
  42. false => FalseValue,
  43. null => ""
  44. };
  45. }
  46. public override bool? GetValue(bool? value)
  47. {
  48. return value ?? Default;
  49. }
  50. public override bool? DeserializeValue(DFLoadStorageEntry entry)
  51. {
  52. var value = entry.GetValue();
  53. if (value is bool b)
  54. return b;
  55. if (bool.TryParse(value as string, out var result))
  56. return result;
  57. if (value is string str)
  58. {
  59. if (str == TrueValue)
  60. return true;
  61. else if (str == FalseValue)
  62. return false;
  63. else
  64. return null;
  65. }
  66. return null;
  67. }
  68. public override void SerializeValue(DFSaveStorageEntry entry, bool? value)
  69. {
  70. if(value == true)
  71. {
  72. entry.SetValue(TrueValue);
  73. }
  74. else if (value == false)
  75. {
  76. entry.SetValue(FalseValue);
  77. }
  78. else
  79. {
  80. entry.SetValue(null);
  81. }
  82. }
  83. }
  84. }