Mini8StatusToBrush.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using Newtonsoft.Json.Linq;
  2. namespace HistoryView.Converters;
  3. public class Mini8StatusToBrush : IValueConverter
  4. {
  5. public object? Convert(object value, Type targetType, object parameter, CultureInfo culture)
  6. {
  7. if (value is not Mini8Status status)
  8. return default;
  9. return parameter switch
  10. {
  11. "Light" => status switch
  12. {
  13. Mini8Status.Error => App.Current.Resources["LightEmergencyColor"],
  14. Mini8Status.Warning => App.Current.Resources["LightWarningColor"],
  15. Mini8Status.LostConnection => App.Current.Resources["LightWarningColor"],
  16. Mini8Status.Normal => App.Current.Resources["LightNormalColor"],
  17. Mini8Status.Disabled => App.Current.Resources["LightDisableColor"],
  18. _ => App.Current.Resources["LightDisableColor"],
  19. },
  20. _ => status switch
  21. {
  22. Mini8Status.Error => App.Current.Resources["EmergencyColor"],
  23. Mini8Status.Warning => App.Current.Resources["WarningColor"],
  24. Mini8Status.LostConnection => App.Current.Resources["WarningColor"],
  25. Mini8Status.Normal => App.Current.Resources["NormalColor"],
  26. Mini8Status.Disabled => App.Current.Resources["DisableColor"],
  27. _ => App.Current.Resources["DisableColor"],
  28. },
  29. };
  30. }
  31. public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
  32. {
  33. throw new NotImplementedException();
  34. }
  35. }
  36. public class Mini8StatusToBrushMulti : IMultiValueConverter
  37. {
  38. public object? Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
  39. {
  40. if (values is null || values.Length < 2)
  41. return default;
  42. if (values[0] is not Mini8Status status)
  43. return default;
  44. if (values[1] is not bool isConnected)
  45. return default;
  46. if (status==Mini8Status.Disabled)
  47. {
  48. return parameter switch
  49. {
  50. "Light" => App.Current.Resources["LightDisableColor"],
  51. _ => App.Current.Resources["DisableColor"],
  52. };
  53. }
  54. if (!isConnected)
  55. {
  56. return parameter switch
  57. {
  58. "Light" => App.Current.Resources["LightWarningColor"],
  59. _ => App.Current.Resources["WarningColor"],
  60. };
  61. }
  62. return parameter switch
  63. {
  64. "Light" => status switch
  65. {
  66. Mini8Status.Error => App.Current.Resources["LightEmergencyColor"],
  67. Mini8Status.Warning => App.Current.Resources["LightWarningColor"],
  68. Mini8Status.LostConnection => App.Current.Resources["LightWarningColor"],
  69. Mini8Status.Normal => App.Current.Resources["LightNormalColor"],
  70. Mini8Status.Disabled => App.Current.Resources["LightDisableColor"],
  71. _ => App.Current.Resources["LightDisableColor"],
  72. },
  73. _ => status switch
  74. {
  75. Mini8Status.Error => App.Current.Resources["EmergencyColor"],
  76. Mini8Status.Warning => App.Current.Resources["WarningColor"],
  77. Mini8Status.LostConnection => App.Current.Resources["WarningColor"],
  78. Mini8Status.Normal => App.Current.Resources["NormalColor"],
  79. Mini8Status.Disabled => App.Current.Resources["DisableColor"],
  80. _ => App.Current.Resources["DisableColor"],
  81. },
  82. };
  83. }
  84. public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
  85. {
  86. throw new NotImplementedException();
  87. }
  88. }