| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- using FluentAvalonia.Core;
- using FluentAvalonia.UI.Controls;
- using Ryujinx.Ava.Common.Locale;
- using Ryujinx.Ava.UI.ViewModels;
- using Ryujinx.HLE.FileSystem;
- using System;
- using System.ComponentModel;
- namespace Ryujinx.Ava.UI.Windows
- {
- public partial class SettingsWindow : StyleableWindow
- {
- internal SettingsViewModel ViewModel { get; set; }
- public SettingsWindow(VirtualFileSystem virtualFileSystem, ContentManager contentManager)
- {
- Title = $"Ryujinx {Program.Version} - {LocaleManager.Instance[LocaleKeys.Settings]}";
- ViewModel = new SettingsViewModel(virtualFileSystem, contentManager);
- DataContext = ViewModel;
- ViewModel.CloseWindow += Close;
- ViewModel.SaveSettingsEvent += SaveSettings;
- InitializeComponent();
- Load();
- }
- public SettingsWindow()
- {
- ViewModel = new SettingsViewModel();
- DataContext = ViewModel;
- InitializeComponent();
- Load();
- }
- public void SaveSettings()
- {
- InputPage.ControllerSettings?.SaveCurrentProfile();
- if (Owner is MainWindow window && ViewModel.DirectoryChanged)
- {
- window.ViewModel.LoadApplications();
- }
- }
- private void Load()
- {
- Pages.Children.Clear();
- NavPanel.SelectionChanged += NavPanelOnSelectionChanged;
- NavPanel.SelectedItem = NavPanel.MenuItems.ElementAt(0);
- }
- private void NavPanelOnSelectionChanged(object sender, NavigationViewSelectionChangedEventArgs e)
- {
- if (e.SelectedItem is NavigationViewItem navItem && navItem.Tag is not null)
- {
- switch (navItem.Tag.ToString())
- {
- case "UiPage":
- UiPage.ViewModel = ViewModel;
- NavPanel.Content = UiPage;
- break;
- case "InputPage":
- NavPanel.Content = InputPage;
- break;
- case "HotkeysPage":
- NavPanel.Content = HotkeysPage;
- break;
- case "SystemPage":
- SystemPage.ViewModel = ViewModel;
- NavPanel.Content = SystemPage;
- break;
- case "CpuPage":
- NavPanel.Content = CpuPage;
- break;
- case "GraphicsPage":
- NavPanel.Content = GraphicsPage;
- break;
- case "AudioPage":
- NavPanel.Content = AudioPage;
- break;
- case "NetworkPage":
- NavPanel.Content = NetworkPage;
- break;
- case "LoggingPage":
- NavPanel.Content = LoggingPage;
- break;
- default:
- throw new NotImplementedException();
- }
- }
- }
- protected override void OnClosing(CancelEventArgs e)
- {
- HotkeysPage.Dispose();
- InputPage.Dispose();
- base.OnClosing(e);
- }
- }
- }
|