aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava/UI/Windows
diff options
context:
space:
mode:
authorIsaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com>2023-01-06 18:35:21 -0500
committerGitHub <noreply@github.com>2023-01-07 00:35:21 +0100
commit38519f3b9ade223983f7529f9b4f4b857c60f42b (patch)
treea041ee4171f61417b75dd6a7a204d6d150f60ecb /Ryujinx.Ava/UI/Windows
parent7f27aabbd0501b32e4918384c0a50fd0b7f357fe (diff)
Ava GUI: `SettingsWindow` Refactor (#4177)
* Fix redundancies * Add back elses * Settings Refactor * Fix Disposal functions * Use `ReflectionBinding` instead of redundant funcs * Ac_K suggestions * Update Ryujinx.Ava/UI/ViewModels/SettingsViewModel.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Update locale keys * Update Ryujinx.Ava/UI/Windows/SettingsWindow.axaml.cs Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Update Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml.cs Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Update Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml.cs Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Update Ryujinx.Ava/UI/Windows/SettingsWindow.axaml.cs Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Use block-scoped namespaces * Fix typo * Make `TimeZone` internal again Co-authored-by: Ac_K <Acoustik666@gmail.com> Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com>
Diffstat (limited to 'Ryujinx.Ava/UI/Windows')
-rw-r--r--Ryujinx.Ava/UI/Windows/SettingsWindow.axaml884
-rw-r--r--Ryujinx.Ava/UI/Windows/SettingsWindow.axaml.cs210
2 files changed, 62 insertions, 1032 deletions
diff --git a/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml b/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml
index e2550082..851e9b5b 100644
--- a/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml
+++ b/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml
@@ -6,13 +6,12 @@
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
xmlns:window="clr-namespace:Ryujinx.Ava.UI.Windows"
+ xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
+ xmlns:settings="clr-namespace:Ryujinx.Ava.UI.Views.Settings"
xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
Width="1100"
Height="768"
- d:DesignWidth="800"
- d:DesignHeight="950"
MinWidth="800"
MinHeight="480"
WindowStartupLocation="CenterOwner"
@@ -23,9 +22,6 @@
<Design.DataContext>
<viewModels:SettingsViewModel />
</Design.DataContext>
- <Window.Resources>
- <helpers:KeyValueConverter x:Key="Key" />
- </Window.Resources>
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinWidth="600">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
@@ -38,871 +34,15 @@
IsVisible="False"
KeyboardNavigation.IsTabStop="False"/>
<Grid Name="Pages" IsVisible="False" Grid.Row="2">
- <ScrollViewer Name="UiPage"
- Margin="0,0,2,0"
- HorizontalAlignment="Stretch"
- VerticalAlignment="Stretch"
- HorizontalScrollBarVisibility="Disabled"
- VerticalScrollBarVisibility="Auto">
- <Border Classes="settings">
- <StackPanel
- Margin="10,5"
- HorizontalAlignment="Stretch"
- Orientation="Vertical"
- Spacing="10">
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGeneralGeneral}" />
- <StackPanel Margin="10,0,0,0" Orientation="Vertical">
- <CheckBox IsChecked="{Binding EnableDiscordIntegration}">
- <TextBlock VerticalAlignment="Center"
- ToolTip.Tip="{locale:Locale ToggleDiscordTooltip}"
- Text="{locale:Locale SettingsTabGeneralEnableDiscordRichPresence}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding CheckUpdatesOnStart}">
- <TextBlock Text="{locale:Locale SettingsTabGeneralCheckUpdatesOnLaunch}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding ShowConfirmExit}">
- <TextBlock Text="{locale:Locale SettingsTabGeneralShowConfirmExitDialog}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding HideCursorOnIdle}">
- <TextBlock Text="{locale:Locale SettingsTabGeneralHideCursorOnIdle}" />
- </CheckBox>
- </StackPanel>
- <Separator Height="1" />
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGeneralGameDirectories}" />
- <StackPanel
- Margin="10,0,0,0"
- HorizontalAlignment="Stretch"
- Orientation="Vertical"
- Spacing="10">
- <ListBox
- Name="GameList"
- MinHeight="250"
- Items="{Binding GameDirectories}" />
- <Grid HorizontalAlignment="Stretch">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="*" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- </Grid.ColumnDefinitions>
- <TextBox
- Name="PathBox"
- Margin="0"
- ToolTip.Tip="{locale:Locale AddGameDirBoxTooltip}"
- VerticalAlignment="Stretch" />
- <Button
- Name="AddButton"
- Grid.Column="1"
- MinWidth="90"
- Margin="10,0,0,0"
- ToolTip.Tip="{locale:Locale AddGameDirTooltip}"
- Click="AddButton_OnClick">
- <TextBlock HorizontalAlignment="Center"
- Text="{locale:Locale SettingsTabGeneralAdd}" />
- </Button>
- <Button
- Name="RemoveButton"
- Grid.Column="2"
- MinWidth="90"
- Margin="10,0,0,0"
- ToolTip.Tip="{locale:Locale RemoveGameDirTooltip}"
- Click="RemoveButton_OnClick">
- <TextBlock HorizontalAlignment="Center"
- Text="{locale:Locale SettingsTabGeneralRemove}" />
- </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 VerticalAlignment="Center"
- Margin="0,10,0,0"
- Grid.Row="1"
- Text="{locale:Locale SettingsTabGeneralThemeCustomTheme}"
- ToolTip.Tip="{locale:Locale CustomThemePathTooltip}" />
- <TextBox Margin="0,10,0,0"
- Grid.Row="1"
- Grid.Column="1"
- Text="{Binding CustomThemePath}" />
- <Button Grid.Row="1"
- Grid.Column="2"
- Margin="10,10,0,0"
- Command="{ReflectionBinding BrowseTheme}"
- ToolTip.Tip="{locale:Locale CustomThemeBrowseTooltip}"
- Content="{locale:Locale ButtonBrowse}" />
- <TextBlock VerticalAlignment="Center"
- Margin="0,10,0,0"
- Grid.Row="2"
- Text="{locale:Locale SettingsTabGeneralThemeBaseStyle}" />
- <ComboBox VerticalAlignment="Center"
- Margin="0,10,0,0"
- Grid.Column="1"
- Grid.Row="2"
- MinWidth="100"
- SelectedIndex="{Binding BaseStyleIndex}">
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGeneralThemeBaseStyleLight}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGeneralThemeBaseStyleDark}" />
- </ComboBoxItem>
- </ComboBox>
- </Grid>
- </StackPanel>
- </Border>
- </ScrollViewer>
- <ScrollViewer Name="InputPage"
- HorizontalAlignment="Stretch"
- VerticalAlignment="Stretch"
- Padding="0,0,2,0"
- HorizontalScrollBarVisibility="Disabled"
- VerticalScrollBarVisibility="Auto">
- <Border Classes="settings">
- <StackPanel Margin="4" Orientation="Vertical">
- <StackPanel Orientation="Horizontal">
- <CheckBox Margin="5,0"
- ToolTip.Tip="{locale:Locale DockModeToggleTooltip}"
- IsChecked="{Binding EnableDockedMode}">
- <TextBlock VerticalAlignment="Center"
- Text="{locale:Locale SettingsTabInputEnableDockedMode}" />
- </CheckBox>
- <CheckBox Margin="5,0"
- ToolTip.Tip="{locale:Locale DirectKeyboardTooltip}"
- IsChecked="{Binding EnableKeyboard}">
- <TextBlock Text="{locale:Locale SettingsTabInputDirectKeyboardAccess}" />
- </CheckBox>
- <CheckBox Margin="5,0"
- ToolTip.Tip="{locale:Locale DirectMouseTooltip}"
- IsChecked="{Binding EnableMouse}">
- <TextBlock Text="{locale:Locale SettingsTabInputDirectMouseAccess}" />
- </CheckBox>
- </StackPanel>
- <window:ControllerSettingsWindow Name="ControllerSettings" Margin="0,0,0,0" MinHeight="600" />
- </StackPanel>
- </Border>
- </ScrollViewer>
- <ScrollViewer Name="HotkeysPage"
- HorizontalAlignment="Stretch"
- VerticalAlignment="Stretch"
- HorizontalScrollBarVisibility="Disabled"
- VerticalScrollBarVisibility="Auto">
- <Border Classes="settings">
- <StackPanel Margin="10,5" Orientation="Vertical" Spacing="10">
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabHotkeysHotkeys}" />
- <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysToggleVsyncHotkey}" Width="230" />
- <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
- <TextBlock
- Text="{Binding KeyboardHotkeys.ToggleVsync, Mode=TwoWay, Converter={StaticResource Key}}"
- TextAlignment="Center" />
- </ToggleButton>
- </StackPanel>
- <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysScreenshotHotkey}" Width="230" />
- <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
- <TextBlock
- Text="{Binding KeyboardHotkeys.Screenshot, Mode=TwoWay, Converter={StaticResource Key}}"
- TextAlignment="Center" />
- </ToggleButton>
- </StackPanel>
- <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysShowUiHotkey}" Width="230" />
- <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
- <TextBlock
- Text="{Binding KeyboardHotkeys.ShowUi, Mode=TwoWay, Converter={StaticResource Key}}"
- TextAlignment="Center" />
- </ToggleButton>
- </StackPanel>
- <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysPauseHotkey}" Width="230" />
- <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
- <TextBlock
- Text="{Binding KeyboardHotkeys.Pause, Mode=TwoWay, Converter={StaticResource Key}}"
- TextAlignment="Center" />
- </ToggleButton>
- </StackPanel>
- <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysToggleMuteHotkey}" Width="230" />
- <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
- <TextBlock
- Text="{Binding KeyboardHotkeys.ToggleMute, Mode=TwoWay, Converter={StaticResource Key}}"
- TextAlignment="Center" />
- </ToggleButton>
- </StackPanel>
- <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysResScaleUpHotkey}" Width="230" />
- <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
- <TextBlock
- Text="{Binding KeyboardHotkeys.ResScaleUp, Mode=TwoWay, Converter={StaticResource Key}}"
- TextAlignment="Center" />
- </ToggleButton>
- </StackPanel>
- <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysResScaleDownHotkey}" Width="230" />
- <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
- <TextBlock
- Text="{Binding KeyboardHotkeys.ResScaleDown, Mode=TwoWay, Converter={StaticResource Key}}"
- TextAlignment="Center" />
- </ToggleButton>
- </StackPanel>
- <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysVolumeUpHotkey}" Width="230" />
- <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
- <TextBlock
- Text="{Binding KeyboardHotkeys.VolumeUp, Mode=TwoWay, Converter={StaticResource Key}}"
- TextAlignment="Center" />
- </ToggleButton>
- </StackPanel>
- <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysVolumeDownHotkey}" Width="230" />
- <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
- <TextBlock
- Text="{Binding KeyboardHotkeys.VolumeDown, Mode=TwoWay, Converter={StaticResource Key}}"
- TextAlignment="Center" />
- </ToggleButton>
- </StackPanel>
- </StackPanel>
- </Border>
- </ScrollViewer>
- <ScrollViewer Name="SystemPage"
- HorizontalAlignment="Stretch"
- VerticalAlignment="Stretch"
- HorizontalScrollBarVisibility="Disabled"
- VerticalScrollBarVisibility="Auto">
- <Border Classes="settings">
- <StackPanel
- Margin="10,5"
- HorizontalAlignment="Stretch"
- Orientation="Vertical"
- Spacing="10">
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabSystemCore}" />
- <StackPanel Margin="10,0,0,0" Orientation="Vertical">
- <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- Text="{locale:Locale SettingsTabSystemSystemRegion}"
- Width="250" />
- <ComboBox SelectedIndex="{Binding Region}"
- ToolTip.Tip="{locale:Locale RegionTooltip}"
- HorizontalContentAlignment="Left"
- Width="350">
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionJapan}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionUSA}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionEurope}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionAustralia}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionChina}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionKorea}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionTaiwan}" />
- </ComboBoxItem>
- </ComboBox>
- </StackPanel>
- <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- Text="{locale:Locale SettingsTabSystemSystemLanguage}"
- ToolTip.Tip="{locale:Locale LanguageTooltip}"
- Width="250" />
- <ComboBox SelectedIndex="{Binding Language}"
- ToolTip.Tip="{locale:Locale LanguageTooltip}"
- HorizontalContentAlignment="Left"
- Width="350">
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageJapanese}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock
- Text="{locale:Locale SettingsTabSystemSystemLanguageAmericanEnglish}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageFrench}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageGerman}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageItalian}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageSpanish}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageChinese}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageKorean}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageDutch}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguagePortuguese}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageRussian}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageTaiwanese}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock
- Text="{locale:Locale SettingsTabSystemSystemLanguageBritishEnglish}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock
- Text="{locale:Locale SettingsTabSystemSystemLanguageCanadianFrench}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock
- Text="{locale:Locale SettingsTabSystemSystemLanguageLatinAmericanSpanish}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock
- Text="{locale:Locale SettingsTabSystemSystemLanguageSimplifiedChinese}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock
- Text="{locale:Locale SettingsTabSystemSystemLanguageTraditionalChinese}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock
- Text="{locale:Locale SettingsTabSystemSystemLanguageBrazilianPortuguese}" />
- </ComboBoxItem>
- </ComboBox>
- </StackPanel>
- <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- Text="{locale:Locale SettingsTabSystemSystemTimeZone}"
- ToolTip.Tip="{locale:Locale TimezoneTooltip}"
- Width="250" />
- <AutoCompleteBox
- Name="TimeZoneBox"
- Width="350"
- MaxDropDownHeight="500"
- FilterMode="Contains"
- Items="{Binding TimeZones}"
- SelectionChanged="TimeZoneBox_OnSelectionChanged"
- Text="{Binding Path=TimeZone, Mode=OneWay}"
- TextChanged="TimeZoneBox_OnTextChanged"
- ValueMemberBinding="{ReflectionBinding TzMultiBinding}"
- ToolTip.Tip="{locale:Locale TimezoneTooltip}" />
- </StackPanel>
- <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- Text="{locale:Locale SettingsTabSystemSystemTime}"
- ToolTip.Tip="{locale:Locale TimeTooltip}"
- Width="250"/>
- <DatePicker VerticalAlignment="Center" SelectedDate="{Binding DateOffset}"
- ToolTip.Tip="{locale:Locale TimeTooltip}"
- Width="350" />
- </StackPanel>
- <StackPanel Margin="250,0,0,10" Orientation="Horizontal">
- <TimePicker
- VerticalAlignment="Center"
- ClockIdentifier="24HourClock"
- SelectedTime="{Binding TimeOffset}"
- Width="350"
- ToolTip.Tip="{locale:Locale TimeTooltip}" />
- </StackPanel>
- <CheckBox IsChecked="{Binding EnableVsync}">
- <TextBlock Text="{locale:Locale SettingsTabSystemEnableVsync}"
- ToolTip.Tip="{locale:Locale VSyncToggleTooltip}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding EnableFsIntegrityChecks}">
- <TextBlock Text="{locale:Locale SettingsTabSystemEnableFsIntegrityChecks}"
- ToolTip.Tip="{locale:Locale FsIntegrityToggleTooltip}" />
- </CheckBox>
- </StackPanel>
- <Separator Height="1" />
- <StackPanel Orientation="Horizontal">
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabSystemHacks}" />
- <TextBlock Text="{locale:Locale SettingsTabSystemHacksNote}" />
- </StackPanel>
- <StackPanel
- Margin="10,0,0,0"
- HorizontalAlignment="Stretch"
- Orientation="Vertical">
- <CheckBox IsChecked="{Binding ExpandDramSize}"
- ToolTip.Tip="{locale:Locale DRamTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabSystemExpandDramSize}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding IgnoreMissingServices}"
- ToolTip.Tip="{locale:Locale IgnoreMissingServicesTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabSystemIgnoreMissingServices}" />
- </CheckBox>
- </StackPanel>
- </StackPanel>
- </Border>
- </ScrollViewer>
- <ScrollViewer
- Name="CpuPage"
- HorizontalAlignment="Stretch"
- VerticalAlignment="Stretch"
- HorizontalScrollBarVisibility="Disabled"
- VerticalScrollBarVisibility="Auto">
- <Border Classes="settings">
- <StackPanel
- Margin="10,5"
- HorizontalAlignment="Stretch"
- Orientation="Vertical"
- Spacing="10">
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabCpuCache}" />
- <StackPanel
- Margin="10,0,0,0"
- HorizontalAlignment="Stretch"
- Orientation="Vertical">
- <CheckBox IsChecked="{Binding EnablePptc}">
- <TextBlock Text="{locale:Locale SettingsTabSystemEnablePptc}"
- ToolTip.Tip="{locale:Locale PptcToggleTooltip}" />
- </CheckBox>
- </StackPanel>
- <Separator Height="1" />
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabCpuMemory}" />
- <StackPanel
- Margin="10,0,0,0"
- HorizontalAlignment="Stretch"
- Orientation="Vertical">
- <StackPanel Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- Text="{locale:Locale SettingsTabSystemMemoryManagerMode}"
- ToolTip.Tip="{locale:Locale MemoryManagerTooltip}"
- Width="250" />
- <ComboBox SelectedIndex="{Binding MemoryMode}"
- ToolTip.Tip="{locale:Locale MemoryManagerTooltip}"
- HorizontalContentAlignment="Left"
- Width="350">
- <ComboBoxItem
- ToolTip.Tip="{locale:Locale MemoryManagerSoftwareTooltip}">
- <TextBlock
- Text="{locale:Locale SettingsTabSystemMemoryManagerModeSoftware}" />
- </ComboBoxItem>
- <ComboBoxItem
- ToolTip.Tip="{locale:Locale MemoryManagerHostTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabSystemMemoryManagerModeHost}" />
- </ComboBoxItem>
- <ComboBoxItem
- ToolTip.Tip="{locale:Locale MemoryManagerUnsafeTooltip}">
- <TextBlock
- Text="{locale:Locale SettingsTabSystemMemoryManagerModeHostUnchecked}" />
- </ComboBoxItem>
- </ComboBox>
- </StackPanel>
- </StackPanel>
- </StackPanel>
- </Border>
- </ScrollViewer>
- <ScrollViewer
- Name="GraphicsPage"
- HorizontalAlignment="Stretch"
- VerticalAlignment="Stretch"
- HorizontalScrollBarVisibility="Disabled"
- VerticalScrollBarVisibility="Auto">
- <Border Classes="settings">
- <StackPanel
- Margin="10,5"
- HorizontalAlignment="Stretch"
- Orientation="Vertical"
- Spacing="10">
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGraphicsAPI}" />
- <StackPanel Margin="10,0,0,0" Orientation="Vertical" Spacing="10">
- <StackPanel Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- ToolTip.Tip="{locale:Locale SettingsTabGraphicsBackendTooltip}"
- Text="{locale:Locale SettingsTabGraphicsBackend}"
- Width="250" />
- <ComboBox Width="350"
- HorizontalContentAlignment="Left"
- ToolTip.Tip="{locale:Locale SettingsTabGraphicsBackendTooltip}"
- SelectedIndex="{Binding GraphicsBackendIndex}">
- <ComboBoxItem IsVisible="{Binding IsVulkanAvailable}">
- <TextBlock Text="Vulkan" />
- </ComboBoxItem>
- <ComboBoxItem IsEnabled="{Binding IsOpenGLAvailable}">
- <TextBlock Text="OpenGL" />
- </ComboBoxItem>
- </ComboBox>
- </StackPanel>
- <StackPanel Orientation="Horizontal" IsVisible="{Binding IsVulkanSelected}">
- <TextBlock VerticalAlignment="Center"
- ToolTip.Tip="{locale:Locale SettingsTabGraphicsPreferredGpuTooltip}"
- Text="{locale:Locale SettingsTabGraphicsPreferredGpu}"
- Width="250" />
- <ComboBox Width="350"
- HorizontalContentAlignment="Left"
- ToolTip.Tip="{locale:Locale SettingsTabGraphicsPreferredGpuTooltip}"
- SelectedIndex="{Binding PreferredGpuIndex}"
- Items="{Binding AvailableGpus}"/>
- </StackPanel>
- </StackPanel>
- <Separator Height="1" />
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGraphicsFeatures}" />
- <StackPanel Margin="10,0,0,0" Orientation="Vertical" Spacing="10">
- <StackPanel Orientation="Vertical">
- <CheckBox IsChecked="{Binding EnableShaderCache}"
- ToolTip.Tip="{locale:Locale ShaderCacheToggleTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabGraphicsEnableShaderCache}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding EnableTextureRecompression}"
- ToolTip.Tip="{locale:Locale SettingsEnableTextureRecompressionTooltip}">
- <TextBlock Text="{locale:Locale SettingsEnableTextureRecompression}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding EnableMacroHLE}"
- ToolTip.Tip="{locale:Locale SettingsEnableMacroHLETooltip}">
- <TextBlock Text="{locale:Locale SettingsEnableMacroHLE}" />
- </CheckBox>
- </StackPanel>
- <StackPanel Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- ToolTip.Tip="{locale:Locale ResolutionScaleTooltip}"
- Text="{locale:Locale SettingsTabGraphicsResolutionScale}"
- Width="250" />
- <ComboBox SelectedIndex="{Binding ResolutionScale}"
- Width="350"
- HorizontalContentAlignment="Left"
- ToolTip.Tip="{locale:Locale ResolutionScaleTooltip}">
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScaleCustom}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScaleNative}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScale2x}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScale3x}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScale4x}" />
- </ComboBoxItem>
- </ComboBox>
- <ui:NumberBox
- Margin="10,0,0,0"
- ToolTip.Tip="{locale:Locale ResolutionScaleEntryTooltip}"
- MinWidth="150"
- SmallChange="0.1"
- LargeChange="1"
- SimpleNumberFormat="F2"
- SpinButtonPlacementMode="Inline"
- IsVisible="{Binding IsCustomResolutionScaleActive}"
- Maximum="100"
- Minimum="0.1"
- Value="{Binding CustomResolutionScale}" />
- </StackPanel>
- <StackPanel Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- ToolTip.Tip="{locale:Locale AnisotropyTooltip}"
- Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering}"
- Width="250" />
- <ComboBox SelectedIndex="{Binding MaxAnisotropy}"
- Width="350"
- HorizontalContentAlignment="Left"
- ToolTip.Tip="{locale:Locale AnisotropyTooltip}">
- <ComboBoxItem>
- <TextBlock
- Text="{locale:Locale SettingsTabGraphicsAnisotropicFilteringAuto}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering2x}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering4x}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering8x}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock
- Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering16x}" />
- </ComboBoxItem>
- </ComboBox>
- </StackPanel>
- <StackPanel Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- ToolTip.Tip="{locale:Locale AspectRatioTooltip}"
- Text="{locale:Locale SettingsTabGraphicsAspectRatio}"
- Width="250" />
- <ComboBox SelectedIndex="{Binding AspectRatio}"
- Width="350"
- HorizontalContentAlignment="Left"
- ToolTip.Tip="{locale:Locale AspectRatioTooltip}">
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio4x3}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio16x9}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio16x10}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio21x9}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio32x9}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatioStretch}" />
- </ComboBoxItem>
- </ComboBox>
- </StackPanel>
- </StackPanel>
- <StackPanel
- Margin="10,0,0,0"
- HorizontalAlignment="Stretch"
- Orientation="Vertical"
- Spacing="10">
- <StackPanel Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- ToolTip.Tip="{locale:Locale GraphicsBackendThreadingTooltip}"
- Text="{locale:Locale SettingsTabGraphicsBackendMultithreading}"
- Width="250" />
- <ComboBox Width="350"
- HorizontalContentAlignment="Left"
- ToolTip.Tip="{locale:Locale GalThreadingTooltip}"
- SelectedIndex="{Binding GraphicsBackendMultithreadingIndex}">
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale CommonAuto}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale CommonOff}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale CommonOn}" />
- </ComboBoxItem>
- </ComboBox>
- </StackPanel>
- </StackPanel>
- <Separator Height="1" />
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGraphicsDeveloperOptions}" />
- <StackPanel
- Margin="10,0,0,0"
- HorizontalAlignment="Stretch"
- Orientation="Vertical"
- Spacing="10">
- <StackPanel Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- ToolTip.Tip="{locale:Locale ShaderDumpPathTooltip}"
- Text="{locale:Locale SettingsTabGraphicsShaderDumpPath}"
- Width="250" />
- <TextBox Text="{Binding ShaderDumpPath}"
- Width="350"
- ToolTip.Tip="{locale:Locale ShaderDumpPathTooltip}" />
- </StackPanel>
- </StackPanel>
- </StackPanel>
- </Border>
- </ScrollViewer>
- <ScrollViewer
- Name="AudioPage"
- HorizontalAlignment="Stretch"
- VerticalAlignment="Stretch"
- HorizontalScrollBarVisibility="Disabled"
- VerticalScrollBarVisibility="Auto">
- <Border Classes="settings">
- <StackPanel
- Margin="10,5"
- HorizontalAlignment="Stretch"
- Orientation="Vertical"
- Spacing="10">
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabAudio}" />
- <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- Text="{locale:Locale SettingsTabSystemAudioBackend}"
- ToolTip.Tip="{locale:Locale AudioBackendTooltip}"
- Width="250" />
- <ComboBox SelectedIndex="{Binding AudioBackend}"
- Width="350"
- HorizontalContentAlignment="Left">
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabSystemAudioBackendDummy}" />
- </ComboBoxItem>
- <ComboBoxItem IsEnabled="{Binding IsOpenAlEnabled}">
- <TextBlock Text="{locale:Locale SettingsTabSystemAudioBackendOpenAL}" />
- </ComboBoxItem>
- <ComboBoxItem IsEnabled="{Binding IsSoundIoEnabled}">
- <TextBlock Text="{locale:Locale SettingsTabSystemAudioBackendSoundIO}" />
- </ComboBoxItem>
- <ComboBoxItem IsEnabled="{Binding IsSDL2Enabled}">
- <TextBlock Text="{locale:Locale SettingsTabSystemAudioBackendSDL2}" />
- </ComboBoxItem>
- </ComboBox>
- </StackPanel>
- <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- Text="{locale:Locale SettingsTabSystemAudioVolume}"
- ToolTip.Tip="{locale:Locale AudioVolumeTooltip}"
- Width="250" />
- <ui:NumberBox Value="{Binding Volume}"
- ToolTip.Tip="{locale:Locale AudioVolumeTooltip}"
- Width="350"
- SmallChange="1"
- LargeChange="10"
- SimpleNumberFormat="F0"
- SpinButtonPlacementMode="Inline"
- Minimum="0"
- Maximum="100" />
- </StackPanel>
- <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
- <Slider Value="{Binding Volume}"
- Margin="250,0,0,0"
- ToolTip.Tip="{locale:Locale AudioVolumeTooltip}"
- Minimum="0"
- Maximum="100"
- SmallChange="5"
- TickFrequency="5"
- IsSnapToTickEnabled="True"
- LargeChange="10"
- Width="350" />
- </StackPanel>
- </StackPanel>
- </Border>
- </ScrollViewer>
- <ScrollViewer
- Name="NetworkPage"
- HorizontalAlignment="Stretch"
- VerticalAlignment="Stretch"
- HorizontalScrollBarVisibility="Disabled"
- VerticalScrollBarVisibility="Auto">
- <Border Classes="settings">
- <StackPanel
- Margin="10,5"
- HorizontalAlignment="Stretch"
- Orientation="Vertical"
- Spacing="10">
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabNetworkConnection}" />
- <CheckBox Margin="10,0,0,0" IsChecked="{Binding EnableInternetAccess}">
- <TextBlock Text="{locale:Locale SettingsTabSystemEnableInternetAccess}"
- ToolTip.Tip="{locale:Locale EnableInternetAccessTooltip}" />
- </CheckBox>
- </StackPanel>
- </Border>
- </ScrollViewer>
- <ScrollViewer
- Name="LoggingPage"
- HorizontalAlignment="Stretch"
- VerticalAlignment="Stretch"
- HorizontalScrollBarVisibility="Disabled"
- VerticalScrollBarVisibility="Auto">
- <Border Classes="settings">
- <StackPanel
- Margin="10,5"
- HorizontalAlignment="Stretch"
- Orientation="Vertical"
- Spacing="10">
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabLoggingLogging}" />
- <StackPanel Margin="10,0,0,0" Orientation="Vertical">
- <CheckBox IsChecked="{Binding EnableFileLog}"
- ToolTip.Tip="{locale:Locale FileLogTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabLoggingEnableLoggingToFile}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding EnableStub}"
- ToolTip.Tip="{locale:Locale StubLogTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabLoggingEnableStubLogs}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding EnableInfo}"
- ToolTip.Tip="{locale:Locale InfoLogTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabLoggingEnableInfoLogs}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding EnableWarn}"
- ToolTip.Tip="{locale:Locale WarnLogTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabLoggingEnableWarningLogs}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding EnableError}"
- ToolTip.Tip="{locale:Locale ErrorLogTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabLoggingEnableErrorLogs}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding EnableTrace}"
- ToolTip.Tip="{locale:Locale TraceLogTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabLoggingEnableTraceLogs}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding EnableGuest}"
- ToolTip.Tip="{locale:Locale GuestLogTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabLoggingEnableGuestLogs}" />
- </CheckBox>
- </StackPanel>
- <Separator Height="1" />
- <TextBlock Classes="h1" Text="{locale:Locale SettingsTabLoggingDeveloperOptions}" />
- <StackPanel
- Margin="10,0,0,0"
- HorizontalAlignment="Stretch"
- Orientation="Vertical"
- Spacing="10">
- <StackPanel Orientation="Vertical">
- <CheckBox IsChecked="{Binding EnableDebug}"
- ToolTip.Tip="{locale:Locale DebugLogTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabLoggingEnableDebugLogs}" />
- </CheckBox>
- <CheckBox IsChecked="{Binding EnableFsAccessLog}"
- ToolTip.Tip="{locale:Locale FileAccessLogTooltip}">
- <TextBlock Text="{locale:Locale SettingsTabLoggingEnableFsAccessLogs}" />
- </CheckBox>
- <StackPanel Margin="0,10,0,0" Orientation="Horizontal" VerticalAlignment="Stretch">
- <TextBlock VerticalAlignment="Center"
- ToolTip.Tip="{locale:Locale FSAccessLogModeTooltip}"
- Text="{locale:Locale SettingsTabLoggingFsGlobalAccessLogMode}"
- Width="285" />
- <ui:NumberBox
- Maximum="3"
- Minimum="0"
- Width="150"
- SpinButtonPlacementMode="Inline"
- SmallChange="1"
- LargeChange="1"
- Value="{Binding FsGlobalAccessLogMode}" />
- </StackPanel>
- <StackPanel Margin="0,10,0,0" Orientation="Horizontal">
- <TextBlock VerticalAlignment="Center"
- Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevel}"
- ToolTip.Tip="{locale:Locale OpenGlLogLevel}"
- Width="285" />
- <ComboBox SelectedIndex="{Binding OpenglDebugLevel}"
- Width="150"
- HorizontalContentAlignment="Left"
- ToolTip.Tip="{locale:Locale OpenGlLogLevel}">
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelNone}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelError}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock
- Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelPerformance}" />
- </ComboBoxItem>
- <ComboBoxItem>
- <TextBlock Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelAll}" />
- </ComboBoxItem>
- </ComboBox>
- </StackPanel>
- </StackPanel>
- </StackPanel>
- </StackPanel>
- </Border>
- </ScrollViewer>
+ <settings:SettingsUIView Name="UiPage" />
+ <settings:SettingsInputView Name="InputPage" />
+ <settings:SettingsHotkeysView Name="HotkeysPage" />
+ <settings:SettingsSystemView Name="SystemPage" />
+ <settings:SettingsCPUView Name="CpuPage" />
+ <settings:SettingsGraphicsView Name="GraphicsPage" />
+ <settings:SettingsAudioView Name="AudioPage" />
+ <settings:SettingsNetworkView Name="NetworkPage" />
+ <settings:SettingsLoggingView Name="LoggingPage" />
</Grid>
<ui:NavigationView Grid.Row="1"
IsSettingsVisible="False"
@@ -962,7 +102,7 @@
Spacing="10"
Orientation="Horizontal"
HorizontalAlignment="Right"
- ReverseOrder="{ReflectionBinding IsMacOS}">
+ ReverseOrder="{Binding IsMacOS}">
<Button
HotKey="Enter"
Classes="accent"
diff --git a/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml.cs b/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml.cs
index ae489b86..bdf7e94d 100644
--- a/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml.cs
+++ b/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml.cs
@@ -1,49 +1,29 @@
-using Avalonia.Controls;
-using Avalonia.Controls.Primitives;
-using Avalonia.Data;
-using Avalonia.Data.Converters;
-using Avalonia.Input;
-using Avalonia.Interactivity;
using FluentAvalonia.Core;
using FluentAvalonia.UI.Controls;
using Ryujinx.Ava.Common.Locale;
-using Ryujinx.Ava.UI.Controls;
-using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.HLE.FileSystem;
-using Ryujinx.Input;
-using Ryujinx.Input.Assigner;
using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
+using System.ComponentModel;
namespace Ryujinx.Ava.UI.Windows
{
public partial class SettingsWindow : StyleableWindow
{
- private ButtonKeyAssigner _currentAssigner;
-
internal SettingsViewModel ViewModel { get; set; }
public SettingsWindow(VirtualFileSystem virtualFileSystem, ContentManager contentManager)
{
Title = $"Ryujinx {Program.Version} - {LocaleManager.Instance[LocaleKeys.Settings]}";
- ViewModel = new SettingsViewModel(virtualFileSystem, contentManager, this);
+ ViewModel = new SettingsViewModel(virtualFileSystem, contentManager);
DataContext = ViewModel;
+ ViewModel.CloseWindow += Close;
+ ViewModel.SaveSettingsEvent += SaveSettings;
+
InitializeComponent();
Load();
-
- FuncMultiValueConverter<string, string> converter = new(parts => string.Format("{0} {1} {2}", parts.ToArray()).Trim());
- MultiBinding tzMultiBinding = new() { Converter = converter };
- tzMultiBinding.Bindings.Add(new Binding("UtcDifference"));
- tzMultiBinding.Bindings.Add(new Binding("Location"));
- tzMultiBinding.Bindings.Add(new Binding("Abbreviation"));
-
- TimeZoneBox.ValueMemberBinding = tzMultiBinding;
}
public SettingsWindow()
@@ -55,159 +35,69 @@ namespace Ryujinx.Ava.UI.Windows
Load();
}
- private void Load()
+ public void SaveSettings()
{
- Pages.Children.Clear();
- NavPanel.SelectionChanged += NavPanelOnSelectionChanged;
- NavPanel.SelectedItem = NavPanel.MenuItems.ElementAt(0);
- }
+ InputPage.ControllerSettings?.SaveCurrentProfile();
- private void Button_Checked(object sender, RoutedEventArgs e)
- {
- if (sender is ToggleButton button)
+ if (Owner is MainWindow window && ViewModel.DirectoryChanged)
{
- if (_currentAssigner != null && button == _currentAssigner.ToggledButton)
- {
- return;
- }
-
- if (_currentAssigner == null && (bool)button.IsChecked)
- {
- _currentAssigner = new ButtonKeyAssigner(button);
-
- FocusManager.Instance.Focus(this, NavigationMethod.Pointer);
-
- PointerPressed += MouseClick;
-
- IKeyboard keyboard = (IKeyboard)ViewModel.AvaloniaKeyboardDriver.GetGamepad(ViewModel.AvaloniaKeyboardDriver.GamepadsIds[0]);
- IButtonAssigner assigner = new KeyboardKeyAssigner(keyboard);
-
- _currentAssigner.GetInputAndAssign(assigner);
- }
- else
- {
- if (_currentAssigner != null)
- {
- ToggleButton oldButton = _currentAssigner.ToggledButton;
-
- _currentAssigner.Cancel();
- _currentAssigner = null;
-
- button.IsChecked = false;
- }
- }
+ window.ViewModel.LoadApplications();
}
}
- private void Button_Unchecked(object sender, RoutedEventArgs e)
- {
- _currentAssigner?.Cancel();
- _currentAssigner = null;
- }
-
- private void MouseClick(object sender, PointerPressedEventArgs e)
+ private void Load()
{
- bool shouldUnbind = false;
-
- if (e.GetCurrentPoint(this).Properties.IsMiddleButtonPressed)
- {
- shouldUnbind = true;
- }
-
- _currentAssigner?.Cancel(shouldUnbind);
-
- PointerPressed -= MouseClick;
+ 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)
+ if (e.SelectedItem is NavigationViewItem navItem && navItem.Tag is not null)
{
- NavPanel.Content = navitem.Tag.ToString() switch
+ switch (navItem.Tag.ToString())
{
- "UiPage" => UiPage,
- "InputPage" => InputPage,
- "HotkeysPage" => HotkeysPage,
- "SystemPage" => SystemPage,
- "CpuPage" => CpuPage,
- "GraphicsPage" => GraphicsPage,
- "AudioPage" => AudioPage,
- "NetworkPage" => NetworkPage,
- "LoggingPage" => LoggingPage,
- _ => throw new NotImplementedException()
- };
- }
- }
-
- 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
- {
- path = await new OpenFolderDialog().ShowAsync(this);
-
- if (!string.IsNullOrWhiteSpace(path))
- {
- ViewModel.GameDirectories.Add(path);
- ViewModel.DirectoryChanged = true;
+ 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();
}
}
}
- private void RemoveButton_OnClick(object sender, RoutedEventArgs e)
+ protected override void OnClosing(CancelEventArgs 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;
- }
- }
-
- private void TimeZoneBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- if (e.AddedItems != null && e.AddedItems.Count > 0)
- {
- if (e.AddedItems[0] is TimeZone timeZone)
- {
- e.Handled = true;
-
- ViewModel.ValidateAndSetTimeZone(timeZone.Location);
- }
- }
- }
-
- private void TimeZoneBox_OnTextChanged(object sender, EventArgs e)
- {
- if (sender is AutoCompleteBox box)
- {
- if (box.SelectedItem != null && box.SelectedItem is TimeZone timeZone)
- {
- ViewModel.ValidateAndSetTimeZone(timeZone.Location);
- }
- }
- }
-
- protected override void OnClosed(EventArgs e)
- {
- ControllerSettings.Dispose();
-
- _currentAssigner?.Cancel();
- _currentAssigner = null;
-
- base.OnClosed(e);
+ HotkeysPage.Dispose();
+ InputPage.Dispose();
+ base.OnClosing(e);
}
}
} \ No newline at end of file