XCITrimmerWindow.axaml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. <UserControl
  2. x:Class="Ryujinx.Ava.UI.Windows.XCITrimmerWindow"
  3. xmlns="https://github.com/avaloniaui"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:ext="clr-namespace:Ryujinx.Ava.Common.Markup"
  7. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  8. xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
  9. xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
  10. xmlns:models="clr-namespace:Ryujinx.Ava.Common.Models"
  11. Width="700"
  12. Height="600"
  13. x:DataType="viewModels:XCITrimmerViewModel"
  14. Focusable="True"
  15. mc:Ignorable="d">
  16. <UserControl.Resources>
  17. <helpers:XCITrimmerFileStatusConverter x:Key="StatusLabel" />
  18. <helpers:XCITrimmerFileStatusDetailConverter x:Key="StatusDetailLabel" />
  19. <helpers:XCITrimmerFileSpaceSavingsConverter x:Key="SpaceSavingsLabel" />
  20. </UserControl.Resources>
  21. <Grid Margin="20 0 20 0">
  22. <Grid.RowDefinitions>
  23. <RowDefinition Height="Auto" />
  24. <RowDefinition Height="Auto" />
  25. <RowDefinition Height="*" />
  26. <RowDefinition Height="Auto" />
  27. <RowDefinition Height="Auto" />
  28. </Grid.RowDefinitions>
  29. <Panel
  30. Margin="10 10 10 10"
  31. Grid.Row="0">
  32. <TextBlock Text="{Binding Status}" />
  33. </Panel>
  34. <Panel
  35. Margin="0 0 10 10"
  36. IsVisible="{Binding !Processing}"
  37. Grid.Row="1">
  38. <Grid>
  39. <Grid.ColumnDefinitions>
  40. <ColumnDefinition Width="Auto" />
  41. <ColumnDefinition Width="*" />
  42. <ColumnDefinition Width="Auto" />
  43. </Grid.ColumnDefinitions>
  44. <StackPanel
  45. Grid.Column="0"
  46. Orientation="Horizontal">
  47. <TextBlock
  48. Margin="10,0"
  49. HorizontalAlignment="Left"
  50. VerticalAlignment="Center"
  51. Text="{ext:Locale CommonSort}" />
  52. <DropDownButton
  53. Width="150"
  54. HorizontalAlignment="Left"
  55. VerticalAlignment="Center"
  56. Content="{Binding SortingFieldName}">
  57. <DropDownButton.Flyout>
  58. <Flyout Placement="Bottom">
  59. <StackPanel
  60. Margin="0"
  61. HorizontalAlignment="Stretch"
  62. Orientation="Vertical">
  63. <StackPanel>
  64. <RadioButton
  65. Checked="Sort_Checked"
  66. Content="{ext:Locale XCITrimmerSortName}"
  67. GroupName="Sort"
  68. IsChecked="{Binding IsSortedByName, Mode=OneTime}"
  69. Tag="Name" />
  70. <RadioButton
  71. Checked="Sort_Checked"
  72. Content="{ext:Locale XCITrimmerSortSaved}"
  73. GroupName="Sort"
  74. IsChecked="{Binding IsSortedBySaved, Mode=OneTime}"
  75. Tag="Saved" />
  76. </StackPanel>
  77. <Border
  78. Width="60"
  79. Height="2"
  80. Margin="5"
  81. HorizontalAlignment="Stretch"
  82. BorderBrush="White"
  83. BorderThickness="0,1,0,0">
  84. <Separator Height="0" HorizontalAlignment="Stretch" />
  85. </Border>
  86. <RadioButton
  87. Checked="Order_Checked"
  88. Content="{ext:Locale OrderAscending}"
  89. GroupName="Order"
  90. IsChecked="{Binding SortingAscending, Mode=OneTime}"
  91. Tag="Ascending" />
  92. <RadioButton
  93. Checked="Order_Checked"
  94. Content="{ext:Locale OrderDescending}"
  95. GroupName="Order"
  96. IsChecked="{Binding !SortingAscending, Mode=OneTime}"
  97. Tag="Descending" />
  98. </StackPanel>
  99. </Flyout>
  100. </DropDownButton.Flyout>
  101. </DropDownButton>
  102. </StackPanel>
  103. <TextBox
  104. Grid.Column="1"
  105. MinHeight="29"
  106. MaxHeight="29"
  107. Margin="5 0 5 0"
  108. HorizontalAlignment="Stretch"
  109. Watermark="{ext:Locale Search}"
  110. Text="{Binding Search}" />
  111. <StackPanel
  112. Grid.Column="2"
  113. Orientation="Horizontal">
  114. <Button
  115. Name="SelectDisplayedButton"
  116. MinWidth="90"
  117. Margin="5"
  118. Command="{Binding SelectDisplayed}">
  119. <TextBlock Text="{ext:Locale XCITrimmerSelectDisplayed}" />
  120. </Button>
  121. <Button
  122. Name="DeselectDisplayedButton"
  123. MinWidth="90"
  124. Margin="5"
  125. Command="{Binding DeselectDisplayed}">
  126. <TextBlock Text="{ext:Locale XCITrimmerDeselectDisplayed}" />
  127. </Button>
  128. </StackPanel>
  129. </Grid>
  130. </Panel>
  131. <Border
  132. Grid.Row="2"
  133. Margin="0 0 0 10"
  134. HorizontalAlignment="Stretch"
  135. VerticalAlignment="Stretch"
  136. BorderBrush="{DynamicResource AppListHoverBackgroundColor}"
  137. BorderThickness="1"
  138. CornerRadius="5"
  139. Padding="2.5">
  140. <ListBox
  141. AutoScrollToSelectedItem="{Binding Processing}"
  142. SelectedItem="{Binding NullableProcessingApplication}"
  143. SelectionMode="Multiple, Toggle"
  144. Background="Transparent"
  145. SelectionChanged="OnSelectionChanged"
  146. SelectedItems="{Binding SelectedDisplayedXCIFiles, Mode=OneWay}"
  147. ItemsSource="{Binding DisplayedXCIFiles}"
  148. IsEnabled="{Binding !Processing}">
  149. <ListBox.DataTemplates>
  150. <DataTemplate
  151. DataType="models:XCITrimmerFileModel">
  152. <Panel Margin="10">
  153. <Grid>
  154. <Grid.ColumnDefinitions>
  155. <ColumnDefinition Width="65*" />
  156. <ColumnDefinition Width="35*" />
  157. </Grid.ColumnDefinitions>
  158. <TextBlock
  159. Grid.Column="0"
  160. Margin="10 0 10 0"
  161. HorizontalAlignment="Left"
  162. VerticalAlignment="Center"
  163. MaxLines="2"
  164. TextWrapping="Wrap"
  165. TextTrimming="CharacterEllipsis"
  166. Text="{Binding Name}">
  167. </TextBlock>
  168. <Grid Grid.Column="1">
  169. <Grid.ColumnDefinitions>
  170. <ColumnDefinition Width="45*" />
  171. <ColumnDefinition Width="55*" />
  172. </Grid.ColumnDefinitions>
  173. <ProgressBar
  174. Height="10"
  175. Margin="10 0 10 0"
  176. HorizontalAlignment="Stretch"
  177. VerticalAlignment="Center"
  178. CornerRadius="5"
  179. IsVisible="{Binding $parent[UserControl].((viewModels:XCITrimmerViewModel)DataContext).Processing}"
  180. Maximum="100"
  181. Minimum="0"
  182. Value="{Binding PercentageProgress}" />
  183. <TextBlock
  184. Grid.Column="0"
  185. Margin="10 0 10 0"
  186. HorizontalAlignment="Left"
  187. VerticalAlignment="Center"
  188. MaxLines="1"
  189. Text="{Binding ., Converter={StaticResource StatusLabel}}">
  190. <ToolTip.Tip>
  191. <StackPanel
  192. IsVisible="{Binding IsFailed}">
  193. <TextBlock
  194. Classes="h1"
  195. Text="{ext:Locale XCITrimmerTitleStatusFailed}" />
  196. <TextBlock
  197. Text="{Binding ., Converter={StaticResource StatusDetailLabel}}"
  198. MaxLines="5"
  199. MaxWidth="200"
  200. MaxHeight="100"
  201. TextTrimming="None"
  202. TextWrapping="Wrap"/>
  203. </StackPanel>
  204. </ToolTip.Tip>
  205. </TextBlock>
  206. <TextBlock
  207. Grid.Column="1"
  208. Margin="10 0 10 0"
  209. HorizontalAlignment="Left"
  210. VerticalAlignment="Center"
  211. MaxLines="1"
  212. Text="{Binding ., Converter={StaticResource SpaceSavingsLabel}}">>
  213. </TextBlock>
  214. </Grid>
  215. </Grid>
  216. </Panel>
  217. </DataTemplate>
  218. </ListBox.DataTemplates>
  219. <ListBox.Styles>
  220. <Style Selector="ListBoxItem">
  221. <Setter Property="Background" Value="Transparent" />
  222. </Style>
  223. </ListBox.Styles>
  224. </ListBox>
  225. </Border>
  226. <Border
  227. Grid.Row="3"
  228. Margin="0 0 0 10"
  229. HorizontalAlignment="Stretch"
  230. BorderBrush="{DynamicResource AppListHoverBackgroundColor}"
  231. BorderThickness="1"
  232. CornerRadius="5"
  233. Padding="2.5">
  234. <Grid>
  235. <Grid.ColumnDefinitions>
  236. <ColumnDefinition Width="Auto" />
  237. <ColumnDefinition Width="*" />
  238. </Grid.ColumnDefinitions>
  239. <Grid.RowDefinitions>
  240. <RowDefinition Height="Auto" />
  241. <RowDefinition Height="Auto" />
  242. </Grid.RowDefinitions>
  243. <TextBlock
  244. Grid.Column="0"
  245. Grid.Row="0"
  246. Classes="h1"
  247. Margin="5"
  248. HorizontalAlignment="Right"
  249. VerticalAlignment="Center"
  250. MaxLines="1"
  251. Text="{ext:Locale XCITrimmerPotentialSavings}" />
  252. <TextBlock
  253. Grid.Column="0"
  254. Grid.Row="1"
  255. Classes="h1"
  256. Margin="5"
  257. HorizontalAlignment="Right"
  258. VerticalAlignment="Center"
  259. MaxLines="1"
  260. Text="{ext:Locale XCITrimmerActualSavings}" />
  261. <TextBlock
  262. Grid.Column="1"
  263. Grid.Row="0"
  264. Margin="5"
  265. HorizontalAlignment="Left"
  266. VerticalAlignment="Center"
  267. MaxLines="1"
  268. Text="{Binding PotentialSavings}" />
  269. <TextBlock
  270. Grid.Column="1"
  271. Grid.Row="1"
  272. Margin="5"
  273. HorizontalAlignment="Left"
  274. VerticalAlignment="Center"
  275. MaxLines="1"
  276. Text="{Binding ActualSavings}" />
  277. </Grid>
  278. </Border>
  279. <Panel
  280. Grid.Row="4"
  281. HorizontalAlignment="Stretch">
  282. <Grid>
  283. <Grid.ColumnDefinitions>
  284. <ColumnDefinition Width="*" />
  285. <ColumnDefinition Width="Auto" />
  286. </Grid.ColumnDefinitions>
  287. <StackPanel
  288. Grid.Column="0"
  289. Orientation="Horizontal"
  290. Spacing="10"
  291. HorizontalAlignment="Left">
  292. <Button
  293. Name="TrimButton"
  294. MinWidth="90"
  295. Margin="5"
  296. Click="Trim"
  297. IsEnabled="{Binding CanTrim}">
  298. <TextBlock Text="{ext:Locale XCITrimmerTrim}" />
  299. </Button>
  300. <Button
  301. Name="UntrimButton"
  302. MinWidth="90"
  303. Margin="5"
  304. Click="Untrim"
  305. IsEnabled="{Binding CanUntrim}">
  306. <TextBlock Text="{ext:Locale XCITrimmerUntrim}" />
  307. </Button>
  308. </StackPanel>
  309. <StackPanel
  310. Grid.Column="1"
  311. Orientation="Horizontal"
  312. Spacing="10"
  313. HorizontalAlignment="Right">
  314. <Button
  315. Name="CancellingButton"
  316. MinWidth="90"
  317. Margin="5"
  318. Click="Cancel"
  319. IsEnabled="False">
  320. <Button.IsVisible>
  321. <MultiBinding Converter="{x:Static BoolConverters.And}">
  322. <Binding Path="Processing" />
  323. <Binding Path="Cancel" />
  324. </MultiBinding>
  325. </Button.IsVisible>
  326. <TextBlock Text="{ext:Locale InputDialogCancelling}" />
  327. </Button>
  328. <Button
  329. Name="CancelButton"
  330. MinWidth="90"
  331. Margin="5"
  332. Click="Cancel">
  333. <Button.IsVisible>
  334. <MultiBinding Converter="{x:Static BoolConverters.And}">
  335. <Binding Path="Processing" />
  336. <Binding Path="!Cancel" />
  337. </MultiBinding>
  338. </Button.IsVisible>
  339. <TextBlock Text="{ext:Locale InputDialogCancel}" />
  340. </Button>
  341. <Button
  342. Name="CloseButton"
  343. MinWidth="90"
  344. Margin="5"
  345. Click="Close"
  346. IsVisible="{Binding !Processing}">
  347. <TextBlock Text="{ext:Locale InputDialogClose}" />
  348. </Button>
  349. </StackPanel>
  350. </Grid>
  351. </Panel>
  352. </Grid>
  353. </UserControl>