123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- namespace HistoryView.Converters;
- public class MutiValueToVisibility : IMultiValueConverter
- {
- public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
- {
- if (values is null || values.Length < 6)
- return Visibility.Collapsed;
- if (parameter is not string status)
- return Visibility.Collapsed;
- if (values[0] is not float caps)
- return Visibility.Collapsed;
- if (values[1] is not float floor)
- return Visibility.Collapsed;
- if (values[2] is not float current)
- return Visibility.Collapsed;
- if (values[3] is not Inhibit mode)
- return Visibility.Collapsed;
- if (values[4] is not ChannelMode channelMode)
- return Visibility.Collapsed;
- if (values[5] is not bool IsEnable || !IsEnable)
- return Visibility.Collapsed;
- if (values[6] is not bool IsConnected || !IsConnected)
- return Visibility.Collapsed;
- if (mode != Inhibit.Enable)
- return Visibility.Collapsed;
- if (channelMode == ChannelMode.Monitor)
- return Visibility.Collapsed;
- switch (channelMode)
- {
- case ChannelMode.Control:
- break;
- case ChannelMode.Monitor:
- case ChannelMode.UnUsed:
- default:
- return Visibility.Collapsed;
- }
- switch (status)
- {
- case "Over":
- if (current > caps)
- return Visibility.Visible;
- break;
- case "Normal":
- if (current <= caps && current >= floor)
- return Visibility.Visible;
- break;
- case "Under":
- if (current < floor)
- return Visibility.Visible;
- break;
- default:
- break;
- }
- return Visibility.Collapsed;
- }
- public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
- public class StatusToVisibility : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (value is not Inhibit mode)
- return Visibility.Visible;
- return mode switch
- {
- Inhibit.Enable => Visibility.Visible,
- Inhibit.Disable => Visibility.Visible,
- _ => Visibility.Hidden
- };
- }
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
- public class TcBrockenToVisibility : IMultiValueConverter
- {
- public object? Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
- {
- if (values.Length < 2)
- return Visibility.Collapsed;
- if (values[0] is not ChannelMode mode)
- return Visibility.Collapsed;
- if (values[1] is not TcBorken tcBorken)
- return Visibility.Collapsed;
- switch (mode)
- {
- case ChannelMode.Control:
- case ChannelMode.Monitor:
- break;
- case ChannelMode.UnUsed:
- default:
- return Visibility.Collapsed;
- }
- return tcBorken switch
- {
- TcBorken.Error => Visibility.Visible,
- TcBorken.Normal => Visibility.Collapsed,
- _ => Visibility.Collapsed
- };
- }
- public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
- public class AutoTuntToVisibility : IMultiValueConverter
- {
- public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
- {
- if (values.Length < 3)
- return Visibility.Collapsed;
- if (values[0] is not Inhibit inhibit)
- return Visibility.Collapsed;
- if (inhibit == Inhibit.Disable)
- return Visibility.Collapsed;
- if (values[1] is not AutoTuneStatus autoTune)
- return Visibility.Collapsed;
- if (values[2] is not ActiveTuneSet active)
- return Visibility.Collapsed;
- if (active == ActiveTuneSet.Running)
- return Visibility.Collapsed;
- return autoTune switch
- {
- AutoTuneStatus.Triggered => Visibility.Visible,
- AutoTuneStatus.Tuning => Visibility.Visible,
- AutoTuneStatus.Complete => Visibility.Visible,
- AutoTuneStatus.Timeout => Visibility.Visible,
- AutoTuneStatus.Overflow => Visibility.Visible,
- _ => (object)Visibility.Collapsed,
- };
- }
- public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
- public class ChannelModeToVisbility : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (value is not ChannelMode channelMode)
- return Visibility.Collapsed;
- return channelMode switch
- {
- ChannelMode.Control => Visibility.Collapsed,
- ChannelMode.Monitor => Visibility.Visible,
- ChannelMode.UnUsed => Visibility.Visible,
- _ => Visibility.Collapsed
- };
- }
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
- public class ChannelModeToChannelDisplay : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (value is not ChannelMode channelMode)
- return Visibility.Visible;
- return channelMode switch
- {
- ChannelMode.Control => Visibility.Visible,
- ChannelMode.Monitor => Visibility.Visible,
- ChannelMode.UnUsed => Visibility.Hidden,
- _ => Visibility.Visible
- };
- }
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
- public class StatusToBrush : IMultiValueConverter
- {
- public object? Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
- {
- if (values is null || values.Length < 4)
- return default;
- if (parameter is not string light)
- light = "Bright";
- if (values[0] is not Inhibit mode)
- return default;
- if (values[1] is not Mini8Status mini8Status)
- return default;
- if (values[2] is not ChannelSuatus status)
- return default;
- if (values[3] is not bool isConnected)
- return default;
- if (!isConnected)
- {
- return light switch
- {
- "Bright" => App.Current.Resources["DisableColor"],
- "Light" => App.Current.Resources["LightDisableColor"],
- _ => default,
- };
- }
- if (values.Length >= 5)
- {
- if (values[4] is not AutoTuneStatus autoTuneStatus)
- return default;
- switch (autoTuneStatus)
- {
- case AutoTuneStatus.Ready:
- case AutoTuneStatus.Triggered:
- case AutoTuneStatus.Tuning:
- case AutoTuneStatus.Complete:
- case AutoTuneStatus.Aborted:
- default:
- break;
- case AutoTuneStatus.Unavailable:
- case AutoTuneStatus.Timeout:
- case AutoTuneStatus.Overflow:
- return App.Current.Resources["EmergencyColor"];
- }
- }
- switch (mini8Status)
- {
- case Mini8Status.Normal:
- case Mini8Status.Error:
- case Mini8Status.Warning:
- break;
- case Mini8Status.LostConnection:
- case Mini8Status.Unknow:
- case Mini8Status.Disabled:
- default:
- return light switch
- {
- "Bright" => App.Current.Resources["DisableColor"],
- "Light" => App.Current.Resources["LightDisableColor"],
- _ => default,
- };
- }
- switch (mode)
- {
- case Inhibit.Enable:
- if (status == ChannelSuatus.Error)
- {
- return light switch
- {
- "Bright" => App.Current.Resources["EmergencyColor"],
- "Light" => App.Current.Resources["LightEmergencyColor"],
- _ => default,
- };
- }
- if (status == ChannelSuatus.Warning)
- {
- return light switch
- {
- "Bright" => App.Current.Resources["WarningColor"],
- "Light" => App.Current.Resources["LightWarningColor"],
- _ => default,
- };
- }
- return light switch
- {
- "Bright" => App.Current.Resources["NormalColor"],
- "Light" => App.Current.Resources["LightNormalColor"],
- _ => default,
- };
- case Inhibit.Disable:
- return light switch
- {
- "Bright" => App.Current.Resources["DisableColor"],
- "Light" => App.Current.Resources["LightDisableColor"],
- _ => default,
- };
- default:
- return default;
- }
- }
- public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
|