diff options
| author | Mary Guillemard <mary@mary.zone> | 2024-03-02 12:51:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-02 12:51:05 +0100 |
| commit | ec6cb0abb4b7669895b6e96fd7581c93b5abd691 (patch) | |
| tree | 128c862ff5faea0b219467656d4023bee7faefb5 /src/Ryujinx.Ava/UI/Views | |
| parent | 53b5985da6b9d7b281d9fc25b93bfd1d1918a107 (diff) | |
infra: Make Avalonia the default UI (#6375)
* misc: Move Ryujinx project to Ryujinx.Gtk3
This breaks release CI for now but that's fine.
Signed-off-by: Mary Guillemard <mary@mary.zone>
* misc: Move Ryujinx.Ava project to Ryujinx
This breaks CI for now, but it's fine.
Signed-off-by: Mary Guillemard <mary@mary.zone>
* infra: Make Avalonia the default UI
Should fix CI after the previous changes.
GTK3 isn't build by the release job anymore, only by PR CI.
This also ensure that the test-ava update package is still generated to
allow update from the old testing channel.
Signed-off-by: Mary Guillemard <mary@mary.zone>
* Fix missing copy in create_app_bundle.sh
Signed-off-by: Mary Guillemard <mary@mary.zone>
* Fix syntax error
Signed-off-by: Mary Guillemard <mary@mary.zone>
---------
Signed-off-by: Mary Guillemard <mary@mary.zone>
Diffstat (limited to 'src/Ryujinx.Ava/UI/Views')
42 files changed, 0 insertions, 5568 deletions
diff --git a/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml b/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml deleted file mode 100644 index 99f2b6b6..00000000 --- a/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml +++ /dev/null @@ -1,1130 +0,0 @@ -<UserControl - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - 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:controls="clr-namespace:Ryujinx.Ava.UI.Controls" - xmlns:models="clr-namespace:Ryujinx.Ava.UI.Models" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - d:DesignHeight="800" - d:DesignWidth="800" - x:Class="Ryujinx.Ava.UI.Views.Input.ControllerInputView" - x:DataType="viewModels:ControllerInputViewModel" - mc:Ignorable="d" - Focusable="True"> - <Design.DataContext> - <viewModels:ControllerInputViewModel /> - </Design.DataContext> - <UserControl.Resources> - <helpers:KeyValueConverter x:Key="Key" /> - </UserControl.Resources> - <UserControl.Styles> - <Style Selector="ToggleButton"> - <Setter Property="Width" Value="90" /> - <Setter Property="Height" Value="27" /> - <Setter Property="HorizontalAlignment" Value="Stretch" /> - </Style> - </UserControl.Styles> - <StackPanel - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - Orientation="Vertical"> - <StackPanel - Margin="0 0 0 5" - Orientation="Vertical" - Spacing="5"> - <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="10" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <!-- Player Selection --> - <Grid - Grid.Column="0" - Margin="2" - HorizontalAlignment="Stretch" - VerticalAlignment="Center"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto"/> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <TextBlock - Margin="5,0,10,0" - Width="90" - HorizontalAlignment="Left" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsPlayer}" /> - <ComboBox - Grid.Column="1" - Name="PlayerIndexBox" - HorizontalAlignment="Stretch" - VerticalAlignment="Center" - SelectionChanged="PlayerIndexBox_OnSelectionChanged" - ItemsSource="{Binding PlayerIndexes}" - SelectedIndex="{Binding PlayerId}"> - <ComboBox.ItemTemplate> - <DataTemplate> - <TextBlock Text="{Binding Name}" /> - </DataTemplate> - </ComboBox.ItemTemplate> - </ComboBox> - </Grid> - <!-- Profile Selection --> - <Grid - Grid.Column="2" - Margin="2" - HorizontalAlignment="Stretch" - VerticalAlignment="Center"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto"/> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="Auto"/> - <ColumnDefinition Width="Auto"/> - <ColumnDefinition Width="Auto"/> - </Grid.ColumnDefinitions> - <TextBlock - Margin="5,0,10,0" - Width="90" - HorizontalAlignment="Left" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsProfile}" /> - <ui:FAComboBox - Grid.Column="1" - IsEditable="True" - Name="ProfileBox" - HorizontalAlignment="Stretch" - VerticalAlignment="Center" - SelectedIndex="0" - ItemsSource="{Binding ProfilesList}" - Text="{Binding ProfileName, Mode=TwoWay}" /> - <Button - Grid.Column="2" - MinWidth="0" - Margin="5,0,0,0" - VerticalAlignment="Center" - ToolTip.Tip="{locale:Locale ControllerSettingsLoadProfileToolTip}" - Command="{ReflectionBinding LoadProfile}"> - <ui:SymbolIcon - Symbol="Upload" - FontSize="15" - Height="20" /> - </Button> - <Button - Grid.Column="3" - MinWidth="0" - Margin="5,0,0,0" - VerticalAlignment="Center" - ToolTip.Tip="{locale:Locale ControllerSettingsSaveProfileToolTip}" - Command="{ReflectionBinding SaveProfile}"> - <ui:SymbolIcon - Symbol="Save" - FontSize="15" - Height="20" /> - </Button> - <Button - Grid.Column="4" - MinWidth="0" - Margin="5,0,0,0" - VerticalAlignment="Center" - ToolTip.Tip="{locale:Locale ControllerSettingsRemoveProfileToolTip}" - Command="{ReflectionBinding RemoveProfile}"> - <ui:SymbolIcon - Symbol="Delete" - FontSize="15" - Height="20" /> - </Button> - </Grid> - </Grid> - <Separator /> - <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="10" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <!-- Input Device --> - <Grid - Grid.Column="0" - Margin="2" - HorizontalAlignment="Stretch"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto"/> - <ColumnDefinition Width="*"/> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <TextBlock - Grid.Column="0" - Margin="5,0,10,0" - Width="90" - HorizontalAlignment="Left" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsInputDevice}" /> - <ComboBox - Grid.Column="1" - Name="DeviceBox" - HorizontalAlignment="Stretch" - VerticalAlignment="Center" - ItemsSource="{Binding DeviceList}" - SelectedIndex="{Binding Device}" /> - <Button - Grid.Column="2" - MinWidth="0" - Margin="5,0,0,0" - VerticalAlignment="Center" - Command="{ReflectionBinding LoadDevices}"> - <ui:SymbolIcon - Symbol="Refresh" - FontSize="15" - Height="20"/> - </Button> - </Grid> - <!-- Controller Type --> - <Grid - Grid.Column="2" - Margin="2" - HorizontalAlignment="Stretch" - VerticalAlignment="Center"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto"/> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <TextBlock - Margin="5,0,10,0" - Width="90" - HorizontalAlignment="Left" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsControllerType}" /> - <ComboBox - Grid.Column="1" - HorizontalAlignment="Stretch" - ItemsSource="{Binding Controllers}" - SelectedIndex="{Binding Controller}"> - <ComboBox.ItemTemplate> - <DataTemplate DataType="models:ControllerModel"> - <TextBlock Text="{Binding Name}" /> - </DataTemplate> - </ComboBox.ItemTemplate> - </ComboBox> - </Grid> - </Grid> - </StackPanel> - <!-- Button / JoyStick Settings --> - <Grid - Name="SettingButtons" - MinHeight="450" - FlowDirection="LeftToRight" - IsVisible="{Binding ShowSettings}"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <!-- Left Controls --> - <StackPanel - Orientation="Vertical" - Margin="0,0,5,0" - Grid.Column="0"> - <!-- Left Triggers --> - <Border - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - IsVisible="{Binding IsLeft}" - MinHeight="90" - CornerRadius="5"> - <Grid - Margin="10" - HorizontalAlignment="Stretch"> - <Grid.ColumnDefinitions> - <ColumnDefinition /> - <ColumnDefinition /> - </Grid.ColumnDefinitions> - <Grid.RowDefinitions> - <RowDefinition /> - <RowDefinition /> - </Grid.RowDefinitions> - <StackPanel - Grid.Column="0" - Grid.Row="0" - Orientation="Horizontal"> - <TextBlock - Width="20" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsTriggerZL}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.ButtonZl, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <StackPanel - Grid.Column="0" - Grid.Row="1" - Orientation="Horizontal"> - <TextBlock - Width="20" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsTriggerL}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.ButtonL, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <StackPanel - Grid.Column="1" - Grid.Row="1" - Orientation="Horizontal"> - <TextBlock - Width="20" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsButtonMinus}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.ButtonMinus, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - </Grid> - </Border> - <!-- Left Joystick --> - <Border - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - IsVisible="{Binding IsLeft}" - Margin="0,5,0,0" - CornerRadius="5"> - <StackPanel - Margin="10" - Orientation="Vertical"> - <TextBlock - Margin="0,0,0,10" - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsLStick}" /> - <!-- Left Joystick Keyboard --> - <StackPanel - IsVisible="{Binding !IsController}" - Orientation="Vertical"> - <!-- Left Joystick Button --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickButton}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.LeftKeyboardStickButton, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Left Joystick Up --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickUp}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.LeftStickUp, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Left Joystick Down --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickDown}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.LeftStickDown, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Left Joystick Left --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickLeft}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.LeftStickLeft, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Left Joystick Right --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickRight}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.LeftStickRight, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - </StackPanel> - <!-- Left Joystick Controller --> - <StackPanel - IsVisible="{Binding IsController}" - Orientation="Vertical"> - <!-- Left Joystick Button --> - <StackPanel - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickButton}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.LeftControllerStickButton, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Left Joystick Stick --> - <StackPanel - Margin="0,4,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickStick}" - TextAlignment="Center" /> - <ToggleButton Tag="stick"> - <TextBlock - Text="{ReflectionBinding Configuration.LeftJoystick, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <Separator - Margin="0,8,0,8" - Height="1" /> - <CheckBox IsChecked="{ReflectionBinding Configuration.LeftInvertStickX}"> - <TextBlock Text="{locale:Locale ControllerSettingsStickInvertXAxis}" /> - </CheckBox> - <CheckBox IsChecked="{ReflectionBinding Configuration.LeftInvertStickY}"> - <TextBlock Text="{locale:Locale ControllerSettingsStickInvertYAxis}" /> - </CheckBox> - <CheckBox IsChecked="{ReflectionBinding Configuration.LeftRotate90}"> - <TextBlock Text="{locale:Locale ControllerSettingsRotate90}" /> - </CheckBox> - <Separator - Margin="0,8,0,8" - Height="1" /> - <StackPanel Orientation="Vertical"> - <TextBlock - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickDeadzone}" /> - <StackPanel - HorizontalAlignment="Center" - VerticalAlignment="Center" - Orientation="Horizontal"> - <controls:SliderScroll - Width="130" - Maximum="1" - TickFrequency="0.01" - IsSnapToTickEnabled="True" - SmallChange="0.01" - Minimum="0" - Value="{ReflectionBinding Configuration.DeadzoneLeft, Mode=TwoWay}" /> - <TextBlock - VerticalAlignment="Center" - Width="25" - Text="{ReflectionBinding Configuration.DeadzoneLeft, StringFormat=\{0:0.00\}}" /> - </StackPanel> - <TextBlock - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickRange}" /> - <StackPanel - HorizontalAlignment="Center" - VerticalAlignment="Center" - Orientation="Horizontal"> - <controls:SliderScroll - Width="130" - Maximum="2" - TickFrequency="0.01" - IsSnapToTickEnabled="True" - SmallChange="0.01" - Minimum="0" - Value="{ReflectionBinding Configuration.RangeLeft, Mode=TwoWay}" /> - <TextBlock - VerticalAlignment="Center" - Width="25" - Text="{ReflectionBinding Configuration.RangeLeft, StringFormat=\{0:0.00\}}" /> - </StackPanel> - </StackPanel> - </StackPanel> - </StackPanel> - </Border> - <!-- Left DPad --> - <Border - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - VerticalAlignment="Top" - IsVisible="{Binding IsLeft}" - Margin="0,5,0,0" - CornerRadius="5"> - <StackPanel - Margin="10" - Orientation="Vertical"> - <TextBlock - Margin="0,0,0,10" - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsDPad}" /> - <StackPanel Orientation="Vertical"> - <!-- Left DPad Up --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsDPadUp}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.DpadUp, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Left DPad Down --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsDPadDown}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.DpadDown, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Left DPad Left --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsDPadLeft}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.DpadLeft, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Left DPad Right --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsDPadRight}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.DpadRight, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - </StackPanel> - </StackPanel> - </Border> - </StackPanel> - <!-- Triggers & Side Buttons --> - <StackPanel - Grid.Column="1" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch"> - <Border - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - CornerRadius="5" - MinHeight="90"> - <StackPanel - Margin="8" - Orientation="Vertical"> - <TextBlock - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsTriggerThreshold}" /> - <StackPanel - HorizontalAlignment="Center" - Orientation="Horizontal"> - <controls:SliderScroll - Width="130" - Maximum="1" - TickFrequency="0.01" - IsSnapToTickEnabled="True" - SmallChange="0.01" - Minimum="0" - Value="{ReflectionBinding Configuration.TriggerThreshold, Mode=TwoWay}" /> - <TextBlock - Width="25" - Text="{ReflectionBinding Configuration.TriggerThreshold, StringFormat=\{0:0.00\}}" /> - </StackPanel> - <StackPanel - Margin="0,4,0,0" - HorizontalAlignment="Center" - VerticalAlignment="Center" - IsVisible="{Binding !IsRight}" - Orientation="Horizontal"> - <TextBlock - Width="20" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsLeftSR}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.LeftButtonSr, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <StackPanel - Margin="0,4,0,0" - HorizontalAlignment="Center" - VerticalAlignment="Center" - IsVisible="{Binding !IsRight}" - Orientation="Horizontal"> - <TextBlock - Width="20" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsLeftSL}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.LeftButtonSl, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <StackPanel - Margin="0,4,0,0" - HorizontalAlignment="Center" - VerticalAlignment="Center" - IsVisible="{Binding !IsLeft}" - Orientation="Horizontal"> - <TextBlock - Width="20" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsRightSR}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.RightButtonSr, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <StackPanel - Margin="0,4,0,0" - HorizontalAlignment="Center" - VerticalAlignment="Center" - IsVisible="{Binding !IsLeft}" - Orientation="Horizontal"> - <TextBlock - Width="20" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsRightSL}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.RightButtonSl, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - </StackPanel> - </Border> - <!-- Controller Picture --> - <Image - Margin="0,10,0,0" - MaxHeight="300" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - Source="{Binding Image}" /> - <!-- Motion + Rumble --> - <StackPanel - Margin="0,10,0,0" - Spacing="5" - Orientation="Vertical" - VerticalAlignment="Bottom"> - <Border - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - CornerRadius="5" - VerticalAlignment="Bottom" - HorizontalAlignment="Stretch" - IsVisible="{Binding IsController}"> - <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <CheckBox - Margin="10" - MinWidth="0" - Grid.Column="0" - IsChecked="{ReflectionBinding Configuration.EnableMotion, Mode=TwoWay}"> - <TextBlock Text="{locale:Locale ControllerSettingsMotion}" /> - </CheckBox> - <Button - Margin="10" - Grid.Column="1" - Command="{Binding ShowMotionConfig}"> - <TextBlock Text="{locale:Locale ControllerSettingsConfigureGeneral}" /> - </Button> - </Grid> - </Border> - <Border - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - CornerRadius="5" - HorizontalAlignment="Stretch" - IsVisible="{Binding IsController}" - Margin="0,-1,0,0"> - <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <CheckBox - Margin="10" - MinWidth="0" - Grid.Column="0" - IsChecked="{ReflectionBinding Configuration.EnableRumble, Mode=TwoWay}"> - <TextBlock Text="{locale:Locale ControllerSettingsRumble}" /> - </CheckBox> - <Button - Margin="10" - Grid.Column="1" - Command="{Binding ShowRumbleConfig}"> - <TextBlock Text="{locale:Locale ControllerSettingsConfigureGeneral}" /> - </Button> - </Grid> - </Border> - </StackPanel> - </StackPanel> - <!-- Right Controls --> - <StackPanel - Orientation="Vertical" - Margin="5,0,0,0" - Grid.Column="2"> - <!-- Right Triggers --> - <Border - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - IsVisible="{Binding IsRight}" - MinHeight="90" - CornerRadius="5"> - <Grid - Margin="10" - HorizontalAlignment="Stretch"> - <Grid.ColumnDefinitions> - <ColumnDefinition /> - <ColumnDefinition /> - </Grid.ColumnDefinitions> - <Grid.RowDefinitions> - <RowDefinition /> - <RowDefinition /> - </Grid.RowDefinitions> - <StackPanel - Grid.Column="1" - Grid.Row="0" - Orientation="Horizontal"> - <TextBlock - Width="20" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsTriggerZR}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.ButtonZr, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <StackPanel - Grid.Column="1" - Grid.Row="1" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Orientation="Horizontal"> - <TextBlock - Width="20" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsTriggerR}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.ButtonR, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <StackPanel - Grid.Column="0" - Grid.Row="1" - HorizontalAlignment="Right" - VerticalAlignment="Center" - Orientation="Horizontal"> - <TextBlock - Width="20" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsButtonPlus}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.ButtonPlus, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - </Grid> - </Border> - <!-- Right Joystick --> - <Border - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - IsVisible="{Binding IsRight}" - Margin="0,5,0,0" - CornerRadius="5"> - <StackPanel - Margin="10" - Orientation="Vertical"> - <TextBlock - Margin="0,0,0,10" - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsButtons}" /> - <StackPanel - Orientation="Vertical"> - <!-- Right Buttons A --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Width="120" - Margin="0,0,10,0" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsButtonA}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.ButtonA, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Right Buttons B --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Width="120" - Margin="0,0,10,0" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsButtonB}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.ButtonB, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Right Buttons X --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Width="120" - Margin="0,0,10,0" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsButtonX}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.ButtonX, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Right Buttons Y --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Width="120" - Margin="0,0,10,0" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsButtonY}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.ButtonY, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - </StackPanel> - </StackPanel> - </Border> - <!-- Right DPad --> - <Border - Padding="10" - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - CornerRadius="5" - IsVisible="{Binding IsRight}" - Margin="0,5,0,0"> - <StackPanel Orientation="Vertical"> - <TextBlock - Margin="0,0,0,10" - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsRStick}" /> - <!-- Right Joystick Keyboard --> - <StackPanel - IsVisible="{Binding !IsController}" - Orientation="Vertical"> - <!-- Right Joystick Button --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickButton}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.RightKeyboardStickButton, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Right Joystick Up --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickUp}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.RightStickUp, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Right Joystick Down --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickDown}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.RightStickDown, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Right Joystick Left --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickLeft}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.RightStickLeft, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Right Joystick Right --> - <StackPanel - Margin="0,0,0,4" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickRight}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.RightStickRight, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - </StackPanel> - <!-- Right Joystick Controller --> - <StackPanel - IsVisible="{Binding IsController}" - Orientation="Vertical"> - <!-- Right Joystick Button --> - <StackPanel - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickButton}" - TextAlignment="Center" /> - <ToggleButton> - <TextBlock - Text="{ReflectionBinding Configuration.RightControllerStickButton, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <!-- Right Joystick Stick --> - <StackPanel - Margin="0,4,0,4" - Background="{DynamicResource ThemeDarkColor}" - Orientation="Horizontal"> - <TextBlock - Margin="0,0,10,0" - Width="120" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickStick}" - TextAlignment="Center" /> - <ToggleButton Tag="stick"> - <TextBlock - Text="{ReflectionBinding Configuration.RightJoystick, Mode=TwoWay, Converter={StaticResource Key}}" - TextAlignment="Center" /> - </ToggleButton> - </StackPanel> - <Separator Margin="0,8,0,8" Height="1" /> - <CheckBox IsChecked="{ReflectionBinding Configuration.RightInvertStickX}"> - <TextBlock Text="{locale:Locale ControllerSettingsStickInvertXAxis}" /> - </CheckBox> - <CheckBox IsChecked="{ReflectionBinding Configuration.RightInvertStickY}"> - <TextBlock Text="{locale:Locale ControllerSettingsStickInvertYAxis}" /> - </CheckBox> - <CheckBox IsChecked="{ReflectionBinding Configuration.RightRotate90}"> - <TextBlock Text="{locale:Locale ControllerSettingsRotate90}" /> - </CheckBox> - <Separator Margin="0,8,0,8" Height="1" /> - <StackPanel Orientation="Vertical"> - <TextBlock - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickDeadzone}" /> - <StackPanel - HorizontalAlignment="Center" - VerticalAlignment="Center" - Orientation="Horizontal"> - <controls:SliderScroll - Width="130" - Maximum="1" - TickFrequency="0.01" - IsSnapToTickEnabled="True" - SmallChange="0.01" - Padding="0" - VerticalAlignment="Center" - Minimum="0" - Value="{ReflectionBinding Configuration.DeadzoneRight, Mode=TwoWay}" /> - <TextBlock - VerticalAlignment="Center" - Width="25" - Text="{ReflectionBinding Configuration.DeadzoneRight, StringFormat=\{0:0.00\}}" /> - </StackPanel> - <TextBlock - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickRange}" /> - <StackPanel - HorizontalAlignment="Center" - VerticalAlignment="Center" - Orientation="Horizontal"> - <controls:SliderScroll - Width="130" - Maximum="2" - TickFrequency="0.01" - IsSnapToTickEnabled="True" - SmallChange="0.01" - Minimum="0" - Value="{ReflectionBinding Configuration.RangeRight, Mode=TwoWay}" /> - <TextBlock - VerticalAlignment="Center" - Width="25" - Text="{ReflectionBinding Configuration.RangeRight, StringFormat=\{0:0.00\}}" /> - </StackPanel> - </StackPanel> - </StackPanel> - </StackPanel> - </Border> - </StackPanel> - </Grid> - </StackPanel> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml.cs deleted file mode 100644 index 35129706..00000000 --- a/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml.cs +++ /dev/null @@ -1,181 +0,0 @@ -using Avalonia.Controls; -using Avalonia.Controls.Primitives; -using Avalonia.Input; -using Avalonia.Interactivity; -using Avalonia.LogicalTree; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Helpers; -using Ryujinx.Ava.UI.Models; -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Common.Configuration.Hid.Controller; -using Ryujinx.Input; -using Ryujinx.Input.Assigner; -using System; - -namespace Ryujinx.Ava.UI.Views.Input -{ - public partial class ControllerInputView : UserControl - { - private bool _dialogOpen; - - private ButtonKeyAssigner _currentAssigner; - internal ControllerInputViewModel ViewModel { get; set; } - - public ControllerInputView() - { - DataContext = ViewModel = new ControllerInputViewModel(this); - - InitializeComponent(); - - foreach (ILogical visual in SettingButtons.GetLogicalDescendants()) - { - if (visual is ToggleButton button && visual is not CheckBox) - { - button.IsCheckedChanged += Button_IsCheckedChanged; - } - } - } - - protected override void OnPointerReleased(PointerReleasedEventArgs e) - { - base.OnPointerReleased(e); - - if (_currentAssigner != null && _currentAssigner.ToggledButton != null && !_currentAssigner.ToggledButton.IsPointerOver) - { - _currentAssigner.Cancel(); - } - } - - private void Button_IsCheckedChanged(object sender, RoutedEventArgs e) - { - if (sender is ToggleButton button) - { - if ((bool)button.IsChecked) - { - if (_currentAssigner != null && button == _currentAssigner.ToggledButton) - { - return; - } - - bool isStick = button.Tag != null && button.Tag.ToString() == "stick"; - - if (_currentAssigner == null) - { - _currentAssigner = new ButtonKeyAssigner(button); - - this.Focus(NavigationMethod.Pointer); - - PointerPressed += MouseClick; - - IKeyboard keyboard = (IKeyboard)ViewModel.AvaloniaKeyboardDriver.GetGamepad("0"); // Open Avalonia keyboard for cancel operations. - IButtonAssigner assigner = CreateButtonAssigner(isStick); - - _currentAssigner.ButtonAssigned += (sender, e) => - { - if (e.IsAssigned) - { - ViewModel.IsModified = true; - } - }; - - _currentAssigner.GetInputAndAssign(assigner, keyboard); - } - else - { - if (_currentAssigner != null) - { - ToggleButton oldButton = _currentAssigner.ToggledButton; - - _currentAssigner.Cancel(); - _currentAssigner = null; - button.IsChecked = false; - } - } - } - else - { - _currentAssigner?.Cancel(); - _currentAssigner = null; - } - } - } - - public void SaveCurrentProfile() - { - ViewModel.Save(); - } - - private IButtonAssigner CreateButtonAssigner(bool forStick) - { - IButtonAssigner assigner; - - var device = ViewModel.Devices[ViewModel.Device]; - - if (device.Type == DeviceType.Keyboard) - { - assigner = new KeyboardKeyAssigner((IKeyboard)ViewModel.SelectedGamepad); - } - else if (device.Type == DeviceType.Controller) - { - assigner = new GamepadButtonAssigner(ViewModel.SelectedGamepad, (ViewModel.Config as StandardControllerInputConfig).TriggerThreshold, forStick); - } - else - { - throw new Exception("Controller not supported"); - } - - return assigner; - } - - private void MouseClick(object sender, PointerPressedEventArgs e) - { - bool shouldUnbind = false; - - if (e.GetCurrentPoint(this).Properties.IsMiddleButtonPressed) - { - shouldUnbind = true; - } - - _currentAssigner?.Cancel(shouldUnbind); - - PointerPressed -= MouseClick; - } - - private async void PlayerIndexBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e) - { - if (ViewModel.IsModified && !_dialogOpen) - { - _dialogOpen = true; - - var result = await ContentDialogHelper.CreateConfirmationDialog( - LocaleManager.Instance[LocaleKeys.DialogControllerSettingsModifiedConfirmMessage], - LocaleManager.Instance[LocaleKeys.DialogControllerSettingsModifiedConfirmSubMessage], - LocaleManager.Instance[LocaleKeys.InputDialogYes], - LocaleManager.Instance[LocaleKeys.InputDialogNo], - LocaleManager.Instance[LocaleKeys.RyujinxConfirm]); - - if (result == UserResult.Yes) - { - ViewModel.Save(); - } - - _dialogOpen = false; - - ViewModel.IsModified = false; - - if (e.AddedItems.Count > 0) - { - var player = (PlayerModel)e.AddedItems[0]; - ViewModel.PlayerId = player.Id; - } - } - } - - public void Dispose() - { - _currentAssigner?.Cancel(); - _currentAssigner = null; - ViewModel.Dispose(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml b/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml deleted file mode 100644 index a6b587f6..00000000 --- a/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml +++ /dev/null @@ -1,171 +0,0 @@ -<UserControl - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - mc:Ignorable="d" - x:Class="Ryujinx.Ava.UI.Views.Input.MotionInputView" - x:DataType="viewModels:MotionInputViewModel" - Focusable="True"> - <Grid Margin="10"> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition /> - </Grid.RowDefinitions> - <StackPanel Orientation="Vertical"> - <StackPanel - Orientation="Horizontal" - HorizontalAlignment="Center"> - <TextBlock - Margin="0" - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsMotionGyroSensitivity}" /> - <controls:SliderScroll - Margin="0,-5,0,-5" - Width="150" - MaxWidth="150" - TickFrequency="1" - IsSnapToTickEnabled="True" - SmallChange="0.01" - Maximum="100" - Minimum="0" - Value="{Binding Sensitivity, Mode=TwoWay}" /> - <TextBlock - HorizontalAlignment="Center" - Margin="5, 0" - Text="{Binding Sensitivity, StringFormat=\{0:0\}%}" /> - </StackPanel> - <StackPanel - Orientation="Horizontal" - HorizontalAlignment="Center"> - <TextBlock - Margin="0" - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsMotionGyroDeadzone}" /> - <controls:SliderScroll - Margin="0,-5,0,-5" - Width="150" - MaxWidth="150" - TickFrequency="1" - IsSnapToTickEnabled="True" - SmallChange="0.01" - Maximum="100" - Minimum="0" - Value="{Binding GyroDeadzone, Mode=TwoWay}" /> - <TextBlock - VerticalAlignment="Center" - Margin="5, 0" - Text="{Binding GyroDeadzone, StringFormat=\{0:0.00\}}" /> - </StackPanel> - <Separator - Height="1" - Margin="0,5" /> - <CheckBox - Margin="5" - IsChecked="{Binding EnableCemuHookMotion}"> - <TextBlock - Margin="0,3,0,0" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsMotionUseCemuhookCompatibleMotion}" /> - </CheckBox> - </StackPanel> - <Border - Grid.Row="1" - Padding="20,5" - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - CornerRadius="5" - HorizontalAlignment="Stretch"> - <Grid VerticalAlignment="Top"> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="*" /> - </Grid.RowDefinitions> - <StackPanel - Grid.Row="1" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Orientation="Vertical"> - <StackPanel - HorizontalAlignment="Center" - VerticalAlignment="Center" - Orientation="Horizontal"> - <TextBlock - Margin="5" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsMotionServerHost}" /> - <TextBox - Height="30" - MinWidth="100" - MaxWidth="100" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{Binding DsuServerHost, Mode=TwoWay}" /> - <TextBlock - Margin="5" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text=":" /> - <TextBox - Height="30" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Text="{Binding DsuServerPort, Mode=TwoWay}" /> - </StackPanel> - <StackPanel Orientation="Vertical"> - <Grid> - <Grid.RowDefinitions> - <RowDefinition /> - <RowDefinition /> - </Grid.RowDefinitions> - <Grid.ColumnDefinitions> - <ColumnDefinition /> - <ColumnDefinition /> - </Grid.ColumnDefinitions> - <TextBlock - Margin="0,10,0,0" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsMotionControllerSlot}" /> - <ui:NumberBox - Grid.Row="0" - Grid.Column="1" - Name="CemuHookSlotUpDown" - SmallChange="1" - LargeChange="1" - Maximum="4" - Minimum="0" - Value="{Binding Slot}" /> - <TextBlock - Margin="0,10,0,0" - Grid.Row="1" - Grid.Column="0" - VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsMotionRightJoyConSlot}" /> - <ui:NumberBox - Grid.Row="1" - Grid.Column="1" - Name="CemuHookRightJoyConSlotUpDown" - SmallChange="1" - LargeChange="1" - Maximum="4" - Minimum="0" - Value="{Binding AltSlot}" /> - </Grid> - </StackPanel> - <CheckBox - HorizontalAlignment="Center" - IsChecked="{Binding MirrorInput, Mode=TwoWay}"> - <TextBlock - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsMotionMirrorInput}" /> - </CheckBox> - </StackPanel> - </Grid> - </Border> - </Grid> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml.cs deleted file mode 100644 index 1b340752..00000000 --- a/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml.cs +++ /dev/null @@ -1,68 +0,0 @@ -using Avalonia.Controls; -using FluentAvalonia.UI.Controls; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Models; -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Common.Configuration.Hid.Controller; -using System.Threading.Tasks; - -namespace Ryujinx.Ava.UI.Views.Input -{ - public partial class MotionInputView : UserControl - { - private readonly MotionInputViewModel _viewModel; - - public MotionInputView() - { - InitializeComponent(); - } - - public MotionInputView(ControllerInputViewModel viewModel) - { - var config = viewModel.Configuration as InputConfiguration<GamepadInputId, StickInputId>; - - _viewModel = new MotionInputViewModel - { - Slot = config.Slot, - AltSlot = config.AltSlot, - DsuServerHost = config.DsuServerHost, - DsuServerPort = config.DsuServerPort, - MirrorInput = config.MirrorInput, - Sensitivity = config.Sensitivity, - GyroDeadzone = config.GyroDeadzone, - EnableCemuHookMotion = config.EnableCemuHookMotion, - }; - - InitializeComponent(); - DataContext = _viewModel; - } - - public static async Task Show(ControllerInputViewModel viewModel) - { - MotionInputView content = new(viewModel); - - ContentDialog contentDialog = new() - { - Title = LocaleManager.Instance[LocaleKeys.ControllerMotionTitle], - PrimaryButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsSave], - SecondaryButtonText = "", - CloseButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsClose], - Content = content, - }; - contentDialog.PrimaryButtonClick += (sender, args) => - { - var config = viewModel.Configuration as InputConfiguration<GamepadInputId, StickInputId>; - config.Slot = content._viewModel.Slot; - config.Sensitivity = content._viewModel.Sensitivity; - config.GyroDeadzone = content._viewModel.GyroDeadzone; - config.AltSlot = content._viewModel.AltSlot; - config.DsuServerHost = content._viewModel.DsuServerHost; - config.DsuServerPort = content._viewModel.DsuServerPort; - config.EnableCemuHookMotion = content._viewModel.EnableCemuHookMotion; - config.MirrorInput = content._viewModel.MirrorInput; - }; - - await contentDialog.ShowAsync(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml b/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml deleted file mode 100644 index 5b7087a4..00000000 --- a/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml +++ /dev/null @@ -1,62 +0,0 @@ -<UserControl - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - mc:Ignorable="d" - x:Class="Ryujinx.Ava.UI.Views.Input.RumbleInputView" - x:DataType="viewModels:RumbleInputViewModel" - Focusable="True"> - <Grid Margin="10"> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition /> - </Grid.RowDefinitions> - <StackPanel Orientation="Vertical"> - <StackPanel Orientation="Horizontal"> - <TextBlock - Width="100" - TextWrapping="WrapWithOverflow" - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsRumbleStrongMultiplier}" /> - <controls:SliderScroll - Margin="0,-5,0,-5" - Width="200" - TickFrequency="0.01" - IsSnapToTickEnabled="True" - SmallChange="0.01" - Maximum="10" - Minimum="0" - Value="{Binding StrongRumble, Mode=TwoWay}" /> - <TextBlock - VerticalAlignment="Center" - Margin="5,0" - Text="{Binding StrongRumble, StringFormat=\{0:0.00\}}" /> - </StackPanel> - <StackPanel Orientation="Horizontal"> - <TextBlock - Width="100" - TextWrapping="WrapWithOverflow" - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsRumbleWeakMultiplier}" /> - <controls:SliderScroll - Margin="0,-5,0,-5" - Width="200" - MaxWidth="200" - Maximum="10" - TickFrequency="0.01" - IsSnapToTickEnabled="True" - SmallChange="0.01" - Minimum="0" - Value="{Binding WeakRumble, Mode=TwoWay}" /> - <TextBlock - VerticalAlignment="Center" - Margin="5,0" - Text="{Binding WeakRumble, StringFormat=\{0:0.00\}}" /> - </StackPanel> - </StackPanel> - </Grid> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml.cs deleted file mode 100644 index 9307f872..00000000 --- a/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml.cs +++ /dev/null @@ -1,58 +0,0 @@ -using Avalonia.Controls; -using FluentAvalonia.UI.Controls; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Models; -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Common.Configuration.Hid.Controller; -using System.Threading.Tasks; - -namespace Ryujinx.Ava.UI.Views.Input -{ - public partial class RumbleInputView : UserControl - { - private readonly RumbleInputViewModel _viewModel; - - public RumbleInputView() - { - InitializeComponent(); - } - - public RumbleInputView(ControllerInputViewModel viewModel) - { - var config = viewModel.Configuration as InputConfiguration<GamepadInputId, StickInputId>; - - _viewModel = new RumbleInputViewModel - { - StrongRumble = config.StrongRumble, - WeakRumble = config.WeakRumble, - }; - - InitializeComponent(); - - DataContext = _viewModel; - } - - public static async Task Show(ControllerInputViewModel viewModel) - { - RumbleInputView content = new(viewModel); - - ContentDialog contentDialog = new() - { - Title = LocaleManager.Instance[LocaleKeys.ControllerRumbleTitle], - PrimaryButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsSave], - SecondaryButtonText = "", - CloseButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsClose], - Content = content, - }; - - contentDialog.PrimaryButtonClick += (sender, args) => - { - var config = viewModel.Configuration as InputConfiguration<GamepadInputId, StickInputId>; - config.StrongRumble = content._viewModel.StrongRumble; - config.WeakRumble = content._viewModel.WeakRumble; - }; - - await contentDialog.ShowAsync(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml b/src/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml deleted file mode 100644 index 30358ada..00000000 --- a/src/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml +++ /dev/null @@ -1,203 +0,0 @@ -<UserControl - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - mc:Ignorable="d" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - x:DataType="viewModels:MainWindowViewModel" - x:Class="Ryujinx.Ava.UI.Views.Main.MainMenuBarView"> - <Design.DataContext> - <viewModels:MainWindowViewModel /> - </Design.DataContext> - <DockPanel HorizontalAlignment="Stretch"> - <Menu - Name="Menu" - Height="35" - Margin="0" - HorizontalAlignment="Left"> - <Menu.ItemsPanel> - <ItemsPanelTemplate> - <DockPanel Margin="0" HorizontalAlignment="Stretch" /> - </ItemsPanelTemplate> - </Menu.ItemsPanel> - <MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarFile}"> - <MenuItem - Command="{Binding OpenFile}" - Header="{locale:Locale MenuBarFileOpenFromFile}" - IsEnabled="{Binding EnableNonGameRunningControls}" - ToolTip.Tip="{locale:Locale LoadApplicationFileTooltip}" /> - <MenuItem - Command="{Binding OpenFolder}" - Header="{locale:Locale MenuBarFileOpenUnpacked}" - IsEnabled="{Binding EnableNonGameRunningControls}" - ToolTip.Tip="{locale:Locale LoadApplicationFolderTooltip}" /> - <MenuItem Header="{locale:Locale MenuBarFileOpenApplet}" IsEnabled="{Binding IsAppletMenuActive}"> - <MenuItem - Click="OpenMiiApplet" - Header="Mii Edit Applet" - ToolTip.Tip="{locale:Locale MenuBarFileOpenAppletOpenMiiAppletToolTip}" /> - </MenuItem> - <Separator /> - <MenuItem - Command="{Binding OpenRyujinxFolder}" - Header="{locale:Locale MenuBarFileOpenEmuFolder}" - ToolTip.Tip="{locale:Locale OpenRyujinxFolderTooltip}" /> - <MenuItem - Command="{Binding OpenLogsFolder}" - Header="{locale:Locale MenuBarFileOpenLogsFolder}" - ToolTip.Tip="{locale:Locale OpenRyujinxLogsTooltip}" /> - <Separator /> - <MenuItem - Click="CloseWindow" - Header="{locale:Locale MenuBarFileExit}" - ToolTip.Tip="{locale:Locale ExitTooltip}" /> - </MenuItem> - <MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarOptions}"> - <MenuItem - Padding="-10,0,0,0" - Command="{Binding ToggleFullscreen}" - Header="{locale:Locale MenuBarOptionsToggleFullscreen}" - InputGesture="F11" /> - <MenuItem - Padding="0" - Command="{Binding ToggleStartGamesInFullscreen}" - Header="{locale:Locale MenuBarOptionsStartGamesInFullscreen}"> - <MenuItem.Icon> - <CheckBox - MinWidth="{DynamicResource CheckBoxSize}" - MinHeight="{DynamicResource CheckBoxSize}" - IsChecked="{Binding StartGamesInFullscreen, Mode=TwoWay}" - Padding="0" /> - </MenuItem.Icon> - <MenuItem.Styles> - <Style Selector="Viewbox#PART_IconPresenter"> - <Setter Property="MaxHeight" Value="36" /> - <Setter Property="MinHeight" Value="36" /> - <Setter Property="MaxWidth" Value="36" /> - <Setter Property="MinWidth" Value="36" /> - </Style> - <Style Selector="ContentPresenter#PART_HeaderPresenter"> - <Setter Property="Padding" Value="-10,0,0,0" /> - </Style> - </MenuItem.Styles> - </MenuItem> - <MenuItem - Padding="0" - IsVisible="{Binding ShowConsoleVisible}" - Command="{Binding ToggleShowConsole}" - Header="{locale:Locale MenuBarOptionsShowConsole}"> - <MenuItem.Icon> - <CheckBox - MinWidth="{DynamicResource CheckBoxSize}" - MinHeight="{DynamicResource CheckBoxSize}" - IsChecked="{Binding ShowConsole, Mode=TwoWay}" - Padding="0" /> - </MenuItem.Icon> - <MenuItem.Styles> - <Style Selector="Viewbox#PART_IconPresenter"> - <Setter Property="MaxHeight" Value="36" /> - <Setter Property="MinHeight" Value="36" /> - <Setter Property="MaxWidth" Value="36" /> - <Setter Property="MinWidth" Value="36" /> - </Style> - <Style Selector="ContentPresenter#PART_HeaderPresenter"> - <Setter Property="Padding" Value="-10,0,0,0" /> - </Style> - </MenuItem.Styles> - </MenuItem> - <Separator /> - <MenuItem - Name="ChangeLanguageMenuItem" - Padding="-10,0,0,0" - Header="{locale:Locale MenuBarOptionsChangeLanguage}" /> - <MenuItem - Name="ToggleFileTypesMenuItem" - Padding="-10,0,0,0" - Header="{locale:Locale MenuBarShowFileTypes}" /> - <Separator /> - <MenuItem - Click="OpenSettings" - Padding="-10,0,0,0" - Header="{locale:Locale MenuBarOptionsSettings}" - ToolTip.Tip="{locale:Locale OpenSettingsTooltip}" /> - <MenuItem - Command="{Binding ManageProfiles}" - Padding="-10,0,0,0" - Header="{locale:Locale MenuBarOptionsManageUserProfiles}" - IsEnabled="{Binding EnableNonGameRunningControls}" - ToolTip.Tip="{locale:Locale OpenProfileManagerTooltip}" /> - </MenuItem> - <MenuItem - Name="ActionsMenuItem" - VerticalAlignment="Center" - Header="{locale:Locale MenuBarActions}" - IsEnabled="{Binding IsGameRunning}"> - <MenuItem - Click="PauseEmulation_Click" - Header="{locale:Locale MenuBarOptionsPauseEmulation}" - InputGesture="{Binding PauseKey}" - IsEnabled="{Binding !IsPaused}" - IsVisible="{Binding !IsPaused}" /> - <MenuItem - Click="ResumeEmulation_Click" - Header="{locale:Locale MenuBarOptionsResumeEmulation}" - InputGesture="{Binding PauseKey}" - IsEnabled="{Binding IsPaused}" - IsVisible="{Binding IsPaused}" /> - <MenuItem - Click="StopEmulation_Click" - Header="{locale:Locale MenuBarOptionsStopEmulation}" - InputGesture="Escape" - IsEnabled="{Binding IsGameRunning}" - ToolTip.Tip="{locale:Locale StopEmulationTooltip}" /> - <MenuItem Command="{Binding SimulateWakeUpMessage}" Header="{locale:Locale MenuBarOptionsSimulateWakeUpMessage}" /> - <Separator /> - <MenuItem - Name="ScanAmiiboMenuItem" - AttachedToVisualTree="ScanAmiiboMenuItem_AttachedToVisualTree" - Click="OpenAmiiboWindow" - Header="{locale:Locale MenuBarActionsScanAmiibo}" - IsEnabled="{Binding IsAmiiboRequested}" /> - <MenuItem - Command="{Binding TakeScreenshot}" - Header="{locale:Locale MenuBarFileToolsTakeScreenshot}" - InputGesture="{Binding ScreenshotKey}" - IsEnabled="{Binding IsGameRunning}" /> - <MenuItem - Command="{Binding HideUi}" - Header="{locale:Locale MenuBarFileToolsHideUi}" - InputGesture="{Binding ShowUiKey}" - IsEnabled="{Binding IsGameRunning}" /> - <MenuItem - Click="OpenCheatManagerForCurrentApp" - Header="{locale:Locale GameListContextMenuManageCheat}" - IsEnabled="{Binding IsGameRunning}" /> - </MenuItem> - <MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarTools}"> - <MenuItem Header="{locale:Locale MenuBarToolsInstallFirmware}" IsEnabled="{Binding EnableNonGameRunningControls}"> - <MenuItem Command="{Binding InstallFirmwareFromFile}" Header="{locale:Locale MenuBarFileToolsInstallFirmwareFromFile}" /> - <MenuItem Command="{Binding InstallFirmwareFromFolder}" Header="{locale:Locale MenuBarFileToolsInstallFirmwareFromDirectory}" /> - </MenuItem> - <MenuItem Header="{locale:Locale MenuBarToolsManageFileTypes}" IsVisible="{Binding ManageFileTypesVisible}"> - <MenuItem Header="{locale:Locale MenuBarToolsInstallFileTypes}" Click="InstallFileTypes_Click"/> - <MenuItem Header="{locale:Locale MenuBarToolsUninstallFileTypes}" Click="UninstallFileTypes_Click"/> - </MenuItem> - </MenuItem> - <MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarHelp}"> - <MenuItem - Name="UpdateMenuItem" - IsEnabled="{Binding CanUpdate}" - Click="CheckForUpdates" - Header="{locale:Locale MenuBarHelpCheckForUpdates}" - ToolTip.Tip="{locale:Locale CheckUpdatesTooltip}" /> - <Separator /> - <MenuItem - Click="OpenAboutWindow" - Header="{locale:Locale MenuBarHelpAbout}" - ToolTip.Tip="{locale:Locale OpenAboutTooltip}" /> - </MenuItem> - </Menu> - </DockPanel> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml.cs deleted file mode 100644 index 8dff5086..00000000 --- a/src/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml.cs +++ /dev/null @@ -1,232 +0,0 @@ -using Avalonia; -using Avalonia.Controls; -using Avalonia.Interactivity; -using LibHac.Ncm; -using LibHac.Tools.FsSystem.NcaUtils; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Helpers; -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Ava.UI.Windows; -using Ryujinx.Common; -using Ryujinx.Common.Utilities; -using Ryujinx.Modules; -using Ryujinx.UI.Common; -using Ryujinx.UI.Common.Configuration; -using Ryujinx.UI.Common.Helper; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace Ryujinx.Ava.UI.Views.Main -{ - public partial class MainMenuBarView : UserControl - { - public MainWindow Window { get; private set; } - public MainWindowViewModel ViewModel { get; private set; } - - public MainMenuBarView() - { - InitializeComponent(); - - ToggleFileTypesMenuItem.ItemsSource = GenerateToggleFileTypeItems(); - ChangeLanguageMenuItem.ItemsSource = GenerateLanguageMenuItems(); - } - - private CheckBox[] GenerateToggleFileTypeItems() - { - List<CheckBox> checkBoxes = new(); - - foreach (var item in Enum.GetValues(typeof(FileTypes))) - { - string fileName = Enum.GetName(typeof(FileTypes), item); - checkBoxes.Add(new CheckBox - { - Content = $".{fileName}", - IsChecked = ((FileTypes)item).GetConfigValue(ConfigurationState.Instance.UI.ShownFileTypes), - Command = MiniCommand.Create(() => Window.ToggleFileType(fileName)), - }); - } - - return checkBoxes.ToArray(); - } - - private static MenuItem[] GenerateLanguageMenuItems() - { - List<MenuItem> menuItems = new(); - - string localePath = "Ryujinx.Ava/Assets/Locales"; - string localeExt = ".json"; - - string[] localesPath = EmbeddedResources.GetAllAvailableResources(localePath, localeExt); - - Array.Sort(localesPath); - - foreach (string locale in localesPath) - { - string languageCode = Path.GetFileNameWithoutExtension(locale).Split('.').Last(); - string languageJson = EmbeddedResources.ReadAllText($"{localePath}/{languageCode}{localeExt}"); - var strings = JsonHelper.Deserialize(languageJson, CommonJsonContext.Default.StringDictionary); - - if (!strings.TryGetValue("Language", out string languageName)) - { - languageName = languageCode; - } - - MenuItem menuItem = new() - { - Header = languageName, - Command = MiniCommand.Create(() => - { - MainWindowViewModel.ChangeLanguage(languageCode); - }), - }; - - menuItems.Add(menuItem); - } - - return menuItems.ToArray(); - } - - protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) - { - base.OnAttachedToVisualTree(e); - - if (VisualRoot is MainWindow window) - { - Window = window; - } - - ViewModel = Window.ViewModel; - DataContext = ViewModel; - } - - private async void StopEmulation_Click(object sender, RoutedEventArgs e) - { - await Window.ViewModel.AppHost?.ShowExitPrompt(); - } - - private void PauseEmulation_Click(object sender, RoutedEventArgs e) - { - Window.ViewModel.AppHost?.Pause(); - } - - private void ResumeEmulation_Click(object sender, RoutedEventArgs e) - { - Window.ViewModel.AppHost?.Resume(); - } - - public async void OpenSettings(object sender, RoutedEventArgs e) - { - Window.SettingsWindow = new(Window.VirtualFileSystem, Window.ContentManager); - - await Window.SettingsWindow.ShowDialog(Window); - - Window.SettingsWindow = null; - - ViewModel.LoadConfigurableHotKeys(); - } - - public async void OpenMiiApplet(object sender, RoutedEventArgs e) - { - string contentPath = ViewModel.ContentManager.GetInstalledContentPath(0x0100000000001009, StorageId.BuiltInSystem, NcaContentType.Program); - - if (!string.IsNullOrEmpty(contentPath)) - { - await ViewModel.LoadApplication(contentPath, false, "Mii Applet"); - } - } - - public async void OpenAmiiboWindow(object sender, RoutedEventArgs e) - { - if (!ViewModel.IsAmiiboRequested) - { - return; - } - - if (ViewModel.AppHost.Device.System.SearchingForAmiibo(out int deviceId)) - { - string titleId = ViewModel.AppHost.Device.Processes.ActiveApplication.ProgramIdText.ToUpper(); - AmiiboWindow window = new(ViewModel.ShowAll, ViewModel.LastScannedAmiiboId, titleId); - - await window.ShowDialog(Window); - - if (window.IsScanned) - { - ViewModel.ShowAll = window.ViewModel.ShowAllAmiibo; - ViewModel.LastScannedAmiiboId = window.ScannedAmiibo.GetId(); - - ViewModel.AppHost.Device.System.ScanAmiibo(deviceId, ViewModel.LastScannedAmiiboId, window.ViewModel.UseRandomUuid); - } - } - } - - public async void OpenCheatManagerForCurrentApp(object sender, RoutedEventArgs e) - { - if (!ViewModel.IsGameRunning) - { - return; - } - - string name = ViewModel.AppHost.Device.Processes.ActiveApplication.ApplicationControlProperties.Title[(int)ViewModel.AppHost.Device.System.State.DesiredTitleLanguage].NameString.ToString(); - - await new CheatWindow( - Window.VirtualFileSystem, - ViewModel.AppHost.Device.Processes.ActiveApplication.ProgramIdText, - name, - Window.ViewModel.SelectedApplication.Path).ShowDialog(Window); - - ViewModel.AppHost.Device.EnableCheats(); - } - - private void ScanAmiiboMenuItem_AttachedToVisualTree(object sender, VisualTreeAttachmentEventArgs e) - { - if (sender is MenuItem) - { - ViewModel.IsAmiiboRequested = Window.ViewModel.AppHost.Device.System.SearchingForAmiibo(out _); - } - } - - private async void InstallFileTypes_Click(object sender, RoutedEventArgs e) - { - if (FileAssociationHelper.Install()) - { - await ContentDialogHelper.CreateInfoDialog(LocaleManager.Instance[LocaleKeys.DialogInstallFileTypesSuccessMessage], string.Empty, LocaleManager.Instance[LocaleKeys.InputDialogOk], string.Empty, string.Empty); - } - else - { - await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogInstallFileTypesErrorMessage]); - } - } - - private async void UninstallFileTypes_Click(object sender, RoutedEventArgs e) - { - if (FileAssociationHelper.Uninstall()) - { - await ContentDialogHelper.CreateInfoDialog(LocaleManager.Instance[LocaleKeys.DialogUninstallFileTypesSuccessMessage], string.Empty, LocaleManager.Instance[LocaleKeys.InputDialogOk], string.Empty, string.Empty); - } - else - { - await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogUninstallFileTypesErrorMessage]); - } - } - - public async void CheckForUpdates(object sender, RoutedEventArgs e) - { - if (Updater.CanUpdate(true)) - { - await Updater.BeginParse(Window, true); - } - } - - public async void OpenAboutWindow(object sender, RoutedEventArgs e) - { - await AboutWindow.Show(); - } - - public void CloseWindow(object sender, RoutedEventArgs e) - { - Window.Close(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml b/src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml deleted file mode 100644 index f9e192e6..00000000 --- a/src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml +++ /dev/null @@ -1,289 +0,0 @@ -<UserControl - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - xmlns:config="clr-namespace:Ryujinx.Common.Configuration;assembly=Ryujinx.Common" - mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - x:Class="Ryujinx.Ava.UI.Views.Main.MainStatusBarView" - x:DataType="viewModels:MainWindowViewModel"> - <Design.DataContext> - <viewModels:MainWindowViewModel /> - </Design.DataContext> - <Grid - Name="StatusBar" - Margin="0" - MinHeight="22" - HorizontalAlignment="Stretch" - VerticalAlignment="Bottom" - Background="{DynamicResource ThemeContentBackgroundColor}" - DockPanel.Dock="Bottom" - IsVisible="{Binding ShowMenuAndStatusBar}"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <StackPanel - Grid.Column="0" - Margin="5" - VerticalAlignment="Center" - IsVisible="{Binding EnableNonGameRunningControls}"> - <Grid Margin="0"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition /> - </Grid.ColumnDefinitions> - <Button - Width="25" - Height="25" - MinWidth="0" - Margin="0,0,5,0" - VerticalAlignment="Center" - Background="Transparent" - Click="Refresh_OnClick"> - <ui:SymbolIcon - Width="50" - Height="100" - Symbol="Refresh" /> - </Button> - <TextBlock - Name="LoadStatus" - Grid.Column="1" - Margin="0,0,5,0" - VerticalAlignment="Center" - IsVisible="{Binding EnableNonGameRunningControls}" - Text="{locale:Locale StatusBarGamesLoaded}" /> - <ProgressBar - Name="LoadProgressBar" - Grid.Column="2" - Height="6" - VerticalAlignment="Center" - Foreground="{DynamicResource SystemAccentColorLight2}" - IsVisible="{Binding StatusBarVisible}" - Maximum="{Binding StatusBarProgressMaximum}" - Value="{Binding StatusBarProgressValue}" /> - </Grid> - </StackPanel> - <StackPanel - Grid.Column="1" - Margin="0,2" - HorizontalAlignment="Left" - VerticalAlignment="Center" - IsVisible="{Binding IsGameRunning}" - MaxHeight="18" - Orientation="Horizontal"> - <TextBlock - Name="VsyncStatus" - Margin="5,0,5,0" - HorizontalAlignment="Left" - VerticalAlignment="Center" - Foreground="{Binding VsyncColor}" - IsVisible="{Binding !ShowLoadProgress}" - PointerReleased="VsyncStatus_PointerReleased" - Text="VSync" - TextAlignment="Start" /> - <Border - Width="2" - Height="12" - Margin="0" - BorderBrush="Gray" - Background="Gray" - BorderThickness="1" - IsVisible="{Binding !ShowLoadProgress}" /> - <TextBlock - Name="DockedStatus" - Margin="5,0,5,0" - HorizontalAlignment="Left" - VerticalAlignment="Center" - IsVisible="{Binding !ShowLoadProgress}" - PointerReleased="DockedStatus_PointerReleased" - Text="{Binding DockedStatusText}" - TextAlignment="Start" /> - <Border - Width="2" - Height="12" - Margin="0" - BorderBrush="Gray" - Background="Gray" - BorderThickness="1" - IsVisible="{Binding !ShowLoadProgress}" /> - <SplitButton - Name="AspectRatioStatus" - Padding="5,0,5,0" - HorizontalAlignment="Left" - VerticalAlignment="Center" - Background="Transparent" - BorderThickness="0" - CornerRadius="0" - IsVisible="{Binding !ShowLoadProgress}" - Content="{Binding AspectRatioStatusText}" - Click="AspectRatioStatus_OnClick" - ToolTip.Tip="{locale:Locale AspectRatioTooltip}"> - <SplitButton.Styles> - <Style Selector="Border#SeparatorBorder"> - <Setter Property="Opacity" Value="0" /> - </Style> - </SplitButton.Styles> - <SplitButton.Flyout> - <MenuFlyout Placement="Bottom" ShowMode="TransientWithDismissOnPointerMoveAway"> - <MenuItem - Header="{locale:Locale SettingsTabGraphicsAspectRatio4x3}" - Command="{Binding SetAspectRatio}" - CommandParameter="{x:Static config:AspectRatio.Fixed4x3}"/> - <MenuItem - Header="{locale:Locale SettingsTabGraphicsAspectRatio16x9}" - Command="{Binding SetAspectRatio}" - CommandParameter="{x:Static config:AspectRatio.Fixed16x9}"/> - <MenuItem - Header="{locale:Locale SettingsTabGraphicsAspectRatio16x10}" - Command="{Binding SetAspectRatio}" - CommandParameter="{x:Static config:AspectRatio.Fixed16x10}"/> - <MenuItem - Header="{locale:Locale SettingsTabGraphicsAspectRatio21x9}" - Command="{Binding SetAspectRatio}" - CommandParameter="{x:Static config:AspectRatio.Fixed21x9}"/> - <MenuItem - Header="{locale:Locale SettingsTabGraphicsAspectRatio32x9}" - Command="{Binding SetAspectRatio}" - CommandParameter="{x:Static config:AspectRatio.Fixed32x9}"/> - <MenuItem - Header="{locale:Locale SettingsTabGraphicsAspectRatioStretch}" - Command="{Binding SetAspectRatio}" - CommandParameter="{x:Static config:AspectRatio.Stretched}"/> - </MenuFlyout> - </SplitButton.Flyout> - </SplitButton> - <Border - Width="2" - Height="12" - Margin="0" - BorderBrush="Gray" - Background="Gray" - BorderThickness="1" - IsVisible="{Binding !ShowLoadProgress}" /> - <ToggleSplitButton - Name="VolumeStatus" - Padding="5,0,5,0" - HorizontalAlignment="Left" - VerticalAlignment="Center" - VerticalContentAlignment="Center" - Content="{Binding VolumeStatusText}" - IsChecked="{Binding VolumeMuted}" - IsVisible="{Binding !ShowLoadProgress}" - PointerWheelChanged="VolumeStatus_OnPointerWheelChanged" - Background="Transparent" - BorderThickness="0" - CornerRadius="0"> - <ToggleSplitButton.Styles> - <Style Selector=":checked"> - <Style Selector="^:checked ContentPresenter"> - <Setter Property="Foreground" Value="{DynamicResource ThemeForegroundColor}" /> - </Style> - </Style> - <Style Selector="Border#SeparatorBorder"> - <Setter Property="Opacity" Value="0" /> - </Style> - </ToggleSplitButton.Styles> - <ToggleSplitButton.Flyout> - <Flyout Placement="Bottom" ShowMode="TransientWithDismissOnPointerMoveAway"> - <Grid Margin="0"> - <controls:SliderScroll - MaxHeight="40" - Width="150" - Margin="0" - Padding="0" - IsSnapToTickEnabled="True" - LargeChange="0.05" - Maximum="1" - Minimum="0" - SmallChange="0.01" - TickFrequency="0.05" - ToolTip.Tip="{locale:Locale AudioVolumeTooltip}" - Value="{Binding Volume}" /> - </Grid> - </Flyout> - </ToggleSplitButton.Flyout> - </ToggleSplitButton> - <Border - Width="2" - Height="12" - Margin="0" - BorderBrush="Gray" - Background="Gray" - BorderThickness="1" - IsVisible="{Binding !ShowLoadProgress}" /> - <TextBlock - Margin="5,0,5,0" - HorizontalAlignment="Left" - VerticalAlignment="Center" - IsVisible="{Binding !ShowLoadProgress}" - Text="{Binding GameStatusText}" - TextAlignment="Start" /> - <Border - Width="2" - Height="12" - Margin="0" - BorderBrush="Gray" - Background="Gray" - BorderThickness="1" - IsVisible="{Binding !ShowLoadProgress}" /> - <TextBlock - Margin="5,0,5,0" - HorizontalAlignment="Left" - VerticalAlignment="Center" - IsVisible="{Binding !ShowLoadProgress}" - Text="{Binding FifoStatusText}" - TextAlignment="Start" /> - <Border - Width="2" - Height="12" - Margin="0" - BorderBrush="Gray" - Background="Gray" - BorderThickness="1" - IsVisible="{Binding !ShowLoadProgress}" /> - <TextBlock - Margin="5,0,5,0" - HorizontalAlignment="Left" - VerticalAlignment="Center" - IsVisible="{Binding !ShowLoadProgress}" - Text="{Binding BackendText}" - TextAlignment="Start" /> - <Border - Width="2" - Height="12" - Margin="0" - BorderBrush="Gray" - Background="Gray" - BorderThickness="1" - IsVisible="{Binding !ShowLoadProgress}" /> - <TextBlock - Margin="5,0,5,0" - HorizontalAlignment="Left" - VerticalAlignment="Center" - IsVisible="{Binding !ShowLoadProgress}" - Text="{Binding GpuNameText}" - TextAlignment="Start" /> - </StackPanel> - <StackPanel - Grid.Column="3" - Margin="0,0,5,0" - VerticalAlignment="Center" - IsVisible="{Binding ShowFirmwareStatus}" - Orientation="Horizontal"> - <TextBlock - Name="FirmwareStatus" - Margin="0" - HorizontalAlignment="Right" - VerticalAlignment="Center" - Text="{locale:Locale StatusBarSystemVersion}" /> - </StackPanel> - </Grid> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml.cs deleted file mode 100644 index 239a7cbf..00000000 --- a/src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml.cs +++ /dev/null @@ -1,72 +0,0 @@ -using Avalonia; -using Avalonia.Controls; -using Avalonia.Input; -using Avalonia.Interactivity; -using Ryujinx.Ava.UI.Windows; -using Ryujinx.Common.Configuration; -using Ryujinx.Common.Logging; -using Ryujinx.UI.Common.Configuration; -using System; - -namespace Ryujinx.Ava.UI.Views.Main -{ - public partial class MainStatusBarView : UserControl - { - public MainWindow Window; - - public MainStatusBarView() - { - InitializeComponent(); - } - - protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) - { - base.OnAttachedToVisualTree(e); - - if (VisualRoot is MainWindow window) - { - Window = window; - } - - DataContext = Window.ViewModel; - } - - private void VsyncStatus_PointerReleased(object sender, PointerReleasedEventArgs e) - { - Window.ViewModel.AppHost.Device.EnableDeviceVsync = !Window.ViewModel.AppHost.Device.EnableDeviceVsync; - - Logger.Info?.Print(LogClass.Application, $"VSync toggled to: {Window.ViewModel.AppHost.Device.EnableDeviceVsync}"); - } - - private void DockedStatus_PointerReleased(object sender, PointerReleasedEventArgs e) - { - ConfigurationState.Instance.System.EnableDockedMode.Value = !ConfigurationState.Instance.System.EnableDockedMode.Value; - } - - private void AspectRatioStatus_OnClick(object sender, RoutedEventArgs e) - { - AspectRatio aspectRatio = ConfigurationState.Instance.Graphics.AspectRatio.Value; - ConfigurationState.Instance.Graphics.AspectRatio.Value = (int)aspectRatio + 1 > Enum.GetNames(typeof(AspectRatio)).Length - 1 ? AspectRatio.Fixed4x3 : aspectRatio + 1; - } - - private void Refresh_OnClick(object sender, RoutedEventArgs e) - { - Window.LoadApplications(); - } - - private void VolumeStatus_OnPointerWheelChanged(object sender, PointerWheelEventArgs e) - { - // Change the volume by 5% at a time - float newValue = Window.ViewModel.Volume + (float)e.Delta.Y * 0.05f; - - Window.ViewModel.Volume = newValue switch - { - < 0 => 0, - > 1 => 1, - _ => newValue, - }; - - e.Handled = true; - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Main/MainViewControls.axaml b/src/Ryujinx.Ava/UI/Views/Main/MainViewControls.axaml deleted file mode 100644 index cc21b5c6..00000000 --- a/src/Ryujinx.Ava/UI/Views/Main/MainViewControls.axaml +++ /dev/null @@ -1,177 +0,0 @@ -<UserControl - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - x:Class="Ryujinx.Ava.UI.Views.Main.MainViewControls" - x:DataType="viewModels:MainWindowViewModel"> - <Design.DataContext> - <viewModels:MainWindowViewModel /> - </Design.DataContext> - <DockPanel - Margin="0,0,0,5" - Height="35" - HorizontalAlignment="Stretch"> - <Button - Width="40" - MinWidth="40" - Margin="5,2,0,2" - VerticalAlignment="Stretch" - Command="{Binding SetListMode}" - IsEnabled="{Binding IsGrid}"> - <ui:FontIcon - Margin="0" - HorizontalAlignment="Stretch" - VerticalAlignment="Center" - FontFamily="avares://FluentAvalonia/Fonts#Symbols" - Glyph="{helpers:GlyphValueConverter List}" /> - </Button> - <Button - Width="40" - MinWidth="40" - Margin="5,2,5,2" - VerticalAlignment="Stretch" - Command="{Binding SetGridMode}" - IsEnabled="{Binding IsList}"> - <ui:FontIcon - Margin="0" - HorizontalAlignment="Stretch" - VerticalAlignment="Center" - FontFamily="avares://FluentAvalonia/Fonts#Symbols" - Glyph="{helpers:GlyphValueConverter Grid}" /> - </Button> - <TextBlock - Margin="10,0" - VerticalAlignment="Center" - Text="{locale:Locale IconSize}" - ToolTip.Tip="{locale:Locale IconSizeTooltip}" /> - <controls:SliderScroll - Width="150" - Height="35" - Margin="5,-10,5,0" - VerticalAlignment="Center" - IsSnapToTickEnabled="True" - SmallChange="1" - Maximum="4" - Minimum="1" - TickFrequency="1" - ToolTip.Tip="{locale:Locale IconSizeTooltip}" - Value="{Binding GridSizeScale}" /> - <CheckBox - Margin="0" - VerticalAlignment="Center" - IsChecked="{Binding ShowNames, Mode=TwoWay}" - IsVisible="{Binding IsGrid}"> - <TextBlock Margin="5,3,0,0" Text="{locale:Locale CommonShowNames}" /> - </CheckBox> - <TextBox - Name="SearchBox" - MinWidth="200" - Margin="5,0,5,0" - HorizontalAlignment="Right" - VerticalAlignment="Center" - DockPanel.Dock="Right" - KeyUp="SearchBox_OnKeyUp" - Text="{Binding SearchText}" - Watermark="{locale:Locale MenuSearch}" /> - <DropDownButton - Width="150" - HorizontalAlignment="Right" - VerticalAlignment="Center" - Content="{Binding SortName}" - DockPanel.Dock="Right"> - <DropDownButton.Flyout> - <Flyout Placement="Bottom"> - <StackPanel - Margin="0" - HorizontalAlignment="Stretch" - Orientation="Vertical"> - <StackPanel> - <RadioButton - Checked="Sort_Checked" - Content="{locale:Locale CommonFavorite}" - GroupName="Sort" - IsChecked="{Binding IsSortedByFavorite, Mode=OneTime}" - Tag="Favorite" /> - <RadioButton - Checked="Sort_Checked" - Content="{locale:Locale GameListHeaderApplication}" - GroupName="Sort" - IsChecked="{Binding IsSortedByTitle, Mode=OneTime}" - Tag="Title" /> - <RadioButton - Checked="Sort_Checked" - Content="{locale:Locale GameListHeaderDeveloper}" - GroupName="Sort" - IsChecked="{Binding IsSortedByDeveloper, Mode=OneTime}" - Tag="Developer" /> - <RadioButton - Checked="Sort_Checked" - Content="{locale:Locale GameListHeaderTimePlayed}" - GroupName="Sort" - IsChecked="{Binding IsSortedByTimePlayed, Mode=OneTime}" - Tag="TotalTimePlayed" /> - <RadioButton - Checked="Sort_Checked" - Content="{locale:Locale GameListHeaderLastPlayed}" - GroupName="Sort" - IsChecked="{Binding IsSortedByLastPlayed, Mode=OneTime}" - Tag="LastPlayed" /> - <RadioButton - Checked="Sort_Checked" - Content="{locale:Locale GameListHeaderFileExtension}" - GroupName="Sort" - IsChecked="{Binding IsSortedByType, Mode=OneTime}" - Tag="FileType" /> - <RadioButton - Checked="Sort_Checked" - Content="{locale:Locale GameListHeaderFileSize}" - GroupName="Sort" - IsChecked="{Binding IsSortedBySize, Mode=OneTime}" - Tag="FileSize" /> - <RadioButton - Checked="Sort_Checked" - Content="{locale:Locale GameListHeaderPath}" - GroupName="Sort" - IsChecked="{Binding IsSortedByPath, Mode=OneTime}" - Tag="Path" /> - </StackPanel> - <Border - Width="60" - Height="2" - Margin="5" - HorizontalAlignment="Stretch" - BorderBrush="White" - BorderThickness="0,1,0,0"> - <Separator Height="0" HorizontalAlignment="Stretch" /> - </Border> - <RadioButton - Checked="Order_Checked" - Content="{locale:Locale OrderAscending}" - GroupName="Order" - IsChecked="{Binding IsAscending, Mode=OneTime}" - Tag="Ascending" /> - <RadioButton - Checked="Order_Checked" - Content="{locale:Locale OrderDescending}" - GroupName="Order" - IsChecked="{Binding !IsAscending, Mode=OneTime}" - Tag="Descending" /> - </StackPanel> - </Flyout> - </DropDownButton.Flyout> - </DropDownButton> - <TextBlock - Margin="10,0" - HorizontalAlignment="Right" - VerticalAlignment="Center" - DockPanel.Dock="Right" - Text="{locale:Locale CommonSort}" /> - </DockPanel> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/Main/MainViewControls.axaml.cs b/src/Ryujinx.Ava/UI/Views/Main/MainViewControls.axaml.cs deleted file mode 100644 index 02fd1bf5..00000000 --- a/src/Ryujinx.Ava/UI/Views/Main/MainViewControls.axaml.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Avalonia; -using Avalonia.Controls; -using Avalonia.Input; -using Avalonia.Interactivity; -using Ryujinx.Ava.Common; -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Ava.UI.Windows; -using System; - -namespace Ryujinx.Ava.UI.Views.Main -{ - public partial class MainViewControls : UserControl - { - public MainWindowViewModel ViewModel; - - public MainViewControls() - { - InitializeComponent(); - } - - protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) - { - base.OnAttachedToVisualTree(e); - - if (VisualRoot is MainWindow window) - { - ViewModel = window.ViewModel; - } - - DataContext = ViewModel; - } - - public void Sort_Checked(object sender, RoutedEventArgs args) - { - if (sender is RadioButton button) - { - ViewModel.Sort(Enum.Parse<ApplicationSort>(button.Tag.ToString())); - } - } - - public void Order_Checked(object sender, RoutedEventArgs args) - { - if (sender is RadioButton button) - { - ViewModel.Sort(button.Tag.ToString() != "Descending"); - } - } - - private void SearchBox_OnKeyUp(object sender, KeyEventArgs e) - { - ViewModel.SearchText = SearchBox.Text; - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsAudioView.axaml b/src/Ryujinx.Ava/UI/Views/Settings/SettingsAudioView.axaml deleted file mode 100644 index 657e07ee..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsAudioView.axaml +++ /dev/null @@ -1,81 +0,0 @@ -<UserControl - x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsAudioView" - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - mc:Ignorable="d" - x:DataType="viewModels:SettingsViewModel"> - <Design.DataContext> - <viewModels:SettingsViewModel /> - </Design.DataContext> - <ScrollViewer - Name="AudioPage" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - HorizontalScrollBarVisibility="Disabled" - VerticalScrollBarVisibility="Auto"> - <Border Classes="settings"> - <StackPanel - Margin="10" - 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"> - <controls:SliderScroll Value="{Binding Volume}" - Margin="250,0,0,0" - ToolTip.Tip="{locale:Locale AudioVolumeTooltip}" - Minimum="0" - Maximum="100" - SmallChange="1" - TickFrequency="1" - IsSnapToTickEnabled="True" - LargeChange="10" - Width="350" /> - </StackPanel> - </StackPanel> - </Border> - </ScrollViewer> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsAudioView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Settings/SettingsAudioView.axaml.cs deleted file mode 100644 index b672a0f2..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsAudioView.axaml.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Avalonia.Controls; - -namespace Ryujinx.Ava.UI.Views.Settings -{ - public partial class SettingsAudioView : UserControl - { - public SettingsAudioView() - { - InitializeComponent(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsCPUView.axaml b/src/Ryujinx.Ava/UI/Views/Settings/SettingsCPUView.axaml deleted file mode 100644 index c74d3dd5..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsCPUView.axaml +++ /dev/null @@ -1,77 +0,0 @@ -<UserControl - x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsCPUView" - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - mc:Ignorable="d" - x:DataType="viewModels:SettingsViewModel"> - <Design.DataContext> - <viewModels:SettingsViewModel /> - </Design.DataContext> - <ScrollViewer - Name="CpuPage" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - HorizontalScrollBarVisibility="Disabled" - VerticalScrollBarVisibility="Auto"> - <Border Classes="settings"> - <StackPanel - Margin="10" - 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> - <CheckBox IsChecked="{Binding UseHypervisor}" - IsVisible="{Binding IsHypervisorAvailable}" - ToolTip.Tip="{locale:Locale UseHypervisorTooltip}"> - <TextBlock Text="{locale:Locale SettingsTabSystemUseHypervisor}" - ToolTip.Tip="{locale:Locale UseHypervisorTooltip}" /> - </CheckBox> - </StackPanel> - </StackPanel> - </Border> - </ScrollViewer> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsCPUView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Settings/SettingsCPUView.axaml.cs deleted file mode 100644 index a475971a..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsCPUView.axaml.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Avalonia.Controls; - -namespace Ryujinx.Ava.UI.Views.Settings -{ - public partial class SettingsCPUView : UserControl - { - public SettingsCPUView() - { - InitializeComponent(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsGraphicsView.axaml b/src/Ryujinx.Ava/UI/Views/Settings/SettingsGraphicsView.axaml deleted file mode 100644 index 22449478..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsGraphicsView.axaml +++ /dev/null @@ -1,301 +0,0 @@ -<UserControl - x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsGraphicsView" - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - Design.Width="1000" - mc:Ignorable="d" - x:DataType="viewModels:SettingsViewModel"> - <Design.DataContext> - <viewModels:SettingsViewModel /> - </Design.DataContext> - <ScrollViewer - Name="GraphicsPage" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - HorizontalScrollBarVisibility="Disabled" - VerticalScrollBarVisibility="Auto"> - <Border Classes="settings"> - <StackPanel - Margin="10" - 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}" - ItemsSource="{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> - <CheckBox IsChecked="{Binding EnableColorSpacePassthrough}" - IsVisible="{Binding ColorSpacePassthroughAvailable}" - ToolTip.Tip="{locale:Locale SettingsEnableColorSpacePassthroughTooltip}"> - <TextBlock Text="{locale:Locale SettingsEnableColorSpacePassthrough}" /> - </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 SettingsTabGraphicsResolutionScaleNative}" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScale2x}" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScale3x}" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScale4x}" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScaleCustom}" /> - </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 - HorizontalAlignment="Stretch" - Orientation="Vertical" - Spacing="10"> - <StackPanel Orientation="Horizontal"> - <TextBlock VerticalAlignment="Center" - ToolTip.Tip="{locale:Locale GraphicsAATooltip}" - Text="{locale:Locale GraphicsAALabel}" - Width="250" /> - <ComboBox Width="350" - HorizontalContentAlignment="Left" - ToolTip.Tip="{locale:Locale GraphicsAATooltip}" - SelectedIndex="{Binding AntiAliasingEffect}"> - <ComboBoxItem> - <TextBlock Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelNone}" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="FXAA" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="{locale:Locale SmaaLow}" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="{locale:Locale SmaaMedium}" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="{locale:Locale SmaaHigh}" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="{locale:Locale SmaaUltra}" /> - </ComboBoxItem> - </ComboBox> - </StackPanel> - </StackPanel> - <StackPanel - HorizontalAlignment="Stretch" - Orientation="Vertical" - Spacing="10"> - <StackPanel Orientation="Horizontal"> - <TextBlock VerticalAlignment="Center" - ToolTip.Tip="{locale:Locale GraphicsScalingFilterTooltip}" - Text="{locale:Locale GraphicsScalingFilterLabel}" - Width="250" /> - <ComboBox Width="350" - HorizontalContentAlignment="Left" - ToolTip.Tip="{locale:Locale GraphicsScalingFilterTooltip}" - SelectedIndex="{Binding ScalingFilter}"> - <ComboBoxItem> - <TextBlock Text="Bilinear" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="Nearest" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="FSR" /> - </ComboBoxItem> - </ComboBox> - <controls:SliderScroll Value="{Binding ScalingFilterLevel}" - ToolTip.Tip="{locale:Locale GraphicsScalingFilterLevelTooltip}" - MinWidth="150" - Margin="10,-3,0,0" - Height="32" - Padding="0,-5" - IsVisible="{Binding IsScalingFilterActive}" - TickFrequency="1" - IsSnapToTickEnabled="True" - LargeChange="10" - SmallChange="1" - VerticalAlignment="Center" - Minimum="0" - Maximum="100" /> - <TextBlock Margin="5,0" - Width="40" - IsVisible="{Binding IsScalingFilterActive}" - Text="{Binding ScalingFilterLevelText}"/> - </StackPanel> - </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> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsGraphicsView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Settings/SettingsGraphicsView.axaml.cs deleted file mode 100644 index 67341330..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsGraphicsView.axaml.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Avalonia.Controls; - -namespace Ryujinx.Ava.UI.Views.Settings -{ - public partial class SettingsGraphicsView : UserControl - { - public SettingsGraphicsView() - { - InitializeComponent(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsHotkeysView.axaml b/src/Ryujinx.Ava/UI/Views/Settings/SettingsHotkeysView.axaml deleted file mode 100644 index b4eae01e..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsHotkeysView.axaml +++ /dev/null @@ -1,103 +0,0 @@ -<UserControl - x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsHotkeysView" - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers" - mc:Ignorable="d" - x:DataType="viewModels:SettingsViewModel" - Focusable="True"> - <Design.DataContext> - <viewModels:SettingsViewModel /> - </Design.DataContext> - <UserControl.Resources> - <helpers:KeyValueConverter x:Key="Key" /> - </UserControl.Resources> - <ScrollViewer - Name="HotkeysPage" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - HorizontalScrollBarVisibility="Disabled" - VerticalScrollBarVisibility="Auto"> - <Border Classes="settings"> - <StackPanel Margin="10" 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> -</UserControl>
\ No newline at end of file diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsHotkeysView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Settings/SettingsHotkeysView.axaml.cs deleted file mode 100644 index b006d703..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsHotkeysView.axaml.cs +++ /dev/null @@ -1,81 +0,0 @@ -using Avalonia.Controls; -using Avalonia.Controls.Primitives; -using Avalonia.Input; -using Avalonia.Interactivity; -using Ryujinx.Ava.Input; -using Ryujinx.Ava.UI.Helpers; -using Ryujinx.Input; -using Ryujinx.Input.Assigner; - -namespace Ryujinx.Ava.UI.Views.Settings -{ - public partial class SettingsHotkeysView : UserControl - { - private ButtonKeyAssigner _currentAssigner; - private readonly IGamepadDriver _avaloniaKeyboardDriver; - - public SettingsHotkeysView() - { - InitializeComponent(); - _avaloniaKeyboardDriver = new AvaloniaKeyboardDriver(this); - } - - private void MouseClick(object sender, PointerPressedEventArgs e) - { - bool shouldUnbind = e.GetCurrentPoint(this).Properties.IsMiddleButtonPressed; - - _currentAssigner?.Cancel(shouldUnbind); - - PointerPressed -= MouseClick; - } - - private void Button_Checked(object sender, RoutedEventArgs e) - { - if (sender is ToggleButton button) - { - if (_currentAssigner != null && button == _currentAssigner.ToggledButton) - { - return; - } - - if (_currentAssigner == null && button.IsChecked != null && (bool)button.IsChecked) - { - _currentAssigner = new ButtonKeyAssigner(button); - - this.Focus(NavigationMethod.Pointer); - - PointerPressed += MouseClick; - - var keyboard = (IKeyboard)_avaloniaKeyboardDriver.GetGamepad(_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; - } - } - } - } - - private void Button_Unchecked(object sender, RoutedEventArgs e) - { - _currentAssigner?.Cancel(); - _currentAssigner = null; - } - - public void Dispose() - { - _currentAssigner?.Cancel(); - _currentAssigner = null; - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml b/src/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml deleted file mode 100644 index 81f4b68b..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml +++ /dev/null @@ -1,67 +0,0 @@ -<UserControl - x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsInputView" - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:views="clr-namespace:Ryujinx.Ava.UI.Views.Input" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - mc:Ignorable="d" - x:DataType="viewModels:SettingsViewModel"> - <Design.DataContext> - <viewModels:SettingsViewModel /> - </Design.DataContext> - <ScrollViewer - Name="InputPage" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - HorizontalScrollBarVisibility="Disabled" - VerticalScrollBarVisibility="Auto"> - <Border Classes="settings"> - <Panel - Margin="10"> - <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="Auto"/> - <RowDefinition Height="*" /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - <views:ControllerInputView - Grid.Row="0" - Name="ControllerSettings" /> - <StackPanel - Orientation="Vertical" - Grid.Row="2"> - <Separator - Margin="0 10" - Height="1" /> - <StackPanel - Orientation="Horizontal" - Spacing="10"> - <CheckBox - ToolTip.Tip="{locale:Locale DockModeToggleTooltip}" - MinWidth="0" - IsChecked="{Binding EnableDockedMode}"> - <TextBlock - Text="{locale:Locale SettingsTabInputEnableDockedMode}" /> - </CheckBox> - <CheckBox - ToolTip.Tip="{locale:Locale DirectKeyboardTooltip}" - IsChecked="{Binding EnableKeyboard}"> - <TextBlock - Text="{locale:Locale SettingsTabInputDirectKeyboardAccess}" /> - </CheckBox> - <CheckBox - ToolTip.Tip="{locale:Locale DirectMouseTooltip}" - IsChecked="{Binding EnableMouse}"> - <TextBlock - Text="{locale:Locale SettingsTabInputDirectMouseAccess}" /> - </CheckBox> - </StackPanel> - </StackPanel> - </Grid> - </Panel> - </Border> - </ScrollViewer> -</UserControl>
\ No newline at end of file diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml.cs deleted file mode 100644 index e75c9f0c..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Avalonia.Controls; - -namespace Ryujinx.Ava.UI.Views.Settings -{ - public partial class SettingsInputView : UserControl - { - public SettingsInputView() - { - InitializeComponent(); - } - - public void Dispose() - { - ControllerSettings.Dispose(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsLoggingView.axaml b/src/Ryujinx.Ava/UI/Views/Settings/SettingsLoggingView.axaml deleted file mode 100644 index 0fc9ea1b..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsLoggingView.axaml +++ /dev/null @@ -1,120 +0,0 @@ -<UserControl - x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsLoggingView" - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - mc:Ignorable="d" - x:DataType="viewModels:SettingsViewModel"> - <Design.DataContext> - <viewModels:SettingsViewModel /> - </Design.DataContext> - <ScrollViewer - Name="LoggingPage" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - HorizontalScrollBarVisibility="Disabled" - VerticalScrollBarVisibility="Auto"> - <Border Classes="settings"> - <StackPanel - Margin="10" - 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 EnableGuest}" - ToolTip.Tip="{locale:Locale GuestLogTooltip}"> - <TextBlock Text="{locale:Locale SettingsTabLoggingEnableGuestLogs}" /> - </CheckBox> - </StackPanel> - <Separator Height="1" /> - <StackPanel Orientation="Vertical" Spacing="2"> - <TextBlock Classes="h1" Text="{locale:Locale SettingsTabLoggingDeveloperOptions}" /> - <TextBlock Foreground="{DynamicResource SecondaryTextColor}" Text="{locale:Locale SettingsTabLoggingDeveloperOptionsNote}" /> - </StackPanel> - <StackPanel - Margin="10,0,0,0" - HorizontalAlignment="Stretch" - Orientation="Vertical" - Spacing="10"> - <StackPanel Orientation="Vertical"> - <CheckBox IsChecked="{Binding EnableTrace}" - ToolTip.Tip="{locale:Locale TraceLogTooltip}"> - <TextBlock Text="{locale:Locale SettingsTabLoggingEnableTraceLogs}" /> - </CheckBox> - <CheckBox IsChecked="{Binding EnableFsAccessLog}" - ToolTip.Tip="{locale:Locale FileAccessLogTooltip}"> - <TextBlock Text="{locale:Locale SettingsTabLoggingEnableFsAccessLogs}" /> - </CheckBox> - <CheckBox IsChecked="{Binding EnableDebug}" - ToolTip.Tip="{locale:Locale DebugLogTooltip}"> - <TextBlock Text="{locale:Locale SettingsTabLoggingEnableDebugLogs}" /> - </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> -</UserControl>
\ No newline at end of file diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsLoggingView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Settings/SettingsLoggingView.axaml.cs deleted file mode 100644 index c8df46b3..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsLoggingView.axaml.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Avalonia.Controls; - -namespace Ryujinx.Ava.UI.Views.Settings -{ - public partial class SettingsLoggingView : UserControl - { - public SettingsLoggingView() - { - InitializeComponent(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsNetworkView.axaml b/src/Ryujinx.Ava/UI/Views/Settings/SettingsNetworkView.axaml deleted file mode 100644 index 9bb81463..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsNetworkView.axaml +++ /dev/null @@ -1,58 +0,0 @@ -<UserControl - x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsNetworkView" - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - mc:Ignorable="d" - x:DataType="viewModels:SettingsViewModel"> - <Design.DataContext> - <viewModels:SettingsViewModel /> - </Design.DataContext> - <ScrollViewer - Name="NetworkPage" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - HorizontalScrollBarVisibility="Disabled" - VerticalScrollBarVisibility="Auto"> - <Border Classes="settings"> - <StackPanel - Margin="10" - HorizontalAlignment="Stretch" - Orientation="Vertical" - Spacing="10"> - <TextBlock Classes="h1" Text="{locale:Locale SettingsTabNetworkMultiplayer}" /> - <StackPanel Margin="10,0,0,0" Orientation="Horizontal"> - <TextBlock VerticalAlignment="Center" - Text="{locale:Locale MultiplayerMode}" - ToolTip.Tip="{locale:Locale MultiplayerModeTooltip}" - Width="200" /> - <ComboBox SelectedIndex="{Binding MultiplayerModeIndex}" - ToolTip.Tip="{locale:Locale MultiplayerModeTooltip}" - HorizontalContentAlignment="Left" - ItemsSource="{Binding MultiplayerModes}" - Width="250" /> - </StackPanel> - <Separator Height="1" /> - <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 Margin="10,0,0,0" Orientation="Horizontal"> - <TextBlock VerticalAlignment="Center" - Text="{locale:Locale SettingsTabNetworkInterface}" - ToolTip.Tip="{locale:Locale NetworkInterfaceTooltip}" - Width="200" /> - <ComboBox SelectedIndex="{Binding NetworkInterfaceIndex}" - ToolTip.Tip="{locale:Locale NetworkInterfaceTooltip}" - HorizontalContentAlignment="Left" - ItemsSource="{Binding NetworkInterfaceList}" - Width="250" /> - </StackPanel> - </StackPanel> - </Border> - </ScrollViewer> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsNetworkView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Settings/SettingsNetworkView.axaml.cs deleted file mode 100644 index b771933e..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsNetworkView.axaml.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Avalonia.Controls; - -namespace Ryujinx.Ava.UI.Views.Settings -{ - public partial class SettingsNetworkView : UserControl - { - public SettingsNetworkView() - { - InitializeComponent(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml b/src/Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml deleted file mode 100644 index e6f7c6e4..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml +++ /dev/null @@ -1,224 +0,0 @@ -<UserControl - x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsSystemView" - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers" - mc:Ignorable="d" - x:DataType="viewModels:SettingsViewModel"> - <UserControl.Resources> - <helpers:TimeZoneConverter x:Key="TimeZone" /> - </UserControl.Resources> - <Design.DataContext> - <viewModels:SettingsViewModel /> - </Design.DataContext> - <ScrollViewer - Name="SystemPage" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - HorizontalScrollBarVisibility="Disabled" - VerticalScrollBarVisibility="Auto"> - <Border Classes="settings"> - <StackPanel - Margin="10" - 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" - ItemsSource="{Binding TimeZones}" - SelectionChanged="TimeZoneBox_OnSelectionChanged" - Text="{Binding Path=TimeZone, Mode=OneWay}" - TextChanged="TimeZoneBox_OnTextChanged" - ToolTip.Tip="{locale:Locale TimezoneTooltip}" - ValueMemberBinding="{Binding Mode=OneWay, Converter={StaticResource TimeZone}}" /> - </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 CurrentDate}" - ToolTip.Tip="{locale:Locale TimeTooltip}" - Width="350" /> - </StackPanel> - <StackPanel - Margin="250,0,0,10" - Orientation="Horizontal"> - <TimePicker - VerticalAlignment="Center" - ClockIdentifier="24HourClock" - SelectedTime="{Binding CurrentTime}" - 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="Vertical" - Spacing="2"> - <TextBlock - Classes="h1" - Text="{locale:Locale SettingsTabSystemHacks}" /> - <TextBlock - Foreground="{DynamicResource SecondaryTextColor}" - 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> -</UserControl>
\ No newline at end of file diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml.cs deleted file mode 100644 index 2c9eac28..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Avalonia.Controls; -using Ryujinx.Ava.UI.ViewModels; -using TimeZone = Ryujinx.Ava.UI.Models.TimeZone; - -namespace Ryujinx.Ava.UI.Views.Settings -{ - public partial class SettingsSystemView : UserControl - { - public SettingsViewModel ViewModel; - - public SettingsSystemView() - { - InitializeComponent(); - } - - 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, TextChangedEventArgs e) - { - if (sender is AutoCompleteBox box && box.SelectedItem is TimeZone timeZone) - { - ViewModel.ValidateAndSetTimeZone(timeZone.Location); - } - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml b/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml deleted file mode 100644 index 6504637e..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml +++ /dev/null @@ -1,128 +0,0 @@ -<UserControl - x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsUiView" - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - mc:Ignorable="d" - x:DataType="viewModels:SettingsViewModel"> - <Design.DataContext> - <viewModels:SettingsViewModel /> - </Design.DataContext> - <ScrollViewer - Name="UiPage" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - HorizontalScrollBarVisibility="Disabled" - VerticalScrollBarVisibility="Auto"> - <Border Classes="settings"> - <StackPanel - Margin="10" - 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> - <StackPanel Margin="0, 15, 0, 0" Orientation="Horizontal"> - <TextBlock VerticalAlignment="Center" - Text="{locale:Locale SettingsTabGeneralHideCursor}" - Width="150" /> - <ComboBox SelectedIndex="{Binding HideCursor}" - HorizontalContentAlignment="Left" - MinWidth="100"> - <ComboBoxItem> - <TextBlock Text="{locale:Locale SettingsTabGeneralHideCursorNever}" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="{locale:Locale SettingsTabGeneralHideCursorOnIdle}" /> - </ComboBoxItem> - <ComboBoxItem> - <TextBlock Text="{locale:Locale SettingsTabGeneralHideCursorAlways}" /> - </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}" /> - <StackPanel - Margin="10,0,0,0" - HorizontalAlignment="Stretch" - Orientation="Vertical" - Spacing="10"> - <ListBox - Name="GameList" - MinHeight="230" - ItemsSource="{Binding GameDirectories}"> - <ListBox.Styles> - <Style Selector="ListBoxItem"> - <Setter Property="Padding" Value="10" /> - <Setter Property="Background" Value="{DynamicResource ListBoxBackground}" /> - </Style> - </ListBox.Styles> - </ListBox> - <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> - </StackPanel> - </Border> - </ScrollViewer> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs deleted file mode 100644 index 996d15cd..00000000 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Avalonia.Controls; -using Avalonia.Interactivity; -using Avalonia.Platform.Storage; -using Avalonia.VisualTree; -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 (this.GetVisualRoot() is Window window) - { - var result = await window.StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions - { - AllowMultiple = false, - }); - - if (result.Count > 0) - { - ViewModel.GameDirectories.Add(result[0].Path.LocalPath); - 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; - } - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/User/UserEditorView.axaml b/src/Ryujinx.Ava/UI/Views/User/UserEditorView.axaml deleted file mode 100644 index ab83c2cd..00000000 --- a/src/Ryujinx.Ava/UI/Views/User/UserEditorView.axaml +++ /dev/null @@ -1,122 +0,0 @@ -<UserControl - x:Class="Ryujinx.Ava.UI.Views.User.UserEditorView" - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers" - xmlns:models="clr-namespace:Ryujinx.Ava.UI.Models" - Margin="0" - MinWidth="500" - Padding="0" - mc:Ignorable="d" - Focusable="True" - x:DataType="models:TempProfile"> - <UserControl.Resources> - <helpers:BitmapArrayValueConverter x:Key="ByteImage" /> - </UserControl.Resources> - <Grid Margin="0"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition /> - </Grid.ColumnDefinitions> - <Grid.RowDefinitions> - <RowDefinition Height="*" /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - <StackPanel - Grid.Row="0" - Grid.Column="0" - HorizontalAlignment="Stretch" - Orientation="Vertical" - Spacing="10"> - <TextBlock Text="{locale:Locale UserProfilesName}" /> - <TextBox - Name="NameBox" - Width="300" - HorizontalAlignment="Stretch" - MaxLength="{Binding MaxProfileNameLength}" - Watermark="{locale:Locale ProfileNameSelectionWatermark}" - Text="{Binding Name}" /> - <TextBlock Name="IdText" Text="{locale:Locale UserProfilesUserId}" /> - <TextBox - Name="IdLabel" - Width="300" - HorizontalAlignment="Stretch" - IsReadOnly="True" - Text="{Binding UserIdString}" /> - </StackPanel> - <StackPanel - Grid.Row="0" - Grid.Column="1" - HorizontalAlignment="Right" - VerticalAlignment="Stretch" - Orientation="Vertical"> - <Border - BorderBrush="{DynamicResource AppListHoverBackgroundColor}" - BorderThickness="1"> - <Panel> - <ui:SymbolIcon - FontSize="60" - Width="96" - Height="96" - Margin="0" - Foreground="{DynamicResource AppListHoverBackgroundColor}" - HorizontalAlignment="Stretch" - VerticalAlignment="Top" - Symbol="Camera" /> - <Image - Name="ProfileImage" - Width="96" - Height="96" - Margin="0" - HorizontalAlignment="Stretch" - VerticalAlignment="Top" - Source="{Binding Image, Converter={StaticResource ByteImage}}" /> - </Panel> - </Border> - </StackPanel> - <StackPanel - Grid.Row="1" - Grid.Column="0" - Grid.ColumnSpan="2" - HorizontalAlignment="Left" - Orientation="Horizontal" - Margin="0 24 0 0" - Spacing="10"> - <Button - Width="50" - MinWidth="50" - Click="BackButton_Click"> - <ui:SymbolIcon Symbol="Back" /> - </Button> - </StackPanel> - <StackPanel - Grid.Row="1" - Grid.Column="0" - Grid.ColumnSpan="2" - HorizontalAlignment="Right" - Orientation="Horizontal" - Margin="0 24 0 0" - Spacing="10"> - <Button - Name="DeleteButton" - Click="DeleteButton_Click" - Content="{locale:Locale UserProfilesDelete}" /> - <Button - Name="ChangePictureButton" - Click="ChangePictureButton_Click" - Content="{locale:Locale UserProfilesChangeProfileImage}" /> - <Button - Name="AddPictureButton" - Click="ChangePictureButton_Click" - Content="{locale:Locale UserProfilesSetProfileImage}" /> - <Button - Name="SaveButton" - Click="SaveButton_Click" - Content="{locale:Locale Save}" /> - </StackPanel> - </Grid> -</UserControl>
\ No newline at end of file diff --git a/src/Ryujinx.Ava/UI/Views/User/UserEditorView.axaml.cs b/src/Ryujinx.Ava/UI/Views/User/UserEditorView.axaml.cs deleted file mode 100644 index 588fa471..00000000 --- a/src/Ryujinx.Ava/UI/Views/User/UserEditorView.axaml.cs +++ /dev/null @@ -1,165 +0,0 @@ -using Avalonia.Controls; -using Avalonia.Data; -using Avalonia.Interactivity; -using FluentAvalonia.UI.Controls; -using FluentAvalonia.UI.Navigation; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Controls; -using Ryujinx.Ava.UI.Helpers; -using Ryujinx.Ava.UI.Models; -using Ryujinx.HLE.HOS.Services.Account.Acc; -using System; -using UserProfile = Ryujinx.Ava.UI.Models.UserProfile; - -namespace Ryujinx.Ava.UI.Views.User -{ - public partial class UserEditorView : UserControl - { - private NavigationDialogHost _parent; - private UserProfile _profile; - private bool _isNewUser; - - public TempProfile TempProfile { get; set; } - public static uint MaxProfileNameLength => 0x20; - public bool IsDeletable => _profile.UserId != AccountManager.DefaultUserId; - - public UserEditorView() - { - InitializeComponent(); - AddHandler(Frame.NavigatedToEvent, (s, e) => - { - NavigatedTo(e); - }, RoutingStrategies.Direct); - } - - private void NavigatedTo(NavigationEventArgs arg) - { - if (Program.PreviewerDetached) - { - switch (arg.NavigationMode) - { - case NavigationMode.New: - var (parent, profile, isNewUser) = ((NavigationDialogHost parent, UserProfile profile, bool isNewUser))arg.Parameter; - _isNewUser = isNewUser; - _profile = profile; - TempProfile = new TempProfile(_profile); - - _parent = parent; - break; - } - - ((ContentDialog)_parent.Parent).Title = $"{LocaleManager.Instance[LocaleKeys.UserProfileWindowTitle]} - " + - $"{(_isNewUser ? LocaleManager.Instance[LocaleKeys.UserEditorTitleCreate] : LocaleManager.Instance[LocaleKeys.UserEditorTitle])}"; - - DataContext = TempProfile; - - AddPictureButton.IsVisible = _isNewUser; - ChangePictureButton.IsVisible = !_isNewUser; - IdLabel.IsVisible = _profile != null; - IdText.IsVisible = _profile != null; - if (!_isNewUser && IsDeletable) - { - DeleteButton.IsVisible = true; - } - else - { - DeleteButton.IsVisible = false; - } - } - } - - private async void BackButton_Click(object sender, RoutedEventArgs e) - { - if (_isNewUser) - { - if (TempProfile.Name != String.Empty || TempProfile.Image != null) - { - if (await ContentDialogHelper.CreateChoiceDialog( - LocaleManager.Instance[LocaleKeys.DialogUserProfileUnsavedChangesTitle], - LocaleManager.Instance[LocaleKeys.DialogUserProfileUnsavedChangesMessage], - LocaleManager.Instance[LocaleKeys.DialogUserProfileUnsavedChangesSubMessage])) - { - _parent?.GoBack(); - } - } - else - { - _parent?.GoBack(); - } - } - else - { - if (_profile.Name != TempProfile.Name || _profile.Image != TempProfile.Image) - { - if (await ContentDialogHelper.CreateChoiceDialog( - LocaleManager.Instance[LocaleKeys.DialogUserProfileUnsavedChangesTitle], - LocaleManager.Instance[LocaleKeys.DialogUserProfileUnsavedChangesMessage], - LocaleManager.Instance[LocaleKeys.DialogUserProfileUnsavedChangesSubMessage])) - { - _parent?.GoBack(); - } - } - else - { - _parent?.GoBack(); - } - } - } - - private void DeleteButton_Click(object sender, RoutedEventArgs e) - { - _parent.DeleteUser(_profile); - } - - private void SaveButton_Click(object sender, RoutedEventArgs e) - { - DataValidationErrors.ClearErrors(NameBox); - - if (string.IsNullOrWhiteSpace(TempProfile.Name)) - { - DataValidationErrors.SetError(NameBox, new DataValidationException(LocaleManager.Instance[LocaleKeys.UserProfileEmptyNameError])); - - return; - } - - if (TempProfile.Image == null) - { - _parent.Navigate(typeof(UserProfileImageSelectorView), (_parent, TempProfile)); - - return; - } - - if (_profile != null && !_isNewUser) - { - _profile.Name = TempProfile.Name; - _profile.Image = TempProfile.Image; - _profile.UpdateState(); - _parent.AccountManager.SetUserName(_profile.UserId, _profile.Name); - _parent.AccountManager.SetUserImage(_profile.UserId, _profile.Image); - } - else if (_isNewUser) - { - _parent.AccountManager.AddUser(TempProfile.Name, TempProfile.Image, TempProfile.UserId); - } - else - { - return; - } - - _parent?.GoBack(); - } - - public void SelectProfileImage() - { - _parent.Navigate(typeof(UserProfileImageSelectorView), (_parent, TempProfile)); - } - - private void ChangePictureButton_Click(object sender, RoutedEventArgs e) - { - if (_profile != null || _isNewUser) - { - SelectProfileImage(); - } - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/User/UserFirmwareAvatarSelectorView.axaml b/src/Ryujinx.Ava/UI/Views/User/UserFirmwareAvatarSelectorView.axaml deleted file mode 100644 index 21dfc909..00000000 --- a/src/Ryujinx.Ava/UI/Views/User/UserFirmwareAvatarSelectorView.axaml +++ /dev/null @@ -1,113 +0,0 @@ -<UserControl - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - mc:Ignorable="d" - Width="528" - d:DesignWidth="578" - d:DesignHeight="350" - x:Class="Ryujinx.Ava.UI.Views.User.UserFirmwareAvatarSelectorView" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers" - x:DataType="viewModels:UserFirmwareAvatarSelectorViewModel" - Focusable="True"> - <Design.DataContext> - <viewModels:UserFirmwareAvatarSelectorViewModel /> - </Design.DataContext> - <UserControl.Resources> - <helpers:BitmapArrayValueConverter x:Key="ByteImage" /> - </UserControl.Resources> - <Grid - Margin="0" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch"> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="*" /> - <RowDefinition Height="Auto" /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - <ListBox - Grid.Row="1" - BorderThickness="0" - SelectedIndex="{Binding SelectedIndex}" - Height="400" - ItemsSource="{Binding Images}" - HorizontalAlignment="Stretch" - VerticalAlignment="Center"> - <ListBox.ItemsPanel> - <ItemsPanelTemplate> - <WrapPanel - Orientation="Horizontal" - Margin="0" - HorizontalAlignment="Center" /> - </ItemsPanelTemplate> - </ListBox.ItemsPanel> - <ListBox.Styles> - <Style Selector="ListBoxItem"> - <Setter Property="CornerRadius" Value="4" /> - <Setter Property="Width" Value="85" /> - <Setter Property="MaxWidth" Value="85" /> - <Setter Property="MinWidth" Value="85" /> - </Style> - <Style Selector="ListBoxItem /template/ Rectangle#SelectionIndicator"> - <Setter Property="MinHeight" Value="70" /> - </Style> - </ListBox.Styles> - <ListBox.ItemTemplate> - <DataTemplate> - <Panel - Background="{Binding BackgroundColor}" - Margin="5"> - <Image Source="{Binding Data, Converter={StaticResource ByteImage}}" /> - </Panel> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - <StackPanel - Grid.Row="3" - Orientation="Horizontal" - Spacing="10" - Margin="0 24 0 0" - HorizontalAlignment="Left"> - <Button - Width="50" - MinWidth="50" - Height="35" - Click="GoBack"> - <ui:SymbolIcon Symbol="Back" /> - </Button> - </StackPanel> - <StackPanel - Grid.Row="3" - Orientation="Horizontal" - Spacing="10" - Margin="0 24 0 0" - HorizontalAlignment="Right"> - <ui:ColorPickerButton - FlyoutPlacement="Top" - IsMoreButtonVisible="False" - UseColorPalette="False" - UseColorTriangle="False" - UseColorWheel="False" - ShowAcceptDismissButtons="False" - IsAlphaEnabled="False" - Color="{Binding BackgroundColor, Mode=TwoWay}" - Name="ColorButton"> - <ui:ColorPickerButton.Styles> - <Style Selector="Grid#Root > DockPanel > Grid"> - <Setter Property="IsVisible" Value="False" /> - </Style> - </ui:ColorPickerButton.Styles> - </ui:ColorPickerButton> - <Button - Content="{locale:Locale AvatarChoose}" - Height="35" - Name="ChooseButton" - Click="ChooseButton_OnClick" /> - </StackPanel> - </Grid> -</UserControl>
\ No newline at end of file diff --git a/src/Ryujinx.Ava/UI/Views/User/UserFirmwareAvatarSelectorView.axaml.cs b/src/Ryujinx.Ava/UI/Views/User/UserFirmwareAvatarSelectorView.axaml.cs deleted file mode 100644 index b6376866..00000000 --- a/src/Ryujinx.Ava/UI/Views/User/UserFirmwareAvatarSelectorView.axaml.cs +++ /dev/null @@ -1,89 +0,0 @@ -using Avalonia.Controls; -using Avalonia.Interactivity; -using FluentAvalonia.UI.Controls; -using FluentAvalonia.UI.Navigation; -using Ryujinx.Ava.UI.Controls; -using Ryujinx.Ava.UI.Models; -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.HLE.FileSystem; -using SixLabors.ImageSharp; -using SixLabors.ImageSharp.Formats.Png; -using SixLabors.ImageSharp.PixelFormats; -using SixLabors.ImageSharp.Processing; -using System.IO; -using Image = SixLabors.ImageSharp.Image; - -namespace Ryujinx.Ava.UI.Views.User -{ - public partial class UserFirmwareAvatarSelectorView : UserControl - { - private NavigationDialogHost _parent; - private TempProfile _profile; - - public UserFirmwareAvatarSelectorView(ContentManager contentManager) - { - ContentManager = contentManager; - - DataContext = ViewModel; - - InitializeComponent(); - } - - public UserFirmwareAvatarSelectorView() - { - InitializeComponent(); - - AddHandler(Frame.NavigatedToEvent, (s, e) => - { - NavigatedTo(e); - }, RoutingStrategies.Direct); - } - - private void NavigatedTo(NavigationEventArgs arg) - { - if (Program.PreviewerDetached) - { - if (arg.NavigationMode == NavigationMode.New) - { - (_parent, _profile) = ((NavigationDialogHost, TempProfile))arg.Parameter; - ContentManager = _parent.ContentManager; - if (Program.PreviewerDetached) - { - ViewModel = new UserFirmwareAvatarSelectorViewModel(); - } - - DataContext = ViewModel; - } - } - } - - public ContentManager ContentManager { get; private set; } - - internal UserFirmwareAvatarSelectorViewModel ViewModel { get; set; } - - private void GoBack(object sender, RoutedEventArgs e) - { - _parent.GoBack(); - } - - private void ChooseButton_OnClick(object sender, RoutedEventArgs e) - { - if (ViewModel.SelectedImage != null) - { - MemoryStream streamJpg = new(); - Image avatarImage = Image.Load(ViewModel.SelectedImage, new PngDecoder()); - - avatarImage.Mutate(x => x.BackgroundColor(new Rgba32( - ViewModel.BackgroundColor.R, - ViewModel.BackgroundColor.G, - ViewModel.BackgroundColor.B, - ViewModel.BackgroundColor.A))); - avatarImage.SaveAsJpeg(streamJpg); - - _profile.Image = streamJpg.ToArray(); - - _parent.GoBack(); - } - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/User/UserProfileImageSelectorView.axaml b/src/Ryujinx.Ava/UI/Views/User/UserProfileImageSelectorView.axaml deleted file mode 100644 index b1786430..00000000 --- a/src/Ryujinx.Ava/UI/Views/User/UserProfileImageSelectorView.axaml +++ /dev/null @@ -1,62 +0,0 @@ -<UserControl - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:viewModles="clr-namespace:Ryujinx.Ava.UI.ViewModels" - Focusable="True" - mc:Ignorable="d" - x:Class="Ryujinx.Ava.UI.Views.User.UserProfileImageSelectorView" - x:DataType="viewModles:UserProfileImageSelectorViewModel" - Width="500" - d:DesignWidth="500"> - <Design.DataContext> - <viewModles:UserProfileImageSelectorViewModel /> - </Design.DataContext> - <Grid - HorizontalAlignment="Stretch" - VerticalAlignment="Center"> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="70" /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - <TextBlock - Grid.Row="0" - TextWrapping="Wrap" - HorizontalAlignment="Left" - TextAlignment="Start" - Text="{locale:Locale ProfileImageSelectionNote}" /> - <StackPanel - Grid.Row="2" - Spacing="10" - HorizontalAlignment="Left" - Orientation="Horizontal"> - <Button - Width="50" - MinWidth="50" - Click="GoBack"> - <ui:SymbolIcon Symbol="Back" /> - </Button> - </StackPanel> - <StackPanel - Grid.Row="2" - Spacing="10" - HorizontalAlignment="Right" - Orientation="Horizontal"> - <Button - Name="Import" - Click="Import_OnClick"> - <TextBlock Text="{locale:Locale ProfileImageSelectionImportImage}" /> - </Button> - <Button - Name="SelectFirmwareImage" - IsEnabled="{Binding FirmwareFound}" - Click="SelectFirmwareImage_OnClick"> - <TextBlock Text="{locale:Locale ProfileImageSelectionSelectAvatar}" /> - </Button> - </StackPanel> - </Grid> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/User/UserProfileImageSelectorView.axaml.cs b/src/Ryujinx.Ava/UI/Views/User/UserProfileImageSelectorView.axaml.cs deleted file mode 100644 index fabfaa4e..00000000 --- a/src/Ryujinx.Ava/UI/Views/User/UserProfileImageSelectorView.axaml.cs +++ /dev/null @@ -1,116 +0,0 @@ -using Avalonia.Controls; -using Avalonia.Interactivity; -using Avalonia.Platform.Storage; -using Avalonia.VisualTree; -using FluentAvalonia.UI.Controls; -using FluentAvalonia.UI.Navigation; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Controls; -using Ryujinx.Ava.UI.Models; -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.HLE.FileSystem; -using SixLabors.ImageSharp; -using SixLabors.ImageSharp.Processing; -using System.Collections.Generic; -using System.IO; -using Image = SixLabors.ImageSharp.Image; - -namespace Ryujinx.Ava.UI.Views.User -{ - public partial class UserProfileImageSelectorView : UserControl - { - private ContentManager _contentManager; - private NavigationDialogHost _parent; - private TempProfile _profile; - - internal UserProfileImageSelectorViewModel ViewModel { get; private set; } - - public UserProfileImageSelectorView() - { - InitializeComponent(); - AddHandler(Frame.NavigatedToEvent, (s, e) => - { - NavigatedTo(e); - }, RoutingStrategies.Direct); - } - - private void NavigatedTo(NavigationEventArgs arg) - { - if (Program.PreviewerDetached) - { - switch (arg.NavigationMode) - { - case NavigationMode.New: - (_parent, _profile) = ((NavigationDialogHost, TempProfile))arg.Parameter; - _contentManager = _parent.ContentManager; - - ((ContentDialog)_parent.Parent).Title = $"{LocaleManager.Instance[LocaleKeys.UserProfileWindowTitle]} - {LocaleManager.Instance[LocaleKeys.ProfileImageSelectionHeader]}"; - - if (Program.PreviewerDetached) - { - DataContext = ViewModel = new UserProfileImageSelectorViewModel(); - ViewModel.FirmwareFound = _contentManager.GetCurrentFirmwareVersion() != null; - } - - break; - case NavigationMode.Back: - if (_profile.Image != null) - { - _parent.GoBack(); - } - break; - } - } - } - - private async void Import_OnClick(object sender, RoutedEventArgs e) - { - var window = this.GetVisualRoot() as Window; - var result = await window.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions - { - AllowMultiple = false, - FileTypeFilter = new List<FilePickerFileType> - { - new(LocaleManager.Instance[LocaleKeys.AllSupportedFormats]) - { - Patterns = new[] { "*.jpg", "*.jpeg", "*.png", "*.bmp" }, - AppleUniformTypeIdentifiers = new[] { "public.jpeg", "public.png", "com.microsoft.bmp" }, - MimeTypes = new[] { "image/jpeg", "image/png", "image/bmp" }, - }, - }, - }); - - if (result.Count > 0) - { - _profile.Image = ProcessProfileImage(File.ReadAllBytes(result[0].Path.LocalPath)); - _parent.GoBack(); - } - } - - private void GoBack(object sender, RoutedEventArgs e) - { - _parent.GoBack(); - } - - private void SelectFirmwareImage_OnClick(object sender, RoutedEventArgs e) - { - if (ViewModel.FirmwareFound) - { - _parent.Navigate(typeof(UserFirmwareAvatarSelectorView), (_parent, _profile)); - } - } - - private static byte[] ProcessProfileImage(byte[] buffer) - { - using Image image = Image.Load(buffer); - - image.Mutate(x => x.Resize(256, 256)); - - using MemoryStream streamJpg = new(); - - image.SaveAsJpeg(streamJpg); - - return streamJpg.ToArray(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml b/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml deleted file mode 100644 index 3fdb4ab9..00000000 --- a/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml +++ /dev/null @@ -1,82 +0,0 @@ -<UserControl - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - mc:Ignorable="d" - d:DesignWidth="550" - d:DesignHeight="450" - Width="500" - Height="400" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - x:Class="Ryujinx.Ava.UI.Views.User.UserRecovererView" - x:DataType="viewModels:UserProfileViewModel" - Focusable="True"> - <Design.DataContext> - <viewModels:UserProfileViewModel /> - </Design.DataContext> - <Grid HorizontalAlignment="Stretch" - VerticalAlignment="Stretch"> - <Grid.RowDefinitions> - <RowDefinition/> - <RowDefinition Height="Auto"/> - </Grid.RowDefinitions> - <Border - CornerRadius="5" - BorderBrush="{DynamicResource AppListHoverBackgroundColor}" - BorderThickness="1" - Grid.Row="0"> - <Panel> - <ListBox - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - ItemsSource="{Binding LostProfiles}"> - <ListBox.ItemTemplate> - <DataTemplate> - <Border - Margin="2" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - ClipToBounds="True" - CornerRadius="5"> - <Grid Margin="0"> - <Grid.ColumnDefinitions> - <ColumnDefinition/> - <ColumnDefinition Width="Auto"/> - </Grid.ColumnDefinitions> - <TextBlock - HorizontalAlignment="Stretch" - Text="{Binding UserId}" - TextAlignment="Start" - TextWrapping="Wrap" /> - <Button Grid.Column="1" - HorizontalAlignment="Right" - Click="Recover" - CommandParameter="{Binding}" - Content="{locale:Locale Recover}"/> - </Grid> - </Border> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - <TextBlock - IsVisible="{Binding IsEmpty}" - TextAlignment="Center" - Text="{locale:Locale UserProfilesRecoverEmptyList}"/> - </Panel> - </Border> - <StackPanel - Grid.Row="1" - Margin="0 24 0 0" - Orientation="Horizontal"> - <Button - Width="50" - MinWidth="50" - Click="GoBack"> - <ui:SymbolIcon Symbol="Back"/> - </Button> - </StackPanel> - </Grid> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml.cs b/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml.cs deleted file mode 100644 index 31934349..00000000 --- a/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml.cs +++ /dev/null @@ -1,51 +0,0 @@ -using Avalonia.Controls; -using Avalonia.Interactivity; -using FluentAvalonia.UI.Controls; -using FluentAvalonia.UI.Navigation; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Controls; - -namespace Ryujinx.Ava.UI.Views.User -{ - public partial class UserRecovererView : UserControl - { - private NavigationDialogHost _parent; - - public UserRecovererView() - { - InitializeComponent(); - AddHandler(Frame.NavigatedToEvent, (s, e) => - { - NavigatedTo(e); - }, RoutingStrategies.Direct); - } - - private void NavigatedTo(NavigationEventArgs arg) - { - if (Program.PreviewerDetached) - { - switch (arg.NavigationMode) - { - case NavigationMode.New: - var parent = (NavigationDialogHost)arg.Parameter; - - _parent = parent; - - ((ContentDialog)_parent.Parent).Title = $"{LocaleManager.Instance[LocaleKeys.UserProfileWindowTitle]} - {LocaleManager.Instance[LocaleKeys.UserProfilesRecoverHeading]}"; - - break; - } - } - } - - private void GoBack(object sender, RoutedEventArgs e) - { - _parent?.GoBack(); - } - - private void Recover(object sender, RoutedEventArgs e) - { - _parent?.RecoverLostAccounts(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/User/UserSaveManagerView.axaml b/src/Ryujinx.Ava/UI/Views/User/UserSaveManagerView.axaml deleted file mode 100644 index 8bc5125a..00000000 --- a/src/Ryujinx.Ava/UI/Views/User/UserSaveManagerView.axaml +++ /dev/null @@ -1,213 +0,0 @@ -<UserControl - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers" - xmlns:models="clr-namespace:Ryujinx.Ava.UI.Models" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - mc:Ignorable="d" - d:DesignWidth="600" - d:DesignHeight="500" - Height="450" - Width="550" - x:Class="Ryujinx.Ava.UI.Views.User.UserSaveManagerView" - x:DataType="viewModels:UserSaveManagerViewModel" - Focusable="True"> - <Design.DataContext> - <viewModels:UserSaveManagerViewModel /> - </Design.DataContext> - <UserControl.Resources> - <helpers:BitmapArrayValueConverter x:Key="ByteImage" /> - </UserControl.Resources> - <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - <Grid - Grid.Row="0" - HorizontalAlignment="Stretch"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition /> - </Grid.ColumnDefinitions> - <StackPanel - Spacing="10" - Orientation="Horizontal" - HorizontalAlignment="Left" - VerticalAlignment="Center"> - <Label Content="{locale:Locale CommonSort}" VerticalAlignment="Center" /> - <ComboBox SelectedIndex="{Binding SortIndex}" Width="100"> - <ComboBoxItem> - <Label - VerticalAlignment="Center" - HorizontalContentAlignment="Left" - Content="{locale:Locale Name}" /> - </ComboBoxItem> - <ComboBoxItem> - <Label - VerticalAlignment="Center" - HorizontalContentAlignment="Left" - Content="{locale:Locale Size}" /> - </ComboBoxItem> - <ComboBox.Styles> - <Style Selector="ContentControl#ContentPresenter"> - <Setter Property="HorizontalAlignment" Value="Left" /> - </Style> - </ComboBox.Styles> - </ComboBox> - <ComboBox SelectedIndex="{Binding OrderIndex}" Width="150"> - <ComboBoxItem> - <Label - VerticalAlignment="Center" - HorizontalContentAlignment="Left" - Content="{locale:Locale OrderAscending}" /> - </ComboBoxItem> - <ComboBoxItem> - <Label - VerticalAlignment="Center" - HorizontalContentAlignment="Left" - Content="{locale:Locale OrderDescending}" /> - </ComboBoxItem> - <ComboBox.Styles> - <Style Selector="ContentControl#ContentPresenter"> - <Setter Property="HorizontalAlignment" Value="Left" /> - </Style> - </ComboBox.Styles> - </ComboBox> - </StackPanel> - <Grid - Grid.Column="1" - HorizontalAlignment="Stretch" - Margin="10,0, 0, 0"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto"/> - <ColumnDefinition/> - </Grid.ColumnDefinitions> - <Label Content="{locale:Locale Search}" VerticalAlignment="Center" /> - <TextBox - Margin="5,0,0,0" - Grid.Column="1" - HorizontalAlignment="Stretch" - Text="{Binding Search}" /> - </Grid> - </Grid> - <Border - Grid.Row="1" - Margin="0,5" - BorderThickness="1" - BorderBrush="{DynamicResource AppListHoverBackgroundColor}" - CornerRadius="5" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch"> - <ListBox - Name="SaveList" - ItemsSource="{Binding Views}" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch"> - <ListBox.Styles> - <Style Selector="ListBoxItem"> - <Setter Property="Padding" Value="10" /> - <Setter Property="Margin" Value="5" /> - <Setter Property="CornerRadius" Value="4" /> - </Style> - <Style Selector="ListBoxItem:selected /template/ Rectangle#SelectionIndicator"> - <Setter Property="IsVisible" Value="False" /> - </Style> - </ListBox.Styles> - <ListBox.ItemTemplate> - <DataTemplate x:DataType="models:SaveModel"> - <Grid HorizontalAlignment="Stretch"> - <Grid.ColumnDefinitions> - <ColumnDefinition /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - <StackPanel - Grid.Column="0" - Orientation="Horizontal" - Spacing="5"> - <Border - Height="42" - Width="42" - Padding="10" - BorderBrush="{DynamicResource AppListHoverBackgroundColor}" - BorderThickness="1" - IsVisible="{Binding !InGameList}"> - <ui:SymbolIcon - Symbol="Help" - FontSize="30" - HorizontalAlignment="Center" - VerticalAlignment="Center" /> - </Border> - <Image - IsVisible="{Binding InGameList}" - Width="42" - Height="42" - Source="{Binding Icon, Converter={StaticResource ByteImage}}" /> - <TextBlock - MaxLines="3" - Width="320" - Margin="5" - TextWrapping="Wrap" - Text="{Binding Title}" - VerticalAlignment="Center" /> - </StackPanel> - <StackPanel - Grid.Column="1" - Spacing="10" - HorizontalAlignment="Right" - Orientation="Horizontal"> - <Label - Content="{Binding SizeString}" - IsVisible="{Binding SizeAvailable}" - VerticalAlignment="Center" - HorizontalAlignment="Right" /> - <Button - VerticalAlignment="Center" - HorizontalAlignment="Right" - Padding="10" - MinWidth="0" - MinHeight="0" - Name="OpenLocation" - Click="OpenLocation"> - <ui:SymbolIcon - Symbol="OpenFolder" - HorizontalAlignment="Center" - VerticalAlignment="Center" /> - </Button> - <Button - VerticalAlignment="Center" - HorizontalAlignment="Right" - Padding="10" - MinWidth="0" - MinHeight="0" - Name="Delete" - Click="Delete"> - <ui:SymbolIcon - Symbol="Delete" - HorizontalAlignment="Center" - VerticalAlignment="Center" /> - </Button> - </StackPanel> - </Grid> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - </Border> - <StackPanel - Grid.Row="2" - Margin="0 24 0 0" - Orientation="Horizontal"> - <Button - Width="50" - MinWidth="50" - Click="GoBack"> - <ui:SymbolIcon Symbol="Back" /> - </Button> - </StackPanel> - </Grid> -</UserControl>
\ No newline at end of file diff --git a/src/Ryujinx.Ava/UI/Views/User/UserSaveManagerView.axaml.cs b/src/Ryujinx.Ava/UI/Views/User/UserSaveManagerView.axaml.cs deleted file mode 100644 index 00a229fa..00000000 --- a/src/Ryujinx.Ava/UI/Views/User/UserSaveManagerView.axaml.cs +++ /dev/null @@ -1,148 +0,0 @@ -using Avalonia.Controls; -using Avalonia.Interactivity; -using Avalonia.Threading; -using FluentAvalonia.UI.Controls; -using FluentAvalonia.UI.Navigation; -using LibHac; -using LibHac.Common; -using LibHac.Fs; -using LibHac.Fs.Shim; -using Ryujinx.Ava.Common; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Controls; -using Ryujinx.Ava.UI.Helpers; -using Ryujinx.Ava.UI.Models; -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.HLE.FileSystem; -using Ryujinx.HLE.HOS.Services.Account.Acc; -using System; -using System.Collections.ObjectModel; -using System.Threading.Tasks; -using Button = Avalonia.Controls.Button; -using UserId = LibHac.Fs.UserId; - -namespace Ryujinx.Ava.UI.Views.User -{ - public partial class UserSaveManagerView : UserControl - { - internal UserSaveManagerViewModel ViewModel { get; private set; } - - private AccountManager _accountManager; - private HorizonClient _horizonClient; - private VirtualFileSystem _virtualFileSystem; - private NavigationDialogHost _parent; - - public UserSaveManagerView() - { - InitializeComponent(); - AddHandler(Frame.NavigatedToEvent, (s, e) => - { - NavigatedTo(e); - }, RoutingStrategies.Direct); - } - - private void NavigatedTo(NavigationEventArgs arg) - { - if (Program.PreviewerDetached) - { - switch (arg.NavigationMode) - { - case NavigationMode.New: - var (parent, accountManager, client, virtualFileSystem) = ((NavigationDialogHost parent, AccountManager accountManager, HorizonClient client, VirtualFileSystem virtualFileSystem))arg.Parameter; - _accountManager = accountManager; - _horizonClient = client; - _virtualFileSystem = virtualFileSystem; - - _parent = parent; - break; - } - - DataContext = ViewModel = new UserSaveManagerViewModel(_accountManager); - ((ContentDialog)_parent.Parent).Title = $"{LocaleManager.Instance[LocaleKeys.UserProfileWindowTitle]} - {ViewModel.SaveManagerHeading}"; - - Task.Run(LoadSaves); - } - } - - public void LoadSaves() - { - ViewModel.Saves.Clear(); - var saves = new ObservableCollection<SaveModel>(); - var saveDataFilter = SaveDataFilter.Make( - programId: default, - saveType: SaveDataType.Account, - new UserId((ulong)_accountManager.LastOpenedUser.UserId.High, (ulong)_accountManager.LastOpenedUser.UserId.Low), - saveDataId: default, - index: default); - - using var saveDataIterator = new UniqueRef<SaveDataIterator>(); - - _horizonClient.Fs.OpenSaveDataIterator(ref saveDataIterator.Ref, SaveDataSpaceId.User, in saveDataFilter).ThrowIfFailure(); - - Span<SaveDataInfo> saveDataInfo = stackalloc SaveDataInfo[10]; - - while (true) - { - saveDataIterator.Get.ReadSaveDataInfo(out long readCount, saveDataInfo).ThrowIfFailure(); - - if (readCount == 0) - { - break; - } - - for (int i = 0; i < readCount; i++) - { - var save = saveDataInfo[i]; - if (save.ProgramId.Value != 0) - { - var saveModel = new SaveModel(save); - saves.Add(saveModel); - } - } - } - - Dispatcher.UIThread.Post(() => - { - ViewModel.Saves = saves; - ViewModel.Sort(); - }); - } - - private void GoBack(object sender, RoutedEventArgs e) - { - _parent?.GoBack(); - } - - private void OpenLocation(object sender, RoutedEventArgs e) - { - if (sender is Button button) - { - if (button.DataContext is SaveModel saveModel) - { - ApplicationHelper.OpenSaveDir(saveModel.SaveId); - } - } - } - - private async void Delete(object sender, RoutedEventArgs e) - { - if (sender is Button button) - { - if (button.DataContext is SaveModel saveModel) - { - var result = await ContentDialogHelper.CreateConfirmationDialog(LocaleManager.Instance[LocaleKeys.DeleteUserSave], - LocaleManager.Instance[LocaleKeys.IrreversibleActionNote], - LocaleManager.Instance[LocaleKeys.InputDialogYes], - LocaleManager.Instance[LocaleKeys.InputDialogNo], ""); - - if (result == UserResult.Yes) - { - _horizonClient.Fs.DeleteSaveData(SaveDataSpaceId.User, saveModel.SaveId); - ViewModel.Saves.Remove(saveModel); - ViewModel.Sort(); - } - } - } - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/User/UserSelectorView.axaml b/src/Ryujinx.Ava/UI/Views/User/UserSelectorView.axaml deleted file mode 100644 index 3a9de303..00000000 --- a/src/Ryujinx.Ava/UI/Views/User/UserSelectorView.axaml +++ /dev/null @@ -1,162 +0,0 @@ -<UserControl - x:Class="Ryujinx.Ava.UI.Views.User.UserSelectorViews" - xmlns="https://github.com/avaloniaui" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - 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:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers" - xmlns:models="clr-namespace:Ryujinx.Ava.UI.Models" - xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" - xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - d:DesignHeight="450" - MinWidth="500" - d:DesignWidth="800" - mc:Ignorable="d" - Focusable="True" - x:DataType="viewModels:UserProfileViewModel"> - <UserControl.Resources> - <helpers:BitmapArrayValueConverter x:Key="ByteImage" /> - </UserControl.Resources> - <Design.DataContext> - <viewModels:UserProfileViewModel /> - </Design.DataContext> - <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> - <Grid.RowDefinitions> - <RowDefinition /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - <Border - CornerRadius="5" - BorderBrush="{DynamicResource AppListHoverBackgroundColor}" - BorderThickness="1"> - <ListBox - MaxHeight="300" - HorizontalAlignment="Stretch" - VerticalAlignment="Center" - SelectionChanged="ProfilesList_SelectionChanged" - Background="Transparent" - ItemsSource="{Binding Profiles}"> - <ListBox.ItemsPanel> - <ItemsPanelTemplate> - <WrapPanel - HorizontalAlignment="Left" - VerticalAlignment="Center" - Orientation="Horizontal"/> - </ItemsPanelTemplate> - </ListBox.ItemsPanel> - <ListBox.Styles> - <Style Selector="ListBoxItem"> - <Setter Property="Margin" Value="5 5 0 5" /> - <Setter Property="CornerRadius" Value="5" /> - </Style> - <Style Selector="Rectangle#SelectionIndicator"> - <Setter Property="Opacity" Value="0" /> - </Style> - </ListBox.Styles> - <ListBox.DataTemplates> - <DataTemplate - DataType="models:UserProfile"> - <Grid - PointerEntered="Grid_PointerEntered" - PointerExited="Grid_OnPointerExited"> - <Border - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - ClipToBounds="True" - CornerRadius="5" - Background="{Binding BackgroundColor}"> - <StackPanel - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch"> - <Image - Width="96" - Height="96" - HorizontalAlignment="Stretch" - VerticalAlignment="Top" - Source="{Binding Image, Converter={StaticResource ByteImage}}" /> - <TextBlock - HorizontalAlignment="Stretch" - MaxWidth="90" - Text="{Binding Name}" - TextAlignment="Center" - TextWrapping="Wrap" - TextTrimming="CharacterEllipsis" - MaxLines="2" - Margin="5" /> - </StackPanel> - </Border> - <Border - Margin="2" - Height="24" - Width="24" - CornerRadius="12" - HorizontalAlignment="Right" - VerticalAlignment="Top" - Background="{DynamicResource ThemeContentBackgroundColor}" - IsVisible="{Binding IsPointerOver}"> - <Button - MaxHeight="24" - MaxWidth="24" - MinHeight="24" - MinWidth="24" - CornerRadius="12" - Padding="0" - Click="EditUser"> - <ui:SymbolIcon Symbol="Edit" /> - </Button> - </Border> - </Grid> - </DataTemplate> - <DataTemplate - DataType="viewModels:BaseModel"> - <Panel - Height="118" - Width="96"> - <Button - MinWidth="50" - MinHeight="50" - MaxWidth="50" - MaxHeight="50" - CornerRadius="25" - Margin="10" - Padding="0" - HorizontalAlignment="Center" - VerticalAlignment="Center" - Click="AddUser"> - <ui:SymbolIcon Symbol="Add" /> - </Button> - <Panel.Styles> - <Style Selector="Panel"> - <Setter Property="Background" Value="{DynamicResource ListBoxBackground}"/> - </Style> - </Panel.Styles> - </Panel> - </DataTemplate> - </ListBox.DataTemplates> - </ListBox> - </Border> - <StackPanel - Grid.Row="1" - Margin="0 24 0 0" - HorizontalAlignment="Left" - Orientation="Horizontal" - Spacing="10"> - <Button - Click="ManageSaves" - Content="{locale:Locale UserProfilesManageSaves}" /> - <Button - Click="RecoverLostAccounts" - Content="{locale:Locale UserProfilesRecoverLostAccounts}" /> - </StackPanel> - <StackPanel - Grid.Row="1" - Margin="0 24 0 0" - HorizontalAlignment="Right" - Orientation="Horizontal"> - <Button - Click="Close" - Content="{locale:Locale UserProfilesClose}" /> - </StackPanel> - </Grid> -</UserControl> diff --git a/src/Ryujinx.Ava/UI/Views/User/UserSelectorView.axaml.cs b/src/Ryujinx.Ava/UI/Views/User/UserSelectorView.axaml.cs deleted file mode 100644 index fa3383aa..00000000 --- a/src/Ryujinx.Ava/UI/Views/User/UserSelectorView.axaml.cs +++ /dev/null @@ -1,129 +0,0 @@ -using Avalonia.Controls; -using Avalonia.Input; -using Avalonia.Interactivity; -using FluentAvalonia.UI.Controls; -using FluentAvalonia.UI.Navigation; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Controls; -using Ryujinx.Ava.UI.Models; -using Ryujinx.Ava.UI.ViewModels; -using Button = Avalonia.Controls.Button; - -namespace Ryujinx.Ava.UI.Views.User -{ - public partial class UserSelectorViews : UserControl - { - private NavigationDialogHost _parent; - - public UserProfileViewModel ViewModel { get; set; } - - public UserSelectorViews() - { - InitializeComponent(); - - if (Program.PreviewerDetached) - { - AddHandler(Frame.NavigatedToEvent, (s, e) => - { - NavigatedTo(e); - }, RoutingStrategies.Direct); - } - } - - private void NavigatedTo(NavigationEventArgs arg) - { - if (Program.PreviewerDetached) - { - if (arg.NavigationMode == NavigationMode.New) - { - _parent = (NavigationDialogHost)arg.Parameter; - ViewModel = _parent.ViewModel; - } - - if (arg.NavigationMode == NavigationMode.Back) - { - ((ContentDialog)_parent.Parent).Title = LocaleManager.Instance[LocaleKeys.UserProfileWindowTitle]; - } - - DataContext = ViewModel; - } - } - - private void Grid_PointerEntered(object sender, PointerEventArgs e) - { - if (sender is Grid grid) - { - if (grid.DataContext is UserProfile profile) - { - profile.IsPointerOver = true; - } - } - } - - private void Grid_OnPointerExited(object sender, PointerEventArgs e) - { - if (sender is Grid grid) - { - if (grid.DataContext is UserProfile profile) - { - profile.IsPointerOver = false; - } - } - } - - private void ProfilesList_SelectionChanged(object sender, SelectionChangedEventArgs e) - { - if (sender is ListBox listBox) - { - int selectedIndex = listBox.SelectedIndex; - - if (selectedIndex >= 0 && selectedIndex < ViewModel.Profiles.Count) - { - if (ViewModel.Profiles[selectedIndex] is UserProfile userProfile) - { - _parent?.AccountManager?.OpenUser(userProfile.UserId); - - foreach (BaseModel profile in ViewModel.Profiles) - { - if (profile is UserProfile uProfile) - { - uProfile.UpdateState(); - } - } - } - } - } - } - - private void AddUser(object sender, RoutedEventArgs e) - { - _parent.AddUser(); - } - - private void EditUser(object sender, RoutedEventArgs e) - { - if (sender is Button button) - { - if (button.DataContext is UserProfile userProfile) - { - _parent.EditUser(userProfile); - } - } - } - - private void ManageSaves(object sender, RoutedEventArgs e) - { - _parent.ManageSaves(); - } - - private void RecoverLostAccounts(object sender, RoutedEventArgs e) - { - _parent.RecoverLostAccounts(); - } - - private void Close(object sender, RoutedEventArgs e) - { - ((ContentDialog)_parent.Parent).Hide(); - } - } -} |
