Jelajahi Sumber

UI: In-app Configuration resetting

Evan Husted 1 tahun lalu
induk
melakukan
45cec4e7cf

+ 20 - 3
src/Ryujinx/UI/ViewModels/SettingsViewModel.cs

@@ -2,7 +2,7 @@ using Avalonia.Collections;
 using Avalonia.Controls;
 using Avalonia.Threading;
 using CommunityToolkit.Mvvm.ComponentModel;
-using Gommon;
+using CommunityToolkit.Mvvm.Input;
 using LibHac.Tools.FsSystem;
 using Ryujinx.Audio.Backends.OpenAL;
 using Ryujinx.Audio.Backends.SDL2;
@@ -28,8 +28,6 @@ using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Linq;
 using System.Net.NetworkInformation;
-using System.Runtime.InteropServices;
-using System.Text.RegularExpressions;
 using System.Threading.Tasks;
 using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
 
@@ -722,6 +720,25 @@ namespace Ryujinx.Ava.UI.ViewModels
             CloseWindow?.Invoke();
         }
 
+        [ObservableProperty] private bool _wantsToReset;
+
+        public AsyncRelayCommand ResetButton => Commands.Create(async () =>
+        {
+            if (!WantsToReset) return;
+            
+            CloseWindow?.Invoke();
+            ConfigurationState.Instance.LoadDefault();
+            ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
+            RyujinxApp.MainWindow.LoadApplications();
+
+            await ContentDialogHelper.CreateInfoDialog(
+                $"Your {RyujinxApp.FullAppName} configuration has been reset.",
+                "",
+                string.Empty,
+                LocaleManager.Instance[LocaleKeys.SettingsButtonClose],
+                "Configuration Reset");
+        });
+
         public void CancelButton()
         {
             RevertIfNotSaved();

+ 31 - 19
src/Ryujinx/UI/Windows/SettingsWindow.axaml

@@ -108,24 +108,36 @@
                 </Style>
             </ui:NavigationView.Styles>
         </ui:NavigationView>
-        <ReversibleStackPanel
-            Grid.Row="2"
-            Margin="10"
-            Spacing="10"
-            Orientation="Horizontal"
-            HorizontalAlignment="Right"
-            ReverseOrder="{x:Static helper:RunningPlatform.IsMacOS}">
-            <Button
-                Classes="accent"
-                Content="{ext:Locale SettingsButtonOk}"
-                Command="{Binding OkButton}" />
-            <Button
-                HotKey="Escape"
-                Content="{ext:Locale SettingsButtonCancel}"
-                Command="{Binding CancelButton}" />
-            <Button
-                Content="{ext:Locale SettingsButtonApply}"
-                Command="{Binding ApplyButton}" />
-        </ReversibleStackPanel>
+        <Grid Grid.Row="2"
+              ColumnDefinitions="Auto,*,Auto">
+            <StackPanel Grid.Column="0" Orientation="Horizontal">
+                <Button
+                    IsEnabled="{Binding WantsToReset}"
+                    Margin="10"
+                    Content="Reset Settings"
+                    Command="{Binding ResetButton}" />
+                <CheckBox IsChecked="{Binding WantsToReset}"/>
+                <TextBlock Text="I want to reset my settings."/>
+            </StackPanel>
+            <ReversibleStackPanel
+                Grid.Column="2"
+                Margin="10"
+                Spacing="10"
+                Orientation="Horizontal"
+                HorizontalAlignment="Right"
+                ReverseOrder="{x:Static helper:RunningPlatform.IsMacOS}">
+                <Button
+                    Classes="accent"
+                    Content="{ext:Locale SettingsButtonOk}"
+                    Command="{Binding OkButton}" />
+                <Button
+                    HotKey="Escape"
+                    Content="{ext:Locale SettingsButtonCancel}"
+                    Command="{Binding CancelButton}" />
+                <Button
+                    Content="{ext:Locale SettingsButtonApply}"
+                    Command="{Binding ApplyButton}" />
+            </ReversibleStackPanel>
+        </Grid>
     </Grid>
 </window:StyleableAppWindow>