diff --git a/ZuneModCore/ModDependency.cs b/ZuneModCore/ModDependency.cs index a87ffaa..412923f 100644 --- a/ZuneModCore/ModDependency.cs +++ b/ZuneModCore/ModDependency.cs @@ -7,16 +7,18 @@ namespace ZuneModCore { public class ModDependency { - public string Id { get; set; } - - public ReleaseVersion Version { get; set; } - public ModDependency(string id, ReleaseVersion? version = null) { Id = id; Version = version ?? ModManager.CurrentVersion; } + public string Id { get; set; } + + public ReleaseVersion Version { get; set; } + + public bool Status => CheckStatus(); + /// /// DO NOT USE DIRECTLY. This constructor is only for /// JSON de/serialization. @@ -24,7 +26,9 @@ namespace ZuneModCore [Obsolete] internal ModDependency() { } - public Task CheckStatus() => ModManager.CheckStatus(Id); + public Task CheckStatusAsync() => ModManager.CheckStatus(Id); + + private bool CheckStatus() => CheckStatusAsync().Result; public override string ToString() => $"{Id} / {Version}"; } diff --git a/ZuneModdingHelper/Converters/BoolToSymbolConverter.cs b/ZuneModdingHelper/Converters/BoolToSymbolConverter.cs new file mode 100644 index 0000000..528a0e0 --- /dev/null +++ b/ZuneModdingHelper/Converters/BoolToSymbolConverter.cs @@ -0,0 +1,40 @@ +using System; +using System.Globalization; +using System.Windows.Data; +using System.Windows.Media; + +namespace ZuneModdingHelper.Converters +{ + internal class BoolToSymbolConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is not bool val) + return null; + + var resultsStr = parameter.ToString().Split(','); + object trueReturnVal = null; + object falseReturnVal = null; + + if (targetType == typeof(string)) + { + trueReturnVal = resultsStr[0]; + falseReturnVal = resultsStr[1]; + } + else if (targetType == typeof(Brush)) + { + var brushConverter = new BrushConverter(); + trueReturnVal = brushConverter.ConvertFrom(resultsStr[0]); + falseReturnVal = brushConverter.ConvertFrom(resultsStr[1]); + } + + return val ? trueReturnVal : falseReturnVal; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + var results = parameter.ToString().Split(','); + return value.ToString() == results[0]; + } + } +} diff --git a/ZuneModdingHelper/Converters/NullToVisibilityConverter.cs b/ZuneModdingHelper/Converters/NullToVisibilityConverter.cs new file mode 100644 index 0000000..ff21ef5 --- /dev/null +++ b/ZuneModdingHelper/Converters/NullToVisibilityConverter.cs @@ -0,0 +1,20 @@ +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace ZuneModdingHelper.Converters +{ + internal class NullToVisibilityConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + return value != null ? Visibility.Visible : Visibility.Collapsed; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/ZuneModdingHelper/OptionsUIDialog.xaml b/ZuneModdingHelper/OptionsUIDialog.xaml index f88138f..329951a 100644 --- a/ZuneModdingHelper/OptionsUIDialog.xaml +++ b/ZuneModdingHelper/OptionsUIDialog.xaml @@ -4,6 +4,8 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:ZuneModdingHelper" + xmlns:convert="clr-namespace:ZuneModdingHelper.Converters" + xmlns:mod="clr-namespace:ZuneModCore;assembly=ZuneModCore" xmlns:absui="clr-namespace:OwlCore.Wpf.AbstractUI.Controls;assembly=OwlCore.Wpf" xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" mc:Ignorable="d" @@ -14,6 +16,9 @@ + + + @@ -25,11 +30,27 @@ + + + + + + + + + + + + + + + + - -