From 09077b26f98b5a96581b2fb37fa2b3efa46530a9 Mon Sep 17 00:00:00 2001 From: Yoshi Askharoun Date: Wed, 15 May 2024 02:45:02 -0500 Subject: [PATCH] [WIP] Dialog --- ZuneModdingHelper/AppWindow.xaml | 2 + ZuneModdingHelper/AppWindow.xaml.cs | 25 +++++++- .../Controls/ZuneLightDialog.xaml | 57 +++++++++++++++++++ .../Controls/ZuneLightDialog.xaml.cs | 21 +++++++ ZuneModdingHelper/Messages/DialogMessages.cs | 22 +++++++ ZuneModdingHelper/Pages/ModsPage.xaml | 4 +- ZuneModdingHelper/Pages/ModsPage.xaml.cs | 20 ++++++- ZuneModdingHelper/Themes/Generic.xaml | 1 + ZuneModdingHelper/Themes/Zune.xaml | 11 ++++ 9 files changed, 158 insertions(+), 5 deletions(-) create mode 100644 ZuneModdingHelper/Controls/ZuneLightDialog.xaml create mode 100644 ZuneModdingHelper/Controls/ZuneLightDialog.xaml.cs create mode 100644 ZuneModdingHelper/Messages/DialogMessages.cs diff --git a/ZuneModdingHelper/AppWindow.xaml b/ZuneModdingHelper/AppWindow.xaml index 8f3b4d4..32eae82 100644 --- a/ZuneModdingHelper/AppWindow.xaml +++ b/ZuneModdingHelper/AppWindow.xaml @@ -119,6 +119,8 @@ + + diff --git a/ZuneModdingHelper/AppWindow.xaml.cs b/ZuneModdingHelper/AppWindow.xaml.cs index 3fec093..7d7b877 100644 --- a/ZuneModdingHelper/AppWindow.xaml.cs +++ b/ZuneModdingHelper/AppWindow.xaml.cs @@ -1,9 +1,12 @@ -using System; +using CommunityToolkit.Mvvm.Messaging; +using System; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Interop; +using ZuneModdingHelper.Controls; +using ZuneModdingHelper.Messages; using ZuneModdingHelper.Pages; namespace ZuneModdingHelper @@ -11,7 +14,7 @@ namespace ZuneModdingHelper /// /// Interaction logic for AppWindow.xaml /// - public partial class AppWindow + public partial class AppWindow : IRecipient, IRecipient { private IntPtr _windowHandle; private int _selectedPivotIdx = -1; @@ -22,6 +25,9 @@ namespace ZuneModdingHelper { InitializeComponent(); Pivot.Loaded += Pivot_Loaded; + + WeakReferenceMessenger.Default.Register(this); + WeakReferenceMessenger.Default.Register(this); } private void Pivot_Loaded(object sender, RoutedEventArgs e) @@ -79,5 +85,20 @@ namespace ZuneModdingHelper ContentFrame.Content = Activator.CreateInstance(_pages[_selectedPivotIdx]); } + + void IRecipient.Receive(ShowDialogMessage message) + { + DialogPresenter.Content = new ZuneLightDialog + { + ViewModel = message.ViewModel + }; + DialogPresenter.Visibility = Visibility.Visible; + } + + void IRecipient.Receive(CloseDialogMessage message) + { + DialogPresenter.Visibility = Visibility.Collapsed; + DialogPresenter.Content = null; + } } } diff --git a/ZuneModdingHelper/Controls/ZuneLightDialog.xaml b/ZuneModdingHelper/Controls/ZuneLightDialog.xaml new file mode 100644 index 0000000..6959f4b --- /dev/null +++ b/ZuneModdingHelper/Controls/ZuneLightDialog.xaml @@ -0,0 +1,57 @@ + + + + + + + + + diff --git a/ZuneModdingHelper/Controls/ZuneLightDialog.xaml.cs b/ZuneModdingHelper/Controls/ZuneLightDialog.xaml.cs new file mode 100644 index 0000000..81a5369 --- /dev/null +++ b/ZuneModdingHelper/Controls/ZuneLightDialog.xaml.cs @@ -0,0 +1,21 @@ +using System.Windows; +using System.Windows.Controls; +using ZuneModdingHelper.Messages; + +namespace ZuneModdingHelper.Controls; + +public class ZuneLightDialog : ContentControl +{ + static ZuneLightDialog() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(ZuneLightDialog), new FrameworkPropertyMetadata(typeof(ZuneLightDialog))); + } + + public DialogViewModel ViewModel + { + get => (DialogViewModel)GetValue(DialogViewModelProperty); + set => SetValue(DialogViewModelProperty, value); + } + public static readonly DependencyProperty DialogViewModelProperty = DependencyProperty.Register( + nameof(ViewModel), typeof(DialogViewModel), typeof(ZuneLightDialog), new PropertyMetadata(null)); +} diff --git a/ZuneModdingHelper/Messages/DialogMessages.cs b/ZuneModdingHelper/Messages/DialogMessages.cs new file mode 100644 index 0000000..90ab5ac --- /dev/null +++ b/ZuneModdingHelper/Messages/DialogMessages.cs @@ -0,0 +1,22 @@ +using CommunityToolkit.Mvvm.ComponentModel; + +namespace ZuneModdingHelper.Messages; + +public record ShowDialogMessage(DialogViewModel ViewModel); +public record CloseDialogMessage(); + +public partial class DialogViewModel : ObservableObject +{ + [ObservableProperty] + private string _title; + + + [ObservableProperty] + private string _description; +} + +public partial class ProgressDialogViewModel : DialogViewModel +{ + [ObservableProperty] + private double _progress; +} diff --git a/ZuneModdingHelper/Pages/ModsPage.xaml b/ZuneModdingHelper/Pages/ModsPage.xaml index 344ebf8..afdec65 100644 --- a/ZuneModdingHelper/Pages/ModsPage.xaml +++ b/ZuneModdingHelper/Pages/ModsPage.xaml @@ -35,9 +35,9 @@ -