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/Main | |
| 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/Main')
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml | 203 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml.cs | 232 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml | 289 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml.cs | 72 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Main/MainViewControls.axaml | 177 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Main/MainViewControls.axaml.cs | 54 |
6 files changed, 0 insertions, 1027 deletions
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; - } - } -} |
