DFLayoutBooleanFieldProperties.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 == true ? TrueValue : FalseValue;
  40. }
  41. public override bool GetValue(bool? value)
  42. {
  43. return value ?? Default;
  44. }
  45. public override bool? DeserializeValue(DFLoadStorageEntry entry)
  46. {
  47. var value = entry.GetValue();
  48. if (value is bool b)
  49. return b;
  50. if (bool.TryParse(value as string, out var result))
  51. return result;
  52. if (value is string str)
  53. {
  54. if (str == TrueValue)
  55. return true;
  56. if (str == FalseValue)
  57. return false;
  58. return null;
  59. }
  60. return null;
  61. }
  62. public override void SerializeValue(DFSaveStorageEntry entry, bool? value)
  63. {
  64. if(value == true)
  65. {
  66. entry.SetValue(TrueValue);
  67. }
  68. else if (value == false)
  69. {
  70. entry.SetValue(FalseValue);
  71. }
  72. }
  73. }
  74. }