diff options
Diffstat (limited to 'Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs')
-rw-r--r-- | Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs b/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs new file mode 100644 index 00000000..8e6da7c5 --- /dev/null +++ b/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs @@ -0,0 +1,82 @@ +using Avalonia.Controls; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Interactivity; +using Ryujinx.Ava.Common.Locale; +using Ryujinx.Ava.UI.ViewModels; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace Ryujinx.Ava.UI.Views.Settings +{ + public partial class SettingsUIView : UserControl + { + public SettingsViewModel ViewModel; + + public SettingsUIView() + { + InitializeComponent(); + } + + private async void AddButton_OnClick(object sender, RoutedEventArgs e) + { + string path = PathBox.Text; + + if (!string.IsNullOrWhiteSpace(path) && Directory.Exists(path) && !ViewModel.GameDirectories.Contains(path)) + { + ViewModel.GameDirectories.Add(path); + ViewModel.DirectoryChanged = true; + } + else + { + if (Avalonia.Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + path = await new OpenFolderDialog().ShowAsync(desktop.MainWindow); + + if (!string.IsNullOrWhiteSpace(path)) + { + ViewModel.GameDirectories.Add(path); + ViewModel.DirectoryChanged = true; + } + } + } + } + + private void RemoveButton_OnClick(object sender, RoutedEventArgs e) + { + int oldIndex = GameList.SelectedIndex; + + foreach (string path in new List<string>(GameList.SelectedItems.Cast<string>())) + { + ViewModel.GameDirectories.Remove(path); + ViewModel.DirectoryChanged = true; + } + + if (GameList.ItemCount > 0) + { + GameList.SelectedIndex = oldIndex < GameList.ItemCount ? oldIndex : 0; + } + } + + public async void BrowseTheme(object sender, RoutedEventArgs e) + { + var dialog = new OpenFileDialog() + { + Title = LocaleManager.Instance[LocaleKeys.SettingsSelectThemeFileDialogTitle], + AllowMultiple = false + }; + + dialog.Filters.Add(new FileDialogFilter() { Extensions = { "xaml" }, Name = LocaleManager.Instance[LocaleKeys.SettingsXamlThemeFile] }); + + if (Avalonia.Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + var file = await dialog.ShowAsync(desktop.MainWindow); + + if (file != null && file.Length > 0) + { + ViewModel.CustomThemePath = file[0]; + } + } + } + } +}
\ No newline at end of file |