mirror of
https://github.com/JosefNemec/Playnite.git
synced 2026-01-09 06:11:22 +08:00
209 lines
14 KiB
XML
209 lines
14 KiB
XML
<UserControl x:Class="Playnite.DesktopApp.Controls.LibraryStatistics"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:p="clr-namespace:Playnite;assembly=Playnite"
|
|
xmlns:pmrk="clr-namespace:Playnite.DesktopApp.Markup"
|
|
xmlns:pdvm="clr-namespace:Playnite.DesktopApp.ViewModels"
|
|
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
|
mc:Ignorable="d"
|
|
d:DesignHeight="650" d:DesignWidth="900"
|
|
d:DataContext="{x:Static pdvm:StatisticsViewModel.DesignIntance}">
|
|
|
|
<UserControl.Resources>
|
|
<p:BindingProxy x:Key="DCProxy" Data="{Binding}" />
|
|
|
|
<ControlTemplate x:Key="OverallStatsTemplate">
|
|
<ControlTemplate.Resources>
|
|
<Style TargetType="TextBlock" BasedOn="{StaticResource BaseTextBlockStyle}" />
|
|
</ControlTemplate.Resources>
|
|
<GroupBox Header="{DynamicResource LOCOverviewLabel}" Margin="10" MaxHeight="330">
|
|
<GridEx GridEx.AutoLayoutColumns="3" GridEx.ColumnCount="3" GridEx.RowCount="21"
|
|
GridEx.StarColumns="0" MinWidth="220" Margin="10">
|
|
<TextBlock Text="{DynamicResource LOCAll}" Margin="0,3,15,3" />
|
|
<TextBlock Text="{Binding TotalCount}" Margin="0,3,0,3" TextAlignment="Right" />
|
|
<Canvas />
|
|
|
|
<TextBlock Text="{DynamicResource LOCGameIsInstalledTitle}" Margin="0,3,15,3" />
|
|
<TextBlock Text="{Binding Installed.Value}" Margin="0,3,0,3" TextAlignment="Right" />
|
|
<TextBlock Text="{Binding Installed.Percentage, StringFormat='{}{0}%'}" Margin="15,3,0,3" TextAlignment="Right" />
|
|
|
|
<TextBlock Text="{DynamicResource LOCGameIsUnInstalledTitle}" Margin="0,3,15,3" />
|
|
<TextBlock Text="{Binding NotInstalled.Value}" Margin="0,3,0,3" TextAlignment="Right" />
|
|
<TextBlock Text="{Binding NotInstalled.Percentage, StringFormat='{}{0}%'}" Margin="15,3,0,3" TextAlignment="Right" />
|
|
|
|
<TextBlock Text="{DynamicResource LOCGameHiddenTitle}" Margin="0,3,15,3" />
|
|
<TextBlock Text="{Binding Hidden.Value}" Margin="0,3,0,3" TextAlignment="Right" />
|
|
<TextBlock Text="{Binding Hidden.Percentage, StringFormat='{}{0}%'}" Margin="15,3,0,3" TextAlignment="Right" />
|
|
|
|
<TextBlock Text="{DynamicResource LOCGameFavoriteTitle}" Margin="0,3,15,3" />
|
|
<TextBlock Text="{Binding Favorite.Value}" Margin="0,3,0,3" TextAlignment="Right" />
|
|
<TextBlock Text="{Binding Favorite.Percentage, StringFormat='{}{0}%'}" Margin="15,3,0,3" TextAlignment="Right" />
|
|
|
|
<TextBlock Text="{DynamicResource LOCStatsTotalPlayTime}" Margin="0,15,15,3"/>
|
|
<TextBlock Text="{Binding TotalPlayTime, Converter={StaticResource PlayTimeToStringConverter}, ConverterParameter={pmrk:Settings PlaytimeUseDaysFormat, DirectValue=True}}"
|
|
Grid.ColumnSpan="2" Margin="0,15,0,3" />
|
|
|
|
<TextBlock Text="{DynamicResource LOCStatsAvaragePlayTime}" Margin="0,3,15,3" />
|
|
<TextBlock Text="{Binding AvaragePlayTime, Converter={StaticResource PlayTimeToStringConverter}, ConverterParameter={pmrk:Settings PlaytimeUseDaysFormat, DirectValue=True}}"
|
|
Grid.ColumnSpan="2" Margin="0,3,0,3"/>
|
|
|
|
<TextBlock Text="{DynamicResource LOCStatsTotalInstallSize}" Margin="0,15,15,3"/>
|
|
<TextBlock Text="{Binding TotalInstallSize, Converter={StaticResource NullableUlongBytesSizeToStringConverter}}"
|
|
Grid.ColumnSpan="2" Margin="0,15,0,3" />
|
|
</GridEx>
|
|
</GroupBox>
|
|
</ControlTemplate>
|
|
|
|
<ControlTemplate x:Key="MostPlayedTemplate">
|
|
<ControlTemplate.Resources>
|
|
<Style TargetType="TextBlock" BasedOn="{StaticResource BaseTextBlockStyle}" />
|
|
</ControlTemplate.Resources>
|
|
<GroupBox Header="{DynamicResource LOCStatsTopPlayTime}" Margin="10" MaxHeight="330">
|
|
<ItemsControl ItemsSource="{Binding TopPlayed}" Width="350" Margin="10">
|
|
<ItemsControl.ItemTemplate>
|
|
<DataTemplate>
|
|
<DockPanel>
|
|
<TextBlock Text="{Binding Percentage, StringFormat='{}{0}%'}"
|
|
Style="{DynamicResource BaseTextBlockStyle}" Width="30"
|
|
DockPanel.Dock="Right" Margin="10,3,0,3"
|
|
TextAlignment="Right"/>
|
|
<TextBlock Text="{Binding Value, Converter={StaticResource PlayTimeToStringConverter}, ConverterParameter={pmrk:Settings PlaytimeUseDaysFormat, DirectValue=True}}"
|
|
Style="{DynamicResource BaseTextBlockStyle}"
|
|
DockPanel.Dock="Right" Margin="0,3,0,3"/>
|
|
<TextBlock Margin="0,3,0,3" ToolTip="{Binding Name}">
|
|
<Hyperlink Command="{Binding Data.NavigateToGameCommand, Source={StaticResource DCProxy}}"
|
|
CommandParameter="{Binding Game}">
|
|
<TextBlock Text="{Binding Name}" Margin="0,0,15,0"
|
|
TextTrimming="CharacterEllipsis" />
|
|
</Hyperlink>
|
|
</TextBlock>
|
|
</DockPanel>
|
|
</DataTemplate>
|
|
</ItemsControl.ItemTemplate>
|
|
<ItemsControl.Template>
|
|
<ControlTemplate>
|
|
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
|
|
<ItemsPresenter />
|
|
</ScrollViewer>
|
|
</ControlTemplate>
|
|
</ItemsControl.Template>
|
|
</ItemsControl>
|
|
</GroupBox>
|
|
</ControlTemplate>
|
|
|
|
<ControlTemplate x:Key="CompletionStatusTemplate">
|
|
<ControlTemplate.Resources>
|
|
<Style TargetType="TextBlock" BasedOn="{StaticResource BaseTextBlockStyle}" />
|
|
</ControlTemplate.Resources>
|
|
<GroupBox Header="{DynamicResource LOCCompletionStatus}" Margin="10" MaxHeight="330" >
|
|
<ItemsControl ItemsSource="{Binding CompletionStates}"
|
|
Width="250" Margin="10">
|
|
<ItemsControl.ItemTemplate>
|
|
<DataTemplate>
|
|
<DockPanel>
|
|
<TextBlock Text="{Binding Percentage, StringFormat='{}{0}%'}"
|
|
Style="{DynamicResource BaseTextBlockStyle}" Width="30"
|
|
DockPanel.Dock="Right" Margin="10,3,0,3"
|
|
TextAlignment="Right"/>
|
|
<TextBlock Text="{Binding Value}" Margin="0,3,0,3"
|
|
Style="{DynamicResource BaseTextBlockStyle}"
|
|
DockPanel.Dock="Right"/>
|
|
<TextBlock Text="{Binding Name}" Margin="0,3,15,3" DockPanel.Dock="Left"
|
|
TextTrimming="CharacterEllipsis"
|
|
Style="{DynamicResource BaseTextBlockStyle}"/>
|
|
</DockPanel>
|
|
</DataTemplate>
|
|
</ItemsControl.ItemTemplate>
|
|
</ItemsControl>
|
|
</GroupBox>
|
|
</ControlTemplate>
|
|
|
|
<ControlTemplate x:Key="GameProviderTemplate">
|
|
<ControlTemplate.Resources>
|
|
<Style TargetType="TextBlock" BasedOn="{StaticResource BaseTextBlockStyle}" />
|
|
</ControlTemplate.Resources>
|
|
<GroupBox Header="{DynamicResource LOCGameProviderTitle}" Margin="10" MaxHeight="330" >
|
|
<ItemsControl ItemsSource="{Binding GameProvider}"
|
|
Width="250" Margin="10">
|
|
<ItemsControl.ItemTemplate>
|
|
<DataTemplate>
|
|
<DockPanel>
|
|
<TextBlock Text="{Binding Percentage, StringFormat='{}{0}%'}"
|
|
Style="{DynamicResource BaseTextBlockStyle}" Width="30"
|
|
DockPanel.Dock="Right" Margin="10,3,0,3"
|
|
TextAlignment="Right"/>
|
|
<TextBlock Text="{Binding Value}" Margin="0,3,0,3"
|
|
Style="{DynamicResource BaseTextBlockStyle}"
|
|
DockPanel.Dock="Right"/>
|
|
<TextBlock Text="{Binding Name}" Margin="0,3,15,3" DockPanel.Dock="Left"
|
|
TextTrimming="CharacterEllipsis"
|
|
Style="{DynamicResource BaseTextBlockStyle}"/>
|
|
</DockPanel>
|
|
</DataTemplate>
|
|
</ItemsControl.ItemTemplate>
|
|
</ItemsControl>
|
|
</GroupBox>
|
|
</ControlTemplate>
|
|
</UserControl.Resources>
|
|
|
|
<DockPanel>
|
|
<StackPanel Orientation="Horizontal" Margin="10,10,0,0" DockPanel.Dock="Top">
|
|
<TextBlock VerticalAlignment="Center" WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<Hyperlink Command="{Binding NavigateBackCommand}">
|
|
<TextBlock Text="" FontFamily="{DynamicResource FontIcoFont}"
|
|
FontSize="26" />
|
|
</Hyperlink>
|
|
</TextBlock>
|
|
<TextBlock Text="{DynamicResource LOCStatistics}" VerticalAlignment="Center"
|
|
Style="{StaticResource BaseTextBlockStyle}"
|
|
Margin="10,0,0,0" FontSize="18"/>
|
|
<CheckBox IsChecked="{Binding IncludeHidden}" Content="{DynamicResource LOCStatsIncludeHidden}"
|
|
WindowChrome.IsHitTestVisibleInChrome="True"
|
|
Margin="50,0,0,0" VerticalAlignment="Center" />
|
|
</StackPanel>
|
|
<ScrollViewer HorizontalScrollBarVisibility="Disabled" Margin="10"
|
|
VerticalScrollBarVisibility="Auto">
|
|
<DockPanel>
|
|
<Expander DockPanel.Dock="Top" Header="{DynamicResource LOCStatsGlobal}" IsExpanded="True"
|
|
DataContext="{Binding GlobalStats}">
|
|
<WrapPanel>
|
|
<ContentControl Template="{StaticResource OverallStatsTemplate}" />
|
|
<ContentControl Template="{StaticResource CompletionStatusTemplate}" />
|
|
<ContentControl Template="{StaticResource MostPlayedTemplate}" />
|
|
<ContentControl Template="{StaticResource GameProviderTemplate}" />
|
|
</WrapPanel>
|
|
</Expander>
|
|
|
|
<Expander DockPanel.Dock="Top" Header="{DynamicResource LOCStatsFiltered}" IsExpanded="True">
|
|
<WrapPanel>
|
|
<ContentControl Template="{StaticResource OverallStatsTemplate}"
|
|
DataContext="{Binding FilteredStats}"/>
|
|
<ContentControl Template="{StaticResource CompletionStatusTemplate}"
|
|
DataContext="{Binding FilteredStats}"/>
|
|
<ContentControl Template="{StaticResource MostPlayedTemplate}"
|
|
DataContext="{Binding FilteredStats}"/>
|
|
<GroupBox Header="{DynamicResource LOCFilter}" Grid.Column="0" Margin="10"
|
|
MaxHeight="330">
|
|
<DockPanel Width="220">
|
|
<ComboBox SelectedValue="{Binding SelectedFilter}" ItemsSource="{Binding Filters}"
|
|
DisplayMemberPath="Name" DockPanel.Dock="Top"/>
|
|
<ListBox BorderThickness="0" Margin="0,5,0,0" DockPanel.Dock="Top"
|
|
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
|
|
SelectedItem="{Binding SelectedFilterObject}" ItemsSource="{Binding FilterObjects}">
|
|
<ListBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Name}" TextTrimming="CharacterEllipsis" />
|
|
</DataTemplate>
|
|
</ListBox.ItemTemplate>
|
|
</ListBox>
|
|
</DockPanel>
|
|
</GroupBox>
|
|
</WrapPanel>
|
|
</Expander>
|
|
</DockPanel>
|
|
</ScrollViewer>
|
|
</DockPanel>
|
|
</UserControl>
|