aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava/Ui/Controls/GameListView.axaml
diff options
context:
space:
mode:
authorEmmanuel Hansen <emmausssss@gmail.com>2022-05-15 11:30:15 +0000
committerGitHub <noreply@github.com>2022-05-15 13:30:15 +0200
commitdeb99d2cae3e80bdf70cb52c6c160094dc7c9292 (patch)
treee60f44d1b4bd45bbf36fcfa750fb99787febfdbe /Ryujinx.Ava/Ui/Controls/GameListView.axaml
parent9ba73ffbe5f78c0403cf102b95768f388da05122 (diff)
Avalonia UI - Part 1 (#3270)
* avalonia part 1 * remove vulkan ui backend * move ui common files to ui common project * get name for oading screen from device * rebase. * review 1 * review 1.1 * review * cleanup * addressed review * use cancellation token * review * review * rebased * cancel library loading when closing window * remove star image, use fonticon instead * delete render control frame buffer when game ends. change position of fav star * addressed @Thog review * ensure the right ui is downloaded in updates * fix crash when showing not supported dialog during controller request * add prefix to artifact names * Auto-format Avalonia project * Fix input * Fix build, simplify app disposal * remove nv stutter thread * addressed review * add missing change * maintain window size if new size is zero length * add game, handheld, docked to local * reverse scale main window * Update de_DE.json * Update de_DE.json * Update de_DE.json * Update italian json * Update it_IT.json * let render timer poll with no wait * remove unused code * more unused code * enabled tiered compilation and trimming * check if window event is not closed before signaling * fix atmospher case * locale fix * locale fix * remove explicit tiered compilation declarations * Remove ) it_IT.json * Remove ) de_DE.json * Update it_IT.json * Update pt_BR locale with latest strings * Remove ')' * add more strings to locale * update locale * remove extra slash * remove extra slash * set firmware version to 0 if key's not found * fix * revert timer changes * lock on object instead * Update it_IT.json * remove unused method * add load screen text to locale * drop swap event * Update de_DE.json * Update de_DE.json * do null check when stopping emulator * Update de_DE.json * Create tr_TR.json * Add tr_TR * Add tr_TR + Turkish * Update it_IT.json * Update Ryujinx.Ava/Input/AvaloniaMappingHelper.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * addressed review * Update Ryujinx.Ava/Ui/Backend/OpenGl/OpenGlRenderTarget.cs Co-authored-by: gdkchan <gab.dark.100@gmail.com> * use avalonia's inbuilt renderer on linux * removed whitespace * workaround for queue render crash with vsync off * drop custom backend * format files * fix not closing issue * remove warnings * rebase * update avalonia library * Reposition the Text and Button on About Page * Assign build version * Remove appveyor text Co-authored-by: gdk <gab.dark.100@gmail.com> Co-authored-by: Niwu34 <67392333+Niwu34@users.noreply.github.com> Co-authored-by: Antonio Brugnolo <36473846+AntoSkate@users.noreply.github.com> Co-authored-by: aegiff <99728970+aegiff@users.noreply.github.com> Co-authored-by: Ac_K <Acoustik666@gmail.com> Co-authored-by: MostlyWhat <78652091+MostlyWhat@users.noreply.github.com>
Diffstat (limited to 'Ryujinx.Ava/Ui/Controls/GameListView.axaml')
-rw-r--r--Ryujinx.Ava/Ui/Controls/GameListView.axaml188
1 files changed, 188 insertions, 0 deletions
diff --git a/Ryujinx.Ava/Ui/Controls/GameListView.axaml b/Ryujinx.Ava/Ui/Controls/GameListView.axaml
new file mode 100644
index 00000000..7ab79c23
--- /dev/null
+++ b/Ryujinx.Ava/Ui/Controls/GameListView.axaml
@@ -0,0 +1,188 @@
+<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:flex="clr-namespace:Avalonia.Flexbox;assembly=Avalonia.Flexbox"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
+ xmlns:controls="clr-namespace:Ryujinx.Ava.Ui.Controls"
+ xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
+ mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+ x:Class="Ryujinx.Ava.Ui.Controls.GameListView">
+ <UserControl.Resources>
+ <controls:BitmapArrayValueConverter x:Key="ByteImage" />
+ <MenuFlyout x:Key="GameContextMenu" Opened="MenuBase_OnMenuOpened">
+ <MenuItem
+ Command="{Binding ToggleFavorite}"
+ Header="{locale:Locale GameListContextMenuToggleFavorite}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuToggleFavoriteToolTip}" />
+ <Separator />
+ <MenuItem
+ Command="{Binding OpenUserSaveDirectory}"
+ Header="{locale:Locale GameListContextMenuOpenUserSaveDirectory}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuOpenUserSaveDirectoryToolTip}" />
+ <MenuItem
+ Command="{Binding OpenDeviceSaveDirectory}"
+ Header="{locale:Locale GameListContextMenuOpenUserDeviceDirectory}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuOpenUserDeviceDirectoryToolTip}" />
+ <MenuItem
+ Command="{Binding OpenBcatSaveDirectory}"
+ Header="{locale:Locale GameListContextMenuOpenUserBcatDirectory}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuOpenUserBcatDirectoryToolTip}" />
+ <Separator />
+ <MenuItem
+ Command="{Binding OpenTitleUpdateManager}"
+ Header="{locale:Locale GameListContextMenuManageTitleUpdates}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuManageTitleUpdatesToolTip}" />
+ <MenuItem
+ Command="{Binding OpenDlcManager}"
+ Header="{locale:Locale GameListContextMenuManageDlc}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuManageDlcToolTip}" />
+ <MenuItem
+ Command="{Binding OpenCheatManager}"
+ Header="{locale:Locale GameListContextMenuManageCheat}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuManageCheatToolTip}" />
+ <MenuItem
+ Command="{Binding OpenModsDirectory}"
+ Header="{locale:Locale GameListContextMenuOpenModsDirectory}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuOpenModsDirectoryToolTip}" />
+ <MenuItem
+ Command="{Binding OpenSdModsDirectory}"
+ Header="{locale:Locale GameListContextMenuOpenSdModsDirectory}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuOpenSdModsDirectoryToolTip}" />
+ <Separator />
+ <MenuItem Header="{locale:Locale GameListContextMenuCacheManagement}">
+ <MenuItem
+ Command="{Binding PurgePtcCache}"
+ Header="{locale:Locale GameListContextMenuCacheManagementPurgePptc}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuCacheManagementPurgePptcToolTip}" />
+ <MenuItem
+ Command="{Binding PurgeShaderCache}"
+ Header="{locale:Locale GameListContextMenuCacheManagementPurgeShaderCache}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuCacheManagementPurgeShaderCacheToolTip}" />
+ <MenuItem
+ Command="{Binding OpenPtcDirectory}"
+ Header="{locale:Locale GameListContextMenuCacheManagementOpenPptcDirectory}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuCacheManagementOpenPptcDirectoryToolTip}" />
+ <MenuItem
+ Command="{Binding OpenShaderCacheDirectory}"
+ Header="{locale:Locale GameListContextMenuCacheManagementOpenShaderCacheDirectory}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip}" />
+ </MenuItem>
+ <MenuItem Header="{locale:Locale GameListContextMenuExtractData}">
+ <MenuItem
+ Command="{Binding ExtractExeFs}"
+ Header="{locale:Locale GameListContextMenuExtractDataExeFS}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuExtractDataExeFSToolTip}" />
+ <MenuItem
+ Command="{Binding ExtractRomFs}"
+ Header="{locale:Locale GameListContextMenuExtractDataRomFS}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuExtractDataRomFSToolTip}" />
+ <MenuItem
+ Command="{Binding ExtractLogo}"
+ Header="{locale:Locale GameListContextMenuExtractDataLogo}"
+ ToolTip.Tip="{locale:Locale GameListContextMenuExtractDataLogoToolTip}" />
+ </MenuItem>
+ </MenuFlyout>
+ </UserControl.Resources>
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*" />
+ </Grid.RowDefinitions>
+ <ListBox Grid.Row="0"
+ Padding="8"
+ HorizontalAlignment="Stretch"
+ DoubleTapped="GameList_DoubleTapped"
+ SelectionChanged="GameList_SelectionChanged"
+ ContextFlyout="{StaticResource GameContextMenu}"
+ VerticalAlignment="Stretch"
+ Name="GameListBox"
+ Items="{Binding AppsObservableList}">
+ <ListBox.ItemsPanel>
+ <ItemsPanelTemplate>
+ <StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Orientation="Vertical" Spacing="2" />
+ </ItemsPanelTemplate>
+ </ListBox.ItemsPanel>
+ <ListBox.Styles>
+ <Style Selector="ListBoxItem">
+ <Setter Property="Padding" Value="0" />
+ <Setter Property="Margin" Value="0" />
+ <Setter Property="CornerRadius" Value="5" />
+ <Setter Property="BorderBrush" Value="{DynamicResource SystemAccentColorDark3}" />
+ <Setter Property="BorderThickness" Value="2" />
+ <Style.Animations>
+ <Animation Duration="0:0:0.7">
+ <KeyFrame Cue="0%">
+ <Setter Property="MaxHeight" Value="0"/>
+ <Setter Property="Opacity" Value="0.0"/>
+ </KeyFrame>
+ <KeyFrame Cue="50%">
+ <Setter Property="MaxHeight" Value="1000"/>
+ <Setter Property="Opacity" Value="0.3"/>
+ </KeyFrame>
+ <KeyFrame Cue="100%">
+ <Setter Property="MaxHeight" Value="1000"/>
+ <Setter Property="Opacity" Value="1.0"/>
+ </KeyFrame>
+ </Animation>
+ </Style.Animations>
+ </Style>
+ </ListBox.Styles>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid>
+ <Border HorizontalAlignment="Stretch"
+ Padding="10" CornerRadius="5"
+ VerticalAlignment="Stretch" Margin="0" ClipToBounds="True">
+ <Grid >
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="10"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <Grid.RowDefinitions>
+ <RowDefinition/>
+ </Grid.RowDefinitions>
+ <Image
+ Classes.small="{Binding $parent[UserControl].DataContext.IsGridSmall}"
+ Classes.normal="{Binding $parent[UserControl].DataContext.IsGridMedium}"
+ Classes.large="{Binding $parent[UserControl].DataContext.IsGridLarge}"
+ Classes.huge="{Binding $parent[UserControl].DataContext.IsGridHuge}"
+ Grid.RowSpan="3" Grid.Column="0" Margin="0"
+ Source="{Binding Icon, Converter={StaticResource ByteImage}}" />
+ <StackPanel Orientation="Vertical" Spacing="5" VerticalAlignment="Top" HorizontalAlignment="Left"
+ Grid.Column="2">
+ <TextBlock Text="{Binding TitleName}" TextAlignment="Left" TextWrapping="Wrap"
+ HorizontalAlignment="Stretch" />
+ <TextBlock Text="{Binding Developer}" TextAlignment="Left" TextWrapping="Wrap"
+ HorizontalAlignment="Stretch" />
+ <TextBlock Text="{Binding Version}" TextAlignment="Left" TextWrapping="Wrap"
+ HorizontalAlignment="Stretch" />
+ </StackPanel>
+ <StackPanel Orientation="Vertical" Spacing="5" VerticalAlignment="Top" HorizontalAlignment="Right"
+ Grid.Column="3">
+ <TextBlock Text="{Binding TimePlayed}" TextAlignment="Right" TextWrapping="Wrap"
+ HorizontalAlignment="Stretch" />
+ <TextBlock Text="{Binding LastPlayed}" TextAlignment="Right" TextWrapping="Wrap"
+ HorizontalAlignment="Stretch" />
+ <TextBlock Text="{Binding FileSize}" TextAlignment="Right" TextWrapping="Wrap"
+ HorizontalAlignment="Stretch" />
+ </StackPanel>
+ <ui:SymbolIcon Grid.Row="0" Grid.Column="0" FontSize="20"
+ Foreground="Yellow"
+ Symbol="StarFilled"
+ IsVisible="{Binding Favorite}" Margin="-5, -5, 0, 0" VerticalAlignment="Top"
+ HorizontalAlignment="Left" />
+ <ui:SymbolIcon Grid.Row="0" Grid.Column="0" FontSize="20"
+ Foreground="Black"
+ Symbol="Star"
+ IsVisible="{Binding Favorite}" Margin="-5, -5, 0, 0" VerticalAlignment="Top"
+ HorizontalAlignment="Left" />
+ </Grid>
+ </Border>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Grid>
+</UserControl> \ No newline at end of file