diff --git a/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/GenericConverter.cs b/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/GenericConverter.cs deleted file mode 100644 index 43ca0dc..0000000 --- a/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/GenericConverter.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Data; - -namespace BallanceTasEditor.Frontend.Converters { - [ValueConversion(typeof(int), typeof(string))] - public class FpsConverter : IValueConverter { - public static FpsConverter Instance = new FpsConverter(); - - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { - if (value is int tv) { - if (tv <= 0) return DependencyProperty.UnsetValue; - else return Backend.FpsConverter.ToDelta(tv).ToString(); - } else { - return DependencyProperty.UnsetValue; - } - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { - return Binding.DoNothing; - } - } - - /// - /// 将IsEnable转换为Visibility。 - /// - [ValueConversion(typeof(bool), typeof(Visibility))] - public class VisibilityConverter : IValueConverter { - public static VisibilityConverter Instance = new VisibilityConverter(); - - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { - if (value is bool bv) { - if (bv) return Visibility.Visible; - else return Visibility.Collapsed; - } else { - return DependencyProperty.UnsetValue; - } - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { - return Binding.DoNothing; - } - } - -} diff --git a/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/StringifiedDeltaTimeConverter.cs b/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/StringifiedDeltaTimeConverter.cs new file mode 100644 index 0000000..ada93bc --- /dev/null +++ b/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/StringifiedDeltaTimeConverter.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Data; + +namespace BallanceTasEditor.Frontend.Converters { + + [ValueConversion(typeof(string), typeof(string))] + public class StringifiedDeltaTimeConverter : IValueConverter { + public static readonly StringifiedDeltaTimeConverter Instance = new StringifiedDeltaTimeConverter(); + + public StringifiedDeltaTimeConverter() { + m_Validator = new Validator.FpsValidator(); + } + + private Validator.FpsValidator m_Validator; + private static readonly string INVALID_DELTA_TIME = "N/A"; + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { + var stringifiedFps = value as string; + if (stringifiedFps is null) { + return INVALID_DELTA_TIME; + } + + return m_Validator.Validate(stringifiedFps).Match( + v => Backend.FpsConverter.ToDelta(v).ToString(), + _ => INVALID_DELTA_TIME + ); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { + return Binding.DoNothing; + } + } +} diff --git a/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/StringifyConverter.cs b/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/StringifyConverter.cs deleted file mode 100644 index 4dc9bd5..0000000 --- a/BallanceTasEditor/BallanceTasEditor/Frontend/Converters/StringifyConverter.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Data; - -namespace BallanceTasEditor.Frontend.Converters { - - [ValueConversion(typeof(int?), typeof(string))] - public class StringifyIntegerConverter : IValueConverter { - public static StringifyIntegerConverter Instance = new StringifyIntegerConverter(); - - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { - if (value is null) { - return ""; - } else if (value is int iv) { - return iv.ToString(); - } else { - return DependencyProperty.UnsetValue; - } - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { - if (value is string s) { - if (int.TryParse(s, out int iv)) return iv; - else return null; - } else { - return DependencyProperty.UnsetValue; - } - } - } -} diff --git a/BallanceTasEditor/BallanceTasEditor/Frontend/Views/NewFileDialog.xaml b/BallanceTasEditor/BallanceTasEditor/Frontend/Views/NewFileDialog.xaml index a83df46..00acedd 100644 --- a/BallanceTasEditor/BallanceTasEditor/Frontend/Views/NewFileDialog.xaml +++ b/BallanceTasEditor/BallanceTasEditor/Frontend/Views/NewFileDialog.xaml @@ -51,8 +51,8 @@ - + Text="{Binding Fps, Mode=OneWay, Converter={x:Static conveter:StringifiedDeltaTimeConverter.Instance}}" + Validation.ErrorTemplate="{x:Null}"/>