mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-04-21 18:13:14 +02:00
99 lines
3.5 KiB
C#
99 lines
3.5 KiB
C#
using Avalonia.Controls;
|
|
using FluentAvalonia.UI.Controls;
|
|
using Ryujinx.Ava.Common.Locale;
|
|
using Ryujinx.Ava.UI.ViewModels;
|
|
using System;
|
|
using System.Linq;
|
|
|
|
|
|
namespace Ryujinx.Ava.UI.Windows
|
|
{
|
|
public partial class GameSpecificSettingsWindow : StyleableAppWindow
|
|
{
|
|
internal readonly SettingsViewModel ViewModel;
|
|
|
|
public GameSpecificSettingsWindow(MainWindowViewModel viewModel, bool findUserConfigDir = true)
|
|
{
|
|
Title = string.Format(LocaleManager.Instance[LocaleKeys.SettingsWithInfo], viewModel.SelectedApplication.Name, viewModel.SelectedApplication.IdString);
|
|
|
|
DataContext = ViewModel = new SettingsViewModel(
|
|
viewModel.VirtualFileSystem,
|
|
viewModel.ContentManager,
|
|
viewModel.IsGameRunning,
|
|
viewModel.SelectedApplication.Path,
|
|
viewModel.SelectedApplication.Name,
|
|
viewModel.SelectedApplication.IdString,
|
|
viewModel.SelectedApplication.Icon,
|
|
findUserConfigDir);
|
|
|
|
ViewModel.CloseWindow += Close;
|
|
ViewModel.SaveSettingsEvent += SaveSettings;
|
|
|
|
InitializeComponent();
|
|
Load();
|
|
}
|
|
|
|
public void SaveSettings()
|
|
{
|
|
InputPage.InputView?.SaveCurrentProfile();
|
|
}
|
|
|
|
|
|
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 nameof(UiPage):
|
|
UiPage.ViewModel = ViewModel;
|
|
NavPanel.Content = UiPage;
|
|
break;
|
|
case nameof(InputPage):
|
|
NavPanel.Content = InputPage;
|
|
break;
|
|
case nameof(SystemPage):
|
|
SystemPage.ViewModel = ViewModel;
|
|
NavPanel.Content = SystemPage;
|
|
break;
|
|
case nameof(CpuPage):
|
|
NavPanel.Content = CpuPage;
|
|
break;
|
|
case nameof(GraphicsPage):
|
|
NavPanel.Content = GraphicsPage;
|
|
break;
|
|
case nameof(AudioPage):
|
|
NavPanel.Content = AudioPage;
|
|
break;
|
|
case nameof(NetworkPage):
|
|
NetworkPage.ViewModel = ViewModel;
|
|
NavPanel.Content = NetworkPage;
|
|
break;
|
|
case nameof(LoggingPage):
|
|
NavPanel.Content = LoggingPage;
|
|
break;
|
|
case nameof(HacksPage):
|
|
HacksPage.DataContext = ViewModel;
|
|
NavPanel.Content = HacksPage;
|
|
break;
|
|
default:
|
|
throw new NotImplementedException();
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override void OnClosing(WindowClosingEventArgs e)
|
|
{
|
|
InputPage.Dispose(); // You need to unload the gamepad settings, otherwise the controls will be blocked
|
|
base.OnClosing(e);
|
|
}
|
|
}
|
|
}
|