diff --git a/ZuneModdingHelper/App.xaml b/ZuneModdingHelper/App.xaml
index bd9f52b..533123d 100644
--- a/ZuneModdingHelper/App.xaml
+++ b/ZuneModdingHelper/App.xaml
@@ -16,6 +16,8 @@
Assets/ZMH_Icons.ttf#ZMHIcons
Segoe MDL2 Assets
+
+
diff --git a/ZuneModdingHelper/Controls/ZuneLightDialog.xaml b/ZuneModdingHelper/Controls/ZuneLightDialog.xaml
index da8ebe4..996debb 100644
--- a/ZuneModdingHelper/Controls/ZuneLightDialog.xaml
+++ b/ZuneModdingHelper/Controls/ZuneLightDialog.xaml
@@ -4,19 +4,17 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:ZuneModdingHelper.Controls"
+ xmlns:zmhm="clr-namespace:ZuneModdingHelper.Messages"
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
-
-
-
-
-
-
-
+
+
+
-
+
@@ -34,15 +32,17 @@
-
-
+
+
+
+
-
diff --git a/ZuneModdingHelper/Controls/ZuneLightDialog.xaml.cs b/ZuneModdingHelper/Controls/ZuneLightDialog.xaml.cs
index 5aa9cdf..8c731c9 100644
--- a/ZuneModdingHelper/Controls/ZuneLightDialog.xaml.cs
+++ b/ZuneModdingHelper/Controls/ZuneLightDialog.xaml.cs
@@ -1,5 +1,7 @@
using System.Windows;
using System.Windows.Controls;
+using System.Windows.Data;
+using System.Xml.Linq;
using ZuneModdingHelper.Messages;
namespace ZuneModdingHelper.Controls
@@ -20,6 +22,42 @@ namespace ZuneModdingHelper.Controls
set => SetValue(DialogViewModelProperty, value);
}
public static readonly DependencyProperty DialogViewModelProperty = DependencyProperty.Register(
- nameof(ViewModel), typeof(DialogViewModel), typeof(ZuneLightDialog), new PropertyMetadata(null));
+ nameof(ViewModel), typeof(DialogViewModel), typeof(ZuneLightDialog), new PropertyMetadata(ViewModelChanged));
+
+ private static void ViewModelChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
+ {
+ if (d is not ZuneLightDialog dialog || e.NewValue is not DialogViewModel vm)
+ return;
+
+ dialog.DataContext = vm;
+
+ if (vm.Height is not null)
+ dialog.Height = vm.Height.Value;
+
+ if (vm is ProgressDialogViewModel)
+ {
+ var progressBar = new ProgressBar();
+
+ Binding progValueBinding = new()
+ {
+ Source = vm,
+ Path = new PropertyPath(nameof(ProgressDialogViewModel.Progress)),
+ Mode = BindingMode.OneWay,
+ UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
+ };
+ progressBar.SetBinding(ProgressBar.ValueProperty, progValueBinding);
+
+ Binding progIndetBinding = new()
+ {
+ Source = vm,
+ Path = new PropertyPath(nameof(ProgressDialogViewModel.IsIndeterminate)),
+ Mode = BindingMode.OneWay,
+ UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
+ };
+ progressBar.SetBinding(ProgressBar.IsIndeterminateProperty, progIndetBinding);
+
+ dialog.InnerPresenter.Content = progressBar;
+ }
+ }
}
}
diff --git a/ZuneModdingHelper/Messages/DialogMessages.cs b/ZuneModdingHelper/Messages/DialogMessages.cs
index 90ab5ac..c169ad0 100644
--- a/ZuneModdingHelper/Messages/DialogMessages.cs
+++ b/ZuneModdingHelper/Messages/DialogMessages.cs
@@ -13,10 +13,19 @@ public partial class DialogViewModel : ObservableObject
[ObservableProperty]
private string _description;
+
+ [ObservableProperty]
+ private bool _showPrimaryButton;
+
+ [ObservableProperty]
+ private int? _height;
}
public partial class ProgressDialogViewModel : DialogViewModel
{
[ObservableProperty]
private double _progress;
+
+ [ObservableProperty]
+ private bool _isIndeterminate;
}
diff --git a/ZuneModdingHelper/Pages/ModsPage.xaml.cs b/ZuneModdingHelper/Pages/ModsPage.xaml.cs
index d49d8b5..9727905 100644
--- a/ZuneModdingHelper/Pages/ModsPage.xaml.cs
+++ b/ZuneModdingHelper/Pages/ModsPage.xaml.cs
@@ -18,9 +18,14 @@ namespace ZuneModdingHelper.Pages
private void ResetButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
- WeakReferenceMessenger.Default.Send(new ShowDialogMessage(new DialogViewModel
+ if (!TryGetModFromControl(sender, out var mod))
+ return;
+
+ WeakReferenceMessenger.Default.Send(new ShowDialogMessage(new ProgressDialogViewModel
{
- Title = "RESET"
+ Title = "RESETTING MOD",
+ IsIndeterminate = true,
+ Description = $"Preparing to reset '{mod.Title}'...",
}));
}
@@ -31,5 +36,11 @@ namespace ZuneModdingHelper.Pages
Title = "APPLY"
}));
}
+
+ private static bool TryGetModFromControl(object sender, out Mod mod)
+ {
+ mod = (sender as System.Windows.FrameworkElement)?.DataContext as Mod;
+ return mod is not null;
+ }
}
}
diff --git a/ZuneModdingHelper/Themes/Generic.xaml b/ZuneModdingHelper/Themes/Generic.xaml
index 3f2635d..d4ac893 100644
--- a/ZuneModdingHelper/Themes/Generic.xaml
+++ b/ZuneModdingHelper/Themes/Generic.xaml
@@ -6,6 +6,5 @@
-