[GUI] Redesign and reorganize Statistics dialog.

This commit is contained in:
2025-10-27 17:21:21 +00:00
parent 9e8479b390
commit ad9fbdbe16

View File

@@ -36,6 +36,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:dialogs="clr-namespace:Aaru.Gui.ViewModels.Dialogs" xmlns:dialogs="clr-namespace:Aaru.Gui.ViewModels.Dialogs"
xmlns:controls="clr-namespace:Aaru.Gui.Controls"
xmlns:localization="clr-namespace:Aaru.Localization;assembly=Aaru.Localization" xmlns:localization="clr-namespace:Aaru.Localization;assembly=Aaru.Localization"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignWidth="800" d:DesignWidth="800"
@@ -49,174 +50,289 @@
<Design.DataContext> <Design.DataContext>
<dialogs:StatisticsViewModel /> <dialogs:StatisticsViewModel />
</Design.DataContext> </Design.DataContext>
<Border Padding="15"> <Grid Margin="12"
<Grid RowDefinitions="*,Auto"> RowSpacing="8"
RowDefinitions="*,Auto">
<TabControl Grid.Row="0" <TabControl Grid.Row="0"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"> VerticalAlignment="Stretch">
<TabItem IsVisible="{Binding CommandsVisible}"> <TabItem IsVisible="{Binding CommandsVisible, Mode=OneWay}">
<TabItem.Header> <TabItem.Header>
<TextBlock Text="{x:Static localization:UI.Title_Commands}" /> <TextBlock Text="{x:Static localization:UI.Title_Commands}" />
</TabItem.Header> </TabItem.Header>
<StackPanel VerticalAlignment="Top" <StackPanel VerticalAlignment="Top"
HorizontalAlignment="Stretch"> HorizontalAlignment="Stretch">
<TextBlock Text="{Binding FsInfoText}" <TextBlock Text="{Binding FsInfoText, Mode=OneWay}"
IsVisible="{Binding FsInfoVisible}" /> IsVisible="{Binding FsInfoVisible, Mode=OneWay}" />
<TextBlock Text="{Binding ChecksumText}" <TextBlock Text="{Binding ChecksumText, Mode=OneWay}"
IsVisible="{Binding ChecksumVisible}" /> IsVisible="{Binding ChecksumVisible, Mode=OneWay}" />
<TextBlock Text="{Binding CompareText}" <TextBlock Text="{Binding CompareText, Mode=OneWay}"
IsVisible="{Binding CompareVisible}" /> IsVisible="{Binding CompareVisible, Mode=OneWay}" />
<TextBlock Text="{Binding ConvertImageText}" <TextBlock Text="{Binding ConvertImageText, Mode=OneWay}"
IsVisible="{Binding ConvertImageVisible}" /> IsVisible="{Binding ConvertImageVisible, Mode=OneWay}" />
<TextBlock Text="{Binding CreateSidecarText}" <TextBlock Text="{Binding CreateSidecarText, Mode=OneWay}"
IsVisible="{Binding CreateSidecarVisible}" /> IsVisible="{Binding CreateSidecarVisible, Mode=OneWay}" />
<TextBlock Text="{Binding DecodeText}" <TextBlock Text="{Binding DecodeText, Mode=OneWay}"
IsVisible="{Binding DecodeVisible}" /> IsVisible="{Binding DecodeVisible, Mode=OneWay}" />
<TextBlock Text="{Binding DeviceInfoText}" <TextBlock Text="{Binding DeviceInfoText, Mode=OneWay}"
IsVisible="{Binding DeviceInfoVisible}" /> IsVisible="{Binding DeviceInfoVisible, Mode=OneWay}" />
<TextBlock Text="{Binding DeviceReportText}" <TextBlock Text="{Binding DeviceReportText, Mode=OneWay}"
IsVisible="{Binding DeviceReportVisible}" /> IsVisible="{Binding DeviceReportVisible, Mode=OneWay}" />
<TextBlock Text="{Binding DumpMediaText}" <TextBlock Text="{Binding DumpMediaText, Mode=OneWay}"
IsVisible="{Binding DumpMediaVisible}" /> IsVisible="{Binding DumpMediaVisible, Mode=OneWay}" />
<TextBlock Text="{Binding EntropyText}" <TextBlock Text="{Binding EntropyText, Mode=OneWay}"
IsVisible="{Binding EntropyVisible}" /> IsVisible="{Binding EntropyVisible, Mode=OneWay}" />
<TextBlock Text="{Binding FormatsCommandText}" <TextBlock Text="{Binding FormatsCommandText, Mode=OneWay}"
IsVisible="{Binding FormatsCommandVisible}" /> IsVisible="{Binding FormatsCommandVisible, Mode=OneWay}" />
<TextBlock Text="{Binding ImageInfoText}" <TextBlock Text="{Binding ImageInfoText, Mode=OneWay}"
IsVisible="{Binding ImageInfoVisible}" /> IsVisible="{Binding ImageInfoVisible, Mode=OneWay}" />
<TextBlock Text="{Binding MediaInfoText}" <TextBlock Text="{Binding MediaInfoText, Mode=OneWay}"
IsVisible="{Binding MediaInfoVisible}" /> IsVisible="{Binding MediaInfoVisible, Mode=OneWay}" />
<TextBlock Text="{Binding MediaScanText}" <TextBlock Text="{Binding MediaScanText, Mode=OneWay}"
IsVisible="{Binding MediaScanVisible}" /> IsVisible="{Binding MediaScanVisible, Mode=OneWay}" />
<TextBlock Text="{Binding PrintHexText}" <TextBlock Text="{Binding PrintHexText, Mode=OneWay}"
IsVisible="{Binding PrintHexVisible}" /> IsVisible="{Binding PrintHexVisible, Mode=OneWay}" />
<TextBlock Text="{Binding VerifyText}" <TextBlock Text="{Binding VerifyText, Mode=OneWay}"
IsVisible="{Binding VerifyVisible}" /> IsVisible="{Binding VerifyVisible, Mode=OneWay}" />
</StackPanel> </StackPanel>
</TabItem> </TabItem>
<TabItem IsVisible="{Binding FiltersVisible}"> <TabItem IsVisible="{Binding FiltersVisible, Mode=OneWay}">
<TabItem.Header> <TabItem.Header>
<TextBlock Text="{x:Static localization:UI.Title_Filters}" /> <TextBlock Text="{x:Static localization:UI.Title_Filters}" />
</TabItem.Header> </TabItem.Header>
<DataGrid ItemsSource="{Binding Filters}" <DataGrid ItemsSource="{Binding Filters, Mode=OneWay}"
HorizontalScrollBarVisibility="Visible"> HorizontalScrollBarVisibility="Visible">
<DataGrid.Columns> <DataGrid.Columns>
<!-- TODO: Bind header --> <DataGridTemplateColumn Width="Auto">
<DataGridTextColumn Header="{x:Static localization:UI.Title_Filter}" <DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Name}" <DataTemplate>
Width="Auto" <controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Filter}" />
IsReadOnly="True" /> </DataTemplate>
<DataGridTextColumn Header="{x:Static localization:UI.Title_Times_used}" </DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Count}" <DataGridTemplateColumn.CellTemplate>
Width="Auto" <DataTemplate>
IsReadOnly="True" /> <TextBlock Text="{Binding Name, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Times_used}" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Count, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</TabItem> </TabItem>
<TabItem IsVisible="{Binding FormatsVisible}"> <TabItem IsVisible="{Binding FormatsVisible, Mode=OneWay}">
<TabItem.Header> <TabItem.Header>
<TextBlock Text="{x:Static localization:UI.Title_Formats}" /> <TextBlock Text="{x:Static localization:UI.Title_Formats}" />
</TabItem.Header> </TabItem.Header>
<DataGrid ItemsSource="{Binding Formats}" <DataGrid ItemsSource="{Binding Formats, Mode=OneWay}"
HorizontalScrollBarVisibility="Visible"> HorizontalScrollBarVisibility="Visible">
<DataGrid.Columns> <DataGrid.Columns>
<!-- TODO: Bind header --> <DataGridTemplateColumn Width="Auto">
<DataGridTextColumn Header="{x:Static localization:UI.Title_Format}" <DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Name}" <DataTemplate>
Width="Auto" <controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Format}" />
IsReadOnly="True" /> </DataTemplate>
<DataGridTextColumn Header="{x:Static localization:UI.Title_Times_used}" </DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Count}" <DataGridTemplateColumn.CellTemplate>
Width="Auto" <DataTemplate>
IsReadOnly="True" /> <TextBlock Text="{Binding Name, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Times_used}" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Count, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</TabItem> </TabItem>
<TabItem IsVisible="{Binding PartitionsVisible}"> <TabItem IsVisible="{Binding PartitionsVisible, Mode=OneWay}">
<TabItem.Header> <TabItem.Header>
<TextBlock Text="{x:Static localization:UI.Title_Partitions}" /> <TextBlock Text="{x:Static localization:UI.Title_Partitions}" />
</TabItem.Header> </TabItem.Header>
<DataGrid ItemsSource="{Binding Partitions}" <DataGrid ItemsSource="{Binding Partitions, Mode=OneWay}"
HorizontalScrollBarVisibility="Visible"> HorizontalScrollBarVisibility="Visible">
<DataGrid.Columns> <DataGrid.Columns>
<!-- TODO: Bind header --> <DataGridTemplateColumn Width="Auto">
<DataGridTextColumn Header="{x:Static localization:UI.Title_Partition}" <DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Name}" <DataTemplate>
Width="Auto" <controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Partition}" />
IsReadOnly="True" /> </DataTemplate>
<DataGridTextColumn Header="{x:Static localization:UI.Title_Times_used}" </DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Count}" <DataGridTemplateColumn.CellTemplate>
Width="Auto" <DataTemplate>
IsReadOnly="True" /> <TextBlock Text="{Binding Name, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Times_used}" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Count, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</TabItem> </TabItem>
<TabItem IsVisible="{Binding FilesystemsVisible}"> <TabItem IsVisible="{Binding FilesystemsVisible, Mode=OneWay}">
<TabItem.Header> <TabItem.Header>
<TextBlock Text="{x:Static localization:UI.Title_Filesystems}" /> <TextBlock Text="{x:Static localization:UI.Title_Filesystems}" />
</TabItem.Header> </TabItem.Header>
<DataGrid ItemsSource="{Binding Filesystems}" <DataGrid ItemsSource="{Binding Filesystems, Mode=OneWay}"
HorizontalScrollBarVisibility="Visible"> HorizontalScrollBarVisibility="Visible">
<DataGrid.Columns> <DataGrid.Columns>
<!-- TODO: Bind header --> <DataGridTemplateColumn Width="Auto">
<DataGridTextColumn Header="{x:Static localization:UI.Title_Filesystem}" <DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Name}" <DataTemplate>
Width="Auto" <controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Filesystem}" />
IsReadOnly="True" /> </DataTemplate>
<DataGridTextColumn Header="{x:Static localization:UI.Title_Times_used}" </DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Count}" <DataGridTemplateColumn.CellTemplate>
Width="Auto" <DataTemplate>
IsReadOnly="True" /> <TextBlock Text="{Binding Name, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Times_used}" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Count, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</TabItem> </TabItem>
<TabItem IsVisible="{Binding DevicesVisible}"> <TabItem IsVisible="{Binding DevicesVisible, Mode=OneWay}">
<TabItem.Header> <TabItem.Header>
<TextBlock Text="{x:Static localization:UI.Title_Devices}" /> <TextBlock Text="{x:Static localization:UI.Title_Devices}" />
</TabItem.Header> </TabItem.Header>
<DataGrid ItemsSource="{Binding Devices}" <DataGrid ItemsSource="{Binding Devices, Mode=OneWay}"
HorizontalScrollBarVisibility="Visible"> HorizontalScrollBarVisibility="Visible">
<DataGrid.Columns> <DataGrid.Columns>
<!-- TODO: Bind header --> <DataGridTemplateColumn Width="Auto">
<DataGridTextColumn Header="{x:Static localization:UI.Title_Device}" <DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Model}" <DataTemplate>
Width="Auto" <controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Device}" />
IsReadOnly="True" /> </DataTemplate>
<DataGridTextColumn Header="{x:Static localization:UI.Title_Manufacturer}" </DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Manufacturer}" <DataGridTemplateColumn.CellTemplate>
Width="Auto" <DataTemplate>
IsReadOnly="True" /> <TextBlock Text="{Binding Model, Mode=OneWay}" />
<DataGridTextColumn Header="{x:Static localization:UI.Title_Revision}" </DataTemplate>
Binding="{Binding Revision}" </DataGridTemplateColumn.CellTemplate>
Width="Auto" </DataGridTemplateColumn>
IsReadOnly="True" /> <DataGridTemplateColumn Width="Auto">
<DataGridTextColumn Header="{x:Static localization:UI.Title_Bus}" <DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Bus}" <DataTemplate>
Width="Auto" <controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Manufacturer}" />
IsReadOnly="True" /> </DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Manufacturer, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Revision}" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Revision, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Bus}" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Bus, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</TabItem> </TabItem>
<TabItem IsVisible="{Binding MediasVisible}"> <TabItem IsVisible="{Binding MediasVisible, Mode=OneWay}">
<TabItem.Header> <TabItem.Header>
<TextBlock Text="{x:Static localization:UI.Title_Medias}" /> <TextBlock Text="{x:Static localization:UI.Title_Medias}" />
</TabItem.Header> </TabItem.Header>
<DataGrid ItemsSource="{Binding Medias}" <DataGrid ItemsSource="{Binding Medias, Mode=OneWay}"
HorizontalScrollBarVisibility="Visible"> HorizontalScrollBarVisibility="Visible">
<DataGrid.Columns> <DataGrid.Columns>
<!-- TODO: Bind header --> <DataGridTemplateColumn Width="Auto">
<DataGridTextColumn Header="{x:Static localization:UI.Title_Media}" <DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Name}" <DataTemplate>
Width="Auto" <controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Media}" />
IsReadOnly="True" /> </DataTemplate>
<DataGridTextColumn Header="{x:Static localization:UI.Title_Times_used}" </DataGridTemplateColumn.HeaderTemplate>
Binding="{Binding Count}" <DataGridTemplateColumn.CellTemplate>
Width="Auto" <DataTemplate>
IsReadOnly="True" /> <TextBlock Text="{Binding Name, Mode=OneWay}" />
<DataGridTextColumn Header="{x:Static localization:Core.Title_Type_for_media}" </DataTemplate>
Binding="{Binding Type}" </DataGridTemplateColumn.CellTemplate>
Width="Auto" </DataGridTemplateColumn>
IsReadOnly="True" /> <DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Times_used}" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Count, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<controls:SpectreTextBlock Text="{x:Static localization:Core.Title_Type_for_media}" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Type, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</TabItem> </TabItem>
@@ -224,10 +340,9 @@
<Button Grid.Row="1" <Button Grid.Row="1"
HorizontalAlignment="Right" HorizontalAlignment="Right"
VerticalAlignment="Center" VerticalAlignment="Center"
Command="{Binding CloseCommand}" Command="{Binding CloseCommand, Mode=OneWay}"
Padding="10"> Padding="10">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Close}" /> <TextBlock Text="{x:Static localization:UI.ButtonLabel_Close}" />
</Button> </Button>
</Grid> </Grid>
</Border>
</Window> </Window>