diff --git a/src/Ryujinx/UI/SetupWizard/Pages/Fw/SetupFirmwarePageContext.cs b/src/Ryujinx/UI/SetupWizard/Pages/Fw/SetupFirmwarePageContext.cs index 7c7d93340..1f621c1e4 100644 --- a/src/Ryujinx/UI/SetupWizard/Pages/Fw/SetupFirmwarePageContext.cs +++ b/src/Ryujinx/UI/SetupWizard/Pages/Fw/SetupFirmwarePageContext.cs @@ -17,7 +17,7 @@ using System.Threading.Tasks; namespace Ryujinx.Ava.UI.SetupWizard.Pages { - public partial class SetupFirmwarePageContext : SetupWizardPageContext + public partial class SetupFirmwarePageContext() : SetupWizardPageContext(LocaleKeys.SetupWizardFirmwarePageTitle) { [ObservableProperty] public partial string FirmwareSourcePath { get; set; } diff --git a/src/Ryujinx/UI/SetupWizard/Pages/Keys/SetupKeysPageContext.cs b/src/Ryujinx/UI/SetupWizard/Pages/Keys/SetupKeysPageContext.cs index 35af2efa7..7dd5f1105 100644 --- a/src/Ryujinx/UI/SetupWizard/Pages/Keys/SetupKeysPageContext.cs +++ b/src/Ryujinx/UI/SetupWizard/Pages/Keys/SetupKeysPageContext.cs @@ -19,12 +19,12 @@ using System.Threading.Tasks; namespace Ryujinx.Ava.UI.SetupWizard.Pages { - public partial class SetupKeysPageContext : SetupWizardPageContext + public partial class SetupKeysPageContext() : SetupWizardPageContext(LocaleKeys.SetupWizardKeysPageTitle) { public override Result CompleteStep() => - !Directory.Exists(KeysFolderPath) - ? Result.Fail - : InstallKeys(KeysFolderPath); + Directory.Exists(KeysFolderPath) + ? InstallKeys(KeysFolderPath) + : Result.Fail; public override object CreateHelpContent() { diff --git a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.Steps.cs b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.Steps.cs index 9f5637baa..4d156c6ec 100644 --- a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.Steps.cs +++ b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.Steps.cs @@ -11,9 +11,7 @@ namespace Ryujinx.Ava.UI.SetupWizard if (_overwrite || !RyujinxApp.MainWindow.VirtualFileSystem.HasKeySet) { Retry: - bool result = await NextPage() - .WithTitle(LocaleKeys.SetupWizardKeysPageTitle) - .WithContent(out SetupKeysPageContext keyContext) + bool result = await NextPage(out SetupKeysPageContext keyContext) .Show(); if (!result) @@ -37,9 +35,7 @@ namespace Ryujinx.Ava.UI.SetupWizard } Retry: - bool result = await NextPage() - .WithTitle(LocaleKeys.SetupWizardFirmwarePageTitle) - .WithContent(out SetupFirmwarePageContext fwContext) + bool result = await NextPage(out SetupFirmwarePageContext fwContext) .Show(); if (!result) diff --git a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs index 8843b0f18..8af6391cf 100644 --- a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs +++ b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs @@ -7,6 +7,7 @@ using CommunityToolkit.Mvvm.ComponentModel; using Ryujinx.Ava.Common; using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Systems.Configuration; +using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; using System; @@ -37,6 +38,13 @@ namespace Ryujinx.Ava.UI.SetupWizard private SetupWizardPage NextPage() => new(_window.WizardPresenter, this); + private SetupWizardPage NextPage(out TContext boundContext) + where TControl : RyujinxControl, new() + where TContext : SetupWizardPageContext, new() + => NextPage() + .WithContent(out boundContext) + .WithTitle(boundContext.Title); + public void SignalConfigModified() { _configWasModified = true; diff --git a/src/Ryujinx/UI/SetupWizard/SetupWizardPageContext.cs b/src/Ryujinx/UI/SetupWizard/SetupWizardPageContext.cs index 605270761..d65099bd4 100644 --- a/src/Ryujinx/UI/SetupWizard/SetupWizardPageContext.cs +++ b/src/Ryujinx/UI/SetupWizard/SetupWizardPageContext.cs @@ -1,13 +1,19 @@ using Gommon; +using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; namespace Ryujinx.Ava.UI.SetupWizard { - public abstract class SetupWizardPageContext : BaseModel + public abstract class SetupWizardPageContext(LocaleKeys title) : BaseModel { + public LocaleKeys Title => title; + public RyujinxNotificationManager NotificationManager { get; init; } + // ReSharper disable once UnusedMemberInSuper.Global + // it's used implicitly as we use this type as a where guard for generics for WithContent, + // it also ensures all context types implement completion public abstract Result CompleteStep(); #nullable enable public virtual object? CreateHelpContent()