From f33fea32877a9069bfa23bba12ee8b6ea3f6a631 Mon Sep 17 00:00:00 2001
From: Isaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com>
Date: Thu, 25 Jan 2024 23:20:50 +0000
Subject: [PATCH] Remove Custom Theming (#6175)

---
 src/Ryujinx.Ava/App.axaml.cs                  | 21 -----
 src/Ryujinx.Ava/Assets/Locales/en_US.json     | 10 +--
 .../UI/ViewModels/SettingsViewModel.cs        | 20 -----
 .../UI/Views/Settings/SettingsUIView.axaml    | 76 +++++--------------
 .../UI/Views/Settings/SettingsUIView.axaml.cs | 24 ------
 5 files changed, 20 insertions(+), 131 deletions(-)

diff --git a/src/Ryujinx.Ava/App.axaml.cs b/src/Ryujinx.Ava/App.axaml.cs
index c1a3ab3e2..54e61c67c 100644
--- a/src/Ryujinx.Ava/App.axaml.cs
+++ b/src/Ryujinx.Ava/App.axaml.cs
@@ -12,7 +12,6 @@ using Ryujinx.Ui.Common.Configuration;
 using Ryujinx.Ui.Common.Helper;
 using System;
 using System.Diagnostics;
-using System.IO;
 
 namespace Ryujinx.Ava
 {
@@ -90,8 +89,6 @@ namespace Ryujinx.Ava
             try
             {
                 string baseStyle = ConfigurationState.Instance.Ui.BaseStyle;
-                string themePath = ConfigurationState.Instance.Ui.CustomThemePath;
-                bool enableCustomTheme = ConfigurationState.Instance.Ui.EnableCustomTheme;
 
                 if (string.IsNullOrWhiteSpace(baseStyle))
                 {
@@ -106,24 +103,6 @@ namespace Ryujinx.Ava
                     "Dark" => ThemeVariant.Dark,
                     _ => ThemeVariant.Default,
                 };
-
-                if (enableCustomTheme)
-                {
-                    if (!string.IsNullOrWhiteSpace(themePath))
-                    {
-                        try
-                        {
-                            var themeContent = File.ReadAllText(themePath);
-                            var customStyle = AvaloniaRuntimeXamlLoader.Parse<IStyle>(themeContent);
-
-                            Styles.Add(customStyle);
-                        }
-                        catch (Exception ex)
-                        {
-                            Logger.Error?.Print(LogClass.Application, $"Failed to Apply Custom Theme. Error: {ex.Message}");
-                        }
-                    }
-                }
             }
             catch (Exception)
             {
diff --git a/src/Ryujinx.Ava/Assets/Locales/en_US.json b/src/Ryujinx.Ava/Assets/Locales/en_US.json
index 72b5e8e3c..dcb7421fc 100644
--- a/src/Ryujinx.Ava/Assets/Locales/en_US.json
+++ b/src/Ryujinx.Ava/Assets/Locales/en_US.json
@@ -294,13 +294,9 @@
   "GameListContextMenuRunApplication": "Run Application",
   "GameListContextMenuToggleFavorite": "Toggle Favorite",
   "GameListContextMenuToggleFavoriteToolTip": "Toggle Favorite status of Game",
-  "SettingsTabGeneralTheme": "Theme",
-  "SettingsTabGeneralThemeCustomTheme": "Custom Theme Path",
-  "SettingsTabGeneralThemeBaseStyle": "Base Style",
-  "SettingsTabGeneralThemeBaseStyleDark": "Dark",
-  "SettingsTabGeneralThemeBaseStyleLight": "Light",
-  "SettingsTabGeneralThemeEnableCustomTheme": "Enable Custom Theme",
-  "ButtonBrowse": "Browse",
+  "SettingsTabGeneralTheme": "Theme:",
+  "SettingsTabGeneralThemeDark": "Dark",
+  "SettingsTabGeneralThemeLight": "Light",
   "ControllerSettingsConfigureGeneral": "Configure",
   "ControllerSettingsRumble": "Rumble",
   "ControllerSettingsRumbleStrongMultiplier": "Strong Rumble Multiplier",
diff --git a/src/Ryujinx.Ava/UI/ViewModels/SettingsViewModel.cs b/src/Ryujinx.Ava/UI/ViewModels/SettingsViewModel.cs
index 604e34067..9e462a900 100644
--- a/src/Ryujinx.Ava/UI/ViewModels/SettingsViewModel.cs
+++ b/src/Ryujinx.Ava/UI/ViewModels/SettingsViewModel.cs
@@ -48,7 +48,6 @@ namespace Ryujinx.Ava.UI.ViewModels
         private readonly List<string> _gpuIds = new();
         private KeyboardHotkeys _keyboardHotkeys;
         private int _graphicsBackendIndex;
-        private string _customThemePath;
         private int _scalingFilter;
         private int _scalingFilterLevel;
 
@@ -160,7 +159,6 @@ namespace Ryujinx.Ava.UI.ViewModels
         public bool IsOpenAlEnabled { get; set; }
         public bool IsSoundIoEnabled { get; set; }
         public bool IsSDL2Enabled { get; set; }
-        public bool EnableCustomTheme { get; set; }
         public bool IsCustomResolutionScaleActive => _resolutionScale == 4;
         public bool IsScalingFilterActive => _scalingFilter == (int)Ryujinx.Common.Configuration.ScalingFilter.Fsr;
 
@@ -170,20 +168,6 @@ namespace Ryujinx.Ava.UI.ViewModels
         public string TimeZone { get; set; }
         public string ShaderDumpPath { get; set; }
 
-        public string CustomThemePath
-        {
-            get
-            {
-                return _customThemePath;
-            }
-            set
-            {
-                _customThemePath = value;
-
-                OnPropertyChanged();
-            }
-        }
-
         public int Language { get; set; }
         public int Region { get; set; }
         public int FsGlobalAccessLogMode { get; set; }
@@ -426,8 +410,6 @@ namespace Ryujinx.Ava.UI.ViewModels
             GameDirectories.Clear();
             GameDirectories.AddRange(config.Ui.GameDirs.Value);
 
-            EnableCustomTheme = config.Ui.EnableCustomTheme;
-            CustomThemePath = config.Ui.CustomThemePath;
             BaseStyleIndex = config.Ui.BaseStyle == "Light" ? 0 : 1;
 
             // Input
@@ -515,8 +497,6 @@ namespace Ryujinx.Ava.UI.ViewModels
                 config.Ui.GameDirs.Value = gameDirs;
             }
 
-            config.Ui.EnableCustomTheme.Value = EnableCustomTheme;
-            config.Ui.CustomThemePath.Value = CustomThemePath;
             config.Ui.BaseStyle.Value = BaseStyleIndex == 0 ? "Light" : "Dark";
 
             // Input
diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml b/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml
index b7471d385..6504637e6 100644
--- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml
+++ b/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml
@@ -36,7 +36,7 @@
                     <CheckBox IsChecked="{Binding ShowConfirmExit}">
                         <TextBlock Text="{locale:Locale SettingsTabGeneralShowConfirmExitDialog}" />
                     </CheckBox>
-                    <StackPanel Margin="0, 15, 0, 10" Orientation="Horizontal">
+                    <StackPanel Margin="0, 15, 0, 0" Orientation="Horizontal">
                         <TextBlock VerticalAlignment="Center"
                                    Text="{locale:Locale SettingsTabGeneralHideCursor}"
                                    Width="150" />
@@ -54,6 +54,22 @@
                             </ComboBoxItem>
                         </ComboBox>
                     </StackPanel>
+                    <StackPanel Margin="0, 15, 0, 10" Orientation="Horizontal">
+                        <TextBlock
+                            VerticalAlignment="Center"
+                            Text="{locale:Locale SettingsTabGeneralTheme}"
+                            Width="150" />
+                        <ComboBox SelectedIndex="{Binding BaseStyleIndex}"
+                                  HorizontalContentAlignment="Left"
+                                  MinWidth="100">
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGeneralThemeLight}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGeneralThemeDark}" />
+                            </ComboBoxItem>
+                        </ComboBox>
+                    </StackPanel>
                 </StackPanel>
                 <Separator Height="1" />
                 <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGeneralGameDirectories}" />
@@ -106,64 +122,6 @@
                         </Button>
                     </Grid>
                 </StackPanel>
-                <Separator Height="1" />
-                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGeneralTheme}" />
-                <Grid Margin="10,0,0,0">
-                    <Grid.ColumnDefinitions>
-                        <ColumnDefinition Width="Auto" />
-                        <ColumnDefinition />
-                        <ColumnDefinition Width="Auto" />
-                    </Grid.ColumnDefinitions>
-                    <Grid.RowDefinitions>
-                        <RowDefinition />
-                        <RowDefinition />
-                        <RowDefinition />
-                    </Grid.RowDefinitions>
-                    <CheckBox
-                        IsChecked="{Binding EnableCustomTheme}"
-                        ToolTip.Tip="{locale:Locale CustomThemeCheckTooltip}">
-                        <TextBlock Text="{locale:Locale SettingsTabGeneralThemeEnableCustomTheme}" />
-                    </CheckBox>
-                    <TextBlock
-                        Grid.Column="0"
-                        Grid.Row="1"
-                        VerticalAlignment="Center"
-                        Margin="0,10,0,0"
-                        Text="{locale:Locale SettingsTabGeneralThemeCustomTheme}"
-                        ToolTip.Tip="{locale:Locale CustomThemePathTooltip}" />
-                    <TextBox
-                        Grid.Row="1"
-                        Grid.Column="1"
-                        Margin="0,10,0,0"
-                        Text="{Binding CustomThemePath}" />
-                    <Button
-                        Grid.Row="1"
-                        Grid.Column="2"
-                        Margin="10,10,0,0"
-                        Click="BrowseTheme"
-                        ToolTip.Tip="{locale:Locale CustomThemeBrowseTooltip}"
-                        Content="{locale:Locale ButtonBrowse}" />
-                    <TextBlock
-                        Grid.Column="0"
-                        Grid.Row="2"
-                        VerticalAlignment="Center"
-                        Margin="0,10,0,0"
-                        Text="{locale:Locale SettingsTabGeneralThemeBaseStyle}" />
-                    <ComboBox
-                        Grid.Column="1"
-                        Grid.Row="2"
-                        VerticalAlignment="Center"
-                        Margin="0,10,0,0"
-                        MinWidth="100"
-                        SelectedIndex="{Binding BaseStyleIndex}">
-                        <ComboBoxItem>
-                            <TextBlock Text="{locale:Locale SettingsTabGeneralThemeBaseStyleLight}" />
-                        </ComboBoxItem>
-                        <ComboBoxItem>
-                            <TextBlock Text="{locale:Locale SettingsTabGeneralThemeBaseStyleDark}" />
-                        </ComboBoxItem>
-                    </ComboBox>
-                </Grid>
             </StackPanel>
         </Border>
     </ScrollViewer>
diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs
index 6d9299dda..996d15cdb 100644
--- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs
+++ b/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs
@@ -61,29 +61,5 @@ namespace Ryujinx.Ava.UI.Views.Settings
                 GameList.SelectedIndex = oldIndex < GameList.ItemCount ? oldIndex : 0;
             }
         }
-
-        public async void BrowseTheme(object sender, RoutedEventArgs e)
-        {
-            var window = this.GetVisualRoot() as Window;
-            var result = await window.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
-            {
-                Title = LocaleManager.Instance[LocaleKeys.SettingsSelectThemeFileDialogTitle],
-                AllowMultiple = false,
-                FileTypeFilter = new List<FilePickerFileType>
-                {
-                    new("xml")
-                    {
-                        Patterns = new[] { "*.xaml" },
-                        AppleUniformTypeIdentifiers = new[] { "com.ryujinx.xaml" },
-                        MimeTypes = new[] { "application/xaml+xml" },
-                    },
-                },
-            });
-
-            if (result.Count > 0)
-            {
-                ViewModel.CustomThemePath = result[0].Path.LocalPath;
-            }
-        }
     }
 }