From 07834ad4a291952093e92ee0c907b170b6f1f56b Mon Sep 17 00:00:00 2001 From: GreemDev Date: Mon, 24 Nov 2025 20:25:59 -0600 Subject: [PATCH] add "overwrite mode" for the setup wizard, basically this just ignores the precondition of having whatever the page configures before showing it. i.e. if you had keys installed, previously it'd skip right to firmware. additionally added more customization to the now instance-based NotificationHelper --- src/Ryujinx/UI/Helpers/NotificationHelper.cs | 8 +++++--- src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs | 10 ++++------ .../UI/SetupWizard/RyujinxSetupWizardWindow.axaml.cs | 8 ++++---- src/Ryujinx/UI/SetupWizard/SetupWizardPage.Builder.cs | 2 +- src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs | 2 +- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/Ryujinx/UI/Helpers/NotificationHelper.cs b/src/Ryujinx/UI/Helpers/NotificationHelper.cs index db9a1c71e..57737305c 100644 --- a/src/Ryujinx/UI/Helpers/NotificationHelper.cs +++ b/src/Ryujinx/UI/Helpers/NotificationHelper.cs @@ -22,12 +22,14 @@ namespace Ryujinx.Ava.UI.Helpers private readonly BlockingCollection _notifications = new(); - public NotificationHelper(Window host) + public NotificationHelper(Window host, + NotificationPosition visiblePosition = NotificationPosition.BottomRight, + int maxItems = MaxNotifications) { _notificationManager = new WindowNotificationManager(host) { - Position = NotificationPosition.BottomRight, - MaxItems = MaxNotifications, + Position = visiblePosition, + MaxItems = maxItems, Margin = new Thickness(0, 0, 15, 40) }; diff --git a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs index 2651140c7..a7d74b3ee 100644 --- a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs +++ b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs @@ -7,15 +7,13 @@ using System.Threading.Tasks; namespace Ryujinx.Ava.UI.SetupWizard { - public class RyujinxSetupWizard(RyujinxSetupWizardWindow wizardWindow) + public class RyujinxSetupWizard(RyujinxSetupWizardWindow wizardWindow, bool overwriteMode) { - private readonly MainWindow _mainWindow = RyujinxApp.MainWindow; - private bool _configWasModified; - public bool HasFirmware => _mainWindow.ContentManager.GetCurrentFirmwareVersion() != null; - - public NotificationHelper NotificationHelper { get; private set; } + public bool HasFirmware => RyujinxApp.MainWindow.ContentManager.GetCurrentFirmwareVersion() != null; + + public NotificationHelper Notification { get; private set; } public async Task Start() { diff --git a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizardWindow.axaml.cs b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizardWindow.axaml.cs index 938dbe7eb..90fc37fed 100644 --- a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizardWindow.axaml.cs +++ b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizardWindow.axaml.cs @@ -23,23 +23,23 @@ namespace Ryujinx.Ava.UI.SetupWizard } } - public static Task ShowAsync(Window owner = null) + public static Task ShowAsync(bool overwriteMode, Window owner = null) { if (!CanShowSetupWizard) return Task.CompletedTask; Task windowTask = ShowAsync( - CreateWindow(out RyujinxSetupWizard wiz), + CreateWindow(out RyujinxSetupWizard wiz, overwriteMode), owner ); _ = wiz.Start(); return windowTask; } - public static RyujinxSetupWizardWindow CreateWindow(out RyujinxSetupWizard setupWizard) + public static RyujinxSetupWizardWindow CreateWindow(out RyujinxSetupWizard setupWizard, bool overwriteMode = false) { RyujinxSetupWizardWindow window = new(); - window.DataContext = setupWizard = new RyujinxSetupWizard(window); + window.DataContext = setupWizard = new RyujinxSetupWizard(window, overwriteMode); window.Height = 600; window.Width = 750; return window; diff --git a/src/Ryujinx/UI/SetupWizard/SetupWizardPage.Builder.cs b/src/Ryujinx/UI/SetupWizard/SetupWizardPage.Builder.cs index cad62f7c1..a4ef66321 100644 --- a/src/Ryujinx/UI/SetupWizard/SetupWizardPage.Builder.cs +++ b/src/Ryujinx/UI/SetupWizard/SetupWizardPage.Builder.cs @@ -48,7 +48,7 @@ namespace Ryujinx.Ava.UI.SetupWizard where TControl : RyujinxControl, new() where TViewModel : SetupWizardPageContext, new() { - boundViewModel = new() { Notifications = ownerWizard.NotificationHelper }; + boundViewModel = new() { Notifications = ownerWizard.Notification }; return WithContent(boundViewModel); } diff --git a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs index b7f0d1cf2..863d3e4eb 100644 --- a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs +++ b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs @@ -51,7 +51,7 @@ namespace Ryujinx.Ava.UI.Views.Main AboutWindowMenuItem.Command = Commands.Create(AboutView.Show); CompatibilityListMenuItem.Command = Commands.Create(() => CompatibilityListWindow.Show()); LdnGameListMenuItem.Command = Commands.Create(() => LdnGamesListWindow.Show()); - SetupWizardMenuItem.Command = Commands.Create(() => RyujinxSetupWizardWindow.ShowAsync()); + SetupWizardMenuItem.Command = Commands.Create(() => RyujinxSetupWizardWindow.ShowAsync(overwriteMode: true)); UpdateMenuItem.Command = MainWindowViewModel.UpdateCommand;