[GUI] Add media information to device view.

This commit is contained in:
2025-11-19 19:56:01 +00:00
parent 9ac4762f23
commit bde0c7b5e3
6 changed files with 568 additions and 613 deletions

View File

@@ -13,7 +13,7 @@
x:Class="Aaru.Gui.Views.Windows.DeviceView"
x:DataType="windows:DeviceViewModel"
Title="{Binding DevicePath, Mode=OneWay}">
<Grid RowDefinitions="Auto,*, Auto"
<Grid RowDefinitions="Auto,*, Auto, Auto"
RowSpacing="8"
Margin="12">
<Grid Grid.Row="0"
@@ -389,34 +389,42 @@
<TabItem.Header>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Kreon}" />
</TabItem.Header>
<StackPanel Orientation="Vertical" Margin="8">
<StackPanel Orientation="Vertical"
Margin="8">
<CheckBox IsChecked="{Binding KreonChallengeResponse, Mode=OneWay}"
IsEnabled="False">
<controls:SpectreTextBlock Text="{x:Static localization:Core.Can_do_challenge_response_with_Xbox_discs}" />
<controls:SpectreTextBlock
Text="{x:Static localization:Core.Can_do_challenge_response_with_Xbox_discs}" />
</CheckBox>
<CheckBox IsChecked="{Binding KreonDecryptSs, Mode=OneWay}"
IsEnabled="False">
<controls:SpectreTextBlock Text="{x:Static localization:Core.Can_read_and_decrypt_SS_from_Xbox_discs}" />
<controls:SpectreTextBlock
Text="{x:Static localization:Core.Can_read_and_decrypt_SS_from_Xbox_discs}" />
</CheckBox>
<CheckBox IsChecked="{Binding KreonXtremeUnlock, Mode=OneWay}"
IsEnabled="False">
<controls:SpectreTextBlock Text="{x:Static localization:Core.Can_set_xtreme_unlock_state_with_Xbox_discs}" />
<controls:SpectreTextBlock
Text="{x:Static localization:Core.Can_set_xtreme_unlock_state_with_Xbox_discs}" />
</CheckBox>
<CheckBox IsChecked="{Binding KreonWxripperUnlock, Mode=OneWay}"
IsEnabled="False">
<controls:SpectreTextBlock Text="{x:Static localization:Core.Can_set_wxripper_unlock_state_with_Xbox_discs}" />
<controls:SpectreTextBlock
Text="{x:Static localization:Core.Can_set_wxripper_unlock_state_with_Xbox_discs}" />
</CheckBox>
<CheckBox IsChecked="{Binding KreonChallengeResponse360, Mode=OneWay}"
IsEnabled="False">
<controls:SpectreTextBlock Text="{x:Static localization:Core.Can_do_challenge_response_with_Xbox_360_discs}" />
<controls:SpectreTextBlock
Text="{x:Static localization:Core.Can_do_challenge_response_with_Xbox_360_discs}" />
</CheckBox>
<CheckBox IsChecked="{Binding KreonDecryptSs360, Mode=OneWay}"
IsEnabled="False">
<controls:SpectreTextBlock Text="{x:Static localization:Core.Can_read_and_decrypt_SS_from_Xbox_360_discs}" />
<controls:SpectreTextBlock
Text="{x:Static localization:Core.Can_read_and_decrypt_SS_from_Xbox_360_discs}" />
</CheckBox>
<CheckBox IsChecked="{Binding KreonXtremeUnlock360, Mode=OneWay}"
IsEnabled="False">
<controls:SpectreTextBlock Text="{x:Static localization:Core.Can_set_xtreme_unlock_state_with_Xbox_360_discs}" />
<controls:SpectreTextBlock
Text="{x:Static localization:Core.Can_set_xtreme_unlock_state_with_Xbox_360_discs}" />
</CheckBox>
<CheckBox IsChecked="{Binding KreonWxripperUnlock360, Mode=OneWay}"
IsEnabled="False">
@@ -437,8 +445,11 @@
<TabItem.Header>
<TextBlock Text="{x:Static localization:UI.SSC_Label}" />
</TabItem.Header>
<StackPanel Orientation="Vertical" Margin="8" Spacing="8">
<StackPanel Orientation="Vertical" Spacing="8"
<StackPanel Orientation="Vertical"
Margin="8"
Spacing="8">
<StackPanel Orientation="Vertical"
Spacing="8"
IsVisible="{Binding BlockLimits, Mode=OneWay}">
<controls:SpectreTextBlock Text="{Binding MinBlockSize, Mode=OneWay}"
IsVisible="{Binding !!MinBlockSize, Mode=OneWay}" />
@@ -447,15 +458,19 @@
<controls:SpectreTextBlock Text="{Binding BlockSizeGranularity, Mode=OneWay}"
IsVisible="{Binding !!BlockSizeGranularity, Mode=OneWay}" />
</StackPanel>
<StackPanel Orientation="Vertical" Spacing="8"
<StackPanel Orientation="Vertical"
Spacing="8"
IsVisible="{Binding !!Densities, Mode=OneWay}">
<controls:SpectreTextBlock Text="{x:Static localization:UI.Densities_supported_by_device}" VerticalAlignment="Center"/>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Densities_supported_by_device}"
VerticalAlignment="Center" />
<TextBox Text="{Binding Densities, Mode=OneWay}"
IsReadOnly="True" />
</StackPanel>
<StackPanel Orientation="Vertical" Spacing="8"
<StackPanel Orientation="Vertical"
Spacing="8"
IsVisible="{Binding !!MediumTypes, Mode=OneWay}">
<controls:SpectreTextBlock Text="{x:Static localization:UI.Medium_types_supported_by_device}" VerticalAlignment="Center"/>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Medium_types_supported_by_device}"
VerticalAlignment="Center" />
<TextBox Text="{Binding MediumTypes, Mode=OneWay}"
IsReadOnly="True" />
</StackPanel>
@@ -466,30 +481,148 @@
</TabItem>
<TabItem IsVisible="{Binding !!PcmciaInfo, Mode=OneWay}">
<TabItem.Header>
<TextBlock Text="{x:Static localization:UI.Title_PCMCIA}" />
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_PCMCIA}" />
</TabItem.Header>
<ContentControl Content="{Binding PcmciaInfo, Mode=OneWay}" />
</TabItem>
<TabItem IsVisible="{Binding !!AtaInfo, Mode=OneWay}">
<TabItem.Header>
<TextBlock Text="{x:Static localization:UI.Title_ATA_ATAPI}" />
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_ATA_ATAPI}" />
</TabItem.Header>
<ContentControl Content="{Binding AtaInfo, Mode=OneWay}" />
</TabItem>
<TabItem IsVisible="{Binding !!ScsiInfo, Mode=OneWay}">
<TabItem.Header>
<TextBlock Text="{x:Static localization:UI.Title_SCSI}" />
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_SCSI}" />
</TabItem.Header>
<ContentControl Content="{Binding ScsiInfo, Mode=OneWay}" />
</TabItem>
<TabItem IsVisible="{Binding !!SdMmcInfo, Mode=OneWay}">
<TabItem.Header>
<TextBlock Text="{x:Static localization:UI.Title_SD_MMC}" />
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_SD_MMC}" />
</TabItem.Header>
<ContentControl Content="{Binding SdMmcInfo, Mode=OneWay}" />
</TabItem>
<TabItem IsVisible="{Binding MediaHasInformation, Mode=OneWay}">
<TabItem.Header>
<controls:SpectreTextBlock Text="{x:Static localization:UI.Title_Media_information}" />
</TabItem.Header>
<Grid RowDefinitions="Auto,*,Auto"
Margin="8"
RowSpacing="8">
<Border Grid.Row="0"
Width="160"
Height="160"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="LightGray"
CornerRadius="80"
Padding="16">
<Image Width="128"
Height="128"
Source="{Binding MediaLogo, Mode=OneWay}" />
</Border>
<StackPanel Grid.Row="1"
Orientation="Vertical">
<Grid ColumnDefinitions="Auto, *"
ColumnSpacing="8">
<controls:SpectreTextBlock Grid.Column="0"
Text="{x:Static localization:UI.Title_Media_type}" />
<controls:SpectreTextBlock Grid.Column="1"
Text="{Binding MediaType, Mode=OneWay}" />
</Grid>
<controls:SpectreTextBlock IsVisible="{Binding !!MediaSize, Mode=OneWay}"
Text="{Binding MediaSize, Mode=OneWay}" />
<Grid ColumnDefinitions="Auto, *"
ColumnSpacing="8"
IsVisible="{Binding !!MediaSerial, Mode=OneWay}">
<controls:SpectreTextBlock Grid.Column="0"
Text="{x:Static localization:UI.Title_Media_serial_number}" />
<controls:SpectreTextBlock Grid.Column="1"
Text="{Binding MediaSerial, Mode=OneWay}" />
</Grid>
</StackPanel>
<StackPanel Grid.Row="2"
Orientation="Horizontal">
<Button IsVisible="{Binding SaveReadMediaSerialVisible, Mode=OneWay}"
Command="{Binding SaveReadMediaSerialCommand, Mode=OneWay}">
<TextBlock
Text="{x:Static localization:UI.ButtonLabel_Save_READ_MEDIA_SERIAL_NUMBER_response}" />
</Button>
<Button IsVisible="{Binding SaveReadCapacityVisible, Mode=OneWay}"
Command="{Binding SaveReadCapacityCommand, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Save_READ_CAPACITY_response}" />
</Button>
<Button IsVisible="{Binding SaveReadCapacity16Visible, Mode=OneWay}"
Command="{Binding SaveReadCapacity16Command, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Save_READ_CAPACITY_16_response}" />
</Button>
</StackPanel>
</Grid>
</TabItem>
<TabItem IsVisible="{Binding MmcVisible, Mode=OneWay}">
<TabItem.Header>
<TextBlock Text="{x:Static localization:Core.Title_MMC}" />
</TabItem.Header>
<StackPanel Orientation="Horizontal">
<Button IsVisible="{Binding SaveGetConfigurationVisible, Mode=OneWay}"
Command="{Binding SaveGetConfigurationCommand, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Save_GET_CONFIGURATION_response}" />
</Button>
<Button IsVisible="{Binding SaveRecognizedFormatLayersVisible, Mode=OneWay}"
Command="{Binding SaveRecognizedFormatLayersCommand, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Save_RECOGNIZED_FORMAT_LAYERS_response}" />
</Button>
<Button IsVisible="{Binding SaveWriteProtectionStatusVisible, Mode=OneWay}"
Command="{Binding SaveWriteProtectionStatusCommand, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Save_WRITE_PROTECTION_STATUS_response}" />
</Button>
</StackPanel>
</TabItem>
<TabItem IsVisible="{Binding !!CompactDiscInfo, Mode=OneWay}">
<TabItem.Header>
<TextBlock Text="{x:Static localization:Core.Title_CompactDisc}" />
</TabItem.Header>
<ContentControl Content="{Binding CompactDiscInfo, Mode=OneWay}" />
</TabItem>
<TabItem IsVisible="{Binding !!DvdInfo, Mode=OneWay}">
<TabItem.Header>
<TextBlock Text="{x:Static localization:Core.Title_DVD}" />
</TabItem.Header>
<ContentControl Content="{Binding DvdInfo, Mode=OneWay}" />
</TabItem>
<TabItem IsVisible="{Binding !!DvdWritableInfo, Mode=OneWay}">
<TabItem.Header>
<TextBlock Text="{x:Static localization:Core.Title_DVD_Plus_Dash_R_W}" />
</TabItem.Header>
<ContentControl Content="{Binding DvdWritableInfo, Mode=OneWay}" />
</TabItem>
<TabItem IsVisible="{Binding !!XboxInfo, Mode=OneWay}">
<TabItem.Header>
<TextBlock Text="{x:Static localization:Core.Title_Xbox}" />
</TabItem.Header>
<ContentControl Content="{Binding XboxInfo, Mode=OneWay}" />
</TabItem>
<TabItem IsVisible="{Binding !!BlurayInfo, Mode=OneWay}">
<TabItem.Header>
<TextBlock Text="{x:Static localization:Core.Title_Blu_ray}" />
</TabItem.Header>
<ContentControl Content="{Binding BlurayInfo, Mode=OneWay}" />
</TabItem>
</TabControl>
<TextBlock Grid.Row="2"
<StackPanel Grid.Row="2"
Orientation="Horizontal"
Spacing="8"
HorizontalAlignment="Right">
<Button Command="{Binding DumpCommand, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Dump_media_to_image}" />
</Button>
<Button Command="{Binding ScanCommand, Mode=OneWay}">
<TextBlock Text="{x:Static localization:UI.ButtonLabel_Scan_media_surface}" />
</Button>
</StackPanel>
<TextBlock Grid.Row="3"
IsVisible="{Binding StatusMessageVisible, Mode=OneWay}"
Text="{Binding StatusMessage, Mode=OneWay}" />
</Grid>
</Window>