MainWindow.axaml 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771
  1. <window:StyleableWindow
  2. x:Class="Ryujinx.Ava.UI.Windows.MainWindow"
  3. xmlns="https://github.com/avaloniaui"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls"
  6. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  7. xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
  8. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  9. xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
  10. xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
  11. xmlns:window="clr-namespace:Ryujinx.Ava.UI.Windows"
  12. xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
  13. Title="Ryujinx"
  14. Width="1280"
  15. Height="777"
  16. MinWidth="1092"
  17. MinHeight="672"
  18. d:DesignHeight="720"
  19. d:DesignWidth="1280"
  20. x:CompileBindings="True"
  21. x:DataType="viewModels:MainWindowViewModel"
  22. WindowStartupLocation="CenterScreen"
  23. mc:Ignorable="d"
  24. Focusable="True">
  25. <Window.Styles>
  26. <Style Selector="TitleBar:fullscreen">
  27. <Setter Property="Background" Value="#000000" />
  28. </Style>
  29. </Window.Styles>
  30. <Design.DataContext>
  31. <viewModels:MainWindowViewModel />
  32. </Design.DataContext>
  33. <Window.Resources>
  34. <helpers:BitmapArrayValueConverter x:Key="ByteImage" />
  35. </Window.Resources>
  36. <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
  37. <Grid.RowDefinitions>
  38. <RowDefinition Height="Auto" />
  39. <RowDefinition Height="*" />
  40. </Grid.RowDefinitions>
  41. <helpers:OffscreenTextBox Name="HiddenTextBox" Grid.Row="0" />
  42. <StackPanel Grid.Row="0" IsVisible="False">
  43. <helpers:HotKeyControl Name="FullscreenHotKey" Command="{ReflectionBinding ToggleFullscreen}" />
  44. <helpers:HotKeyControl Name="FullscreenHotKey2" Command="{ReflectionBinding ToggleFullscreen}" />
  45. <helpers:HotKeyControl Name="DockToggleHotKey" Command="{ReflectionBinding ToggleDockMode}" />
  46. <helpers:HotKeyControl Name="ExitHotKey" Command="{ReflectionBinding ExitCurrentState}" />
  47. </StackPanel>
  48. <Grid
  49. Grid.Row="1"
  50. HorizontalAlignment="Stretch"
  51. VerticalAlignment="Stretch">
  52. <Grid.ColumnDefinitions>
  53. <ColumnDefinition Width="*" />
  54. </Grid.ColumnDefinitions>
  55. <Grid.RowDefinitions>
  56. <RowDefinition Height="Auto" />
  57. <RowDefinition Height="*" />
  58. <RowDefinition Height="Auto" />
  59. </Grid.RowDefinitions>
  60. <StackPanel
  61. Name="MenuBar"
  62. MinHeight="35"
  63. Grid.Row="0"
  64. Margin="0"
  65. HorizontalAlignment="Stretch"
  66. VerticalAlignment="Stretch"
  67. IsVisible="{Binding ShowMenuAndStatusBar}"
  68. Orientation="Vertical">
  69. <DockPanel HorizontalAlignment="Stretch">
  70. <Menu
  71. Name="Menu"
  72. Height="35"
  73. Margin="0"
  74. HorizontalAlignment="Left">
  75. <Menu.ItemsPanel>
  76. <ItemsPanelTemplate>
  77. <DockPanel Margin="0" HorizontalAlignment="Stretch" />
  78. </ItemsPanelTemplate>
  79. </Menu.ItemsPanel>
  80. <MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarFile}">
  81. <MenuItem
  82. Command="{ReflectionBinding OpenFile}"
  83. Header="{locale:Locale MenuBarFileOpenFromFile}"
  84. IsEnabled="{Binding EnableNonGameRunningControls}"
  85. ToolTip.Tip="{locale:Locale LoadApplicationFileTooltip}" />
  86. <MenuItem
  87. Command="{ReflectionBinding OpenFolder}"
  88. Header="{locale:Locale MenuBarFileOpenUnpacked}"
  89. IsEnabled="{Binding EnableNonGameRunningControls}"
  90. ToolTip.Tip="{locale:Locale LoadApplicationFolderTooltip}" />
  91. <MenuItem Header="{locale:Locale MenuBarFileOpenApplet}" IsEnabled="{Binding IsAppletMenuActive}">
  92. <MenuItem
  93. Command="{ReflectionBinding OpenMiiApplet}"
  94. Header="Mii Edit Applet"
  95. ToolTip.Tip="{locale:Locale MenuBarFileOpenAppletOpenMiiAppletToolTip}" />
  96. </MenuItem>
  97. <Separator />
  98. <MenuItem
  99. Command="{ReflectionBinding OpenRyujinxFolder}"
  100. Header="{locale:Locale MenuBarFileOpenEmuFolder}"
  101. ToolTip.Tip="{locale:Locale OpenRyujinxFolderTooltip}" />
  102. <MenuItem
  103. Command="{ReflectionBinding OpenLogsFolder}"
  104. Header="{locale:Locale MenuBarFileOpenLogsFolder}"
  105. ToolTip.Tip="{locale:Locale OpenRyujinxLogsTooltip}" />
  106. <Separator />
  107. <MenuItem
  108. Command="{ReflectionBinding CloseWindow}"
  109. Header="{locale:Locale MenuBarFileExit}"
  110. ToolTip.Tip="{locale:Locale ExitTooltip}" />
  111. </MenuItem>
  112. <MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarOptions}">
  113. <MenuItem
  114. Command="{ReflectionBinding ToggleFullscreen}"
  115. Header="{locale:Locale MenuBarOptionsToggleFullscreen}"
  116. InputGesture="F11" />
  117. <MenuItem>
  118. <MenuItem.Icon>
  119. <CheckBox IsChecked="{Binding StartGamesInFullscreen, Mode=TwoWay}"
  120. MinWidth="250">
  121. <TextBlock Text="{locale:Locale MenuBarOptionsStartGamesInFullscreen}"/>
  122. </CheckBox>
  123. </MenuItem.Icon>
  124. </MenuItem>
  125. <MenuItem IsVisible="{Binding ShowConsoleVisible}">
  126. <MenuItem.Icon>
  127. <CheckBox IsChecked="{Binding ShowConsole, Mode=TwoWay}"
  128. MinWidth="250">
  129. <TextBlock Text="{locale:Locale MenuBarOptionsShowConsole}"/>
  130. </CheckBox>
  131. </MenuItem.Icon>
  132. </MenuItem>
  133. <Separator />
  134. <MenuItem Header="{locale:Locale MenuBarOptionsChangeLanguage}">
  135. <MenuItem
  136. Command="{ReflectionBinding ChangeLanguage}"
  137. CommandParameter="de_DE"
  138. Header="Deutsch" />
  139. <MenuItem
  140. Command="{ReflectionBinding ChangeLanguage}"
  141. CommandParameter="en_US"
  142. Header="English (US)" />
  143. <MenuItem
  144. Command="{ReflectionBinding ChangeLanguage}"
  145. CommandParameter="es_ES"
  146. Header="Español (ES)" />
  147. <MenuItem
  148. Command="{ReflectionBinding ChangeLanguage}"
  149. CommandParameter="fr_FR"
  150. Header="Français" />
  151. <MenuItem
  152. Command="{ReflectionBinding ChangeLanguage}"
  153. CommandParameter="it_IT"
  154. Header="Italiano" />
  155. <MenuItem
  156. Command="{ReflectionBinding ChangeLanguage}"
  157. CommandParameter="pt_BR"
  158. Header="Português (BR)" />
  159. <MenuItem
  160. Command="{ReflectionBinding ChangeLanguage}"
  161. CommandParameter="tr_TR"
  162. Header="Türkçe" />
  163. <MenuItem
  164. Command="{ReflectionBinding ChangeLanguage}"
  165. CommandParameter="el_GR"
  166. Header="Ελληνικά" />
  167. <MenuItem
  168. Command="{ReflectionBinding ChangeLanguage}"
  169. CommandParameter="pl_PL"
  170. Header="Polski" />
  171. <MenuItem
  172. Command="{ReflectionBinding ChangeLanguage}"
  173. CommandParameter="ru_RU"
  174. Header="Русский" />
  175. <MenuItem
  176. Command="{ReflectionBinding ChangeLanguage}"
  177. CommandParameter="zh_CN"
  178. Header="简体中文" />
  179. <MenuItem
  180. Command="{ReflectionBinding ChangeLanguage}"
  181. CommandParameter="zh_TW"
  182. Header="繁體中文" />
  183. <MenuItem
  184. Command="{ReflectionBinding ChangeLanguage}"
  185. CommandParameter="ja_JP"
  186. Header="日本語" />
  187. <MenuItem
  188. Command="{ReflectionBinding ChangeLanguage}"
  189. CommandParameter="ko_KR"
  190. Header="한국어" />
  191. </MenuItem>
  192. <Separator />
  193. <MenuItem
  194. Command="{ReflectionBinding OpenSettings}"
  195. Header="{locale:Locale MenuBarOptionsSettings}"
  196. ToolTip.Tip="{locale:Locale OpenSettingsTooltip}" />
  197. <MenuItem
  198. Command="{ReflectionBinding ManageProfiles}"
  199. Header="{locale:Locale MenuBarOptionsManageUserProfiles}"
  200. IsEnabled="{Binding EnableNonGameRunningControls}"
  201. ToolTip.Tip="{locale:Locale OpenProfileManagerTooltip}" />
  202. </MenuItem>
  203. <MenuItem
  204. Name="ActionsMenuItem"
  205. VerticalAlignment="Center"
  206. Header="{locale:Locale MenuBarActions}"
  207. IsEnabled="{Binding IsGameRunning}">
  208. <MenuItem
  209. Click="PauseEmulation_Click"
  210. Header="{locale:Locale MenuBarOptionsPauseEmulation}"
  211. InputGesture="{Binding PauseKey}"
  212. IsEnabled="{Binding !IsPaused}"
  213. IsVisible="{Binding !IsPaused}" />
  214. <MenuItem
  215. Click="ResumeEmulation_Click"
  216. Header="{locale:Locale MenuBarOptionsResumeEmulation}"
  217. InputGesture="{Binding PauseKey}"
  218. IsEnabled="{Binding IsPaused}"
  219. IsVisible="{Binding IsPaused}" />
  220. <MenuItem
  221. Click="StopEmulation_Click"
  222. Header="{locale:Locale MenuBarOptionsStopEmulation}"
  223. InputGesture="Escape"
  224. IsEnabled="{Binding IsGameRunning}"
  225. ToolTip.Tip="{locale:Locale StopEmulationTooltip}" />
  226. <MenuItem Command="{ReflectionBinding SimulateWakeUpMessage}" Header="{locale:Locale MenuBarOptionsSimulateWakeUpMessage}" />
  227. <Separator />
  228. <MenuItem
  229. Name="ScanAmiiboMenuItem"
  230. AttachedToVisualTree="ScanAmiiboMenuItem_AttachedToVisualTree"
  231. Command="{ReflectionBinding OpenAmiiboWindow}"
  232. Header="{locale:Locale MenuBarActionsScanAmiibo}"
  233. IsEnabled="{Binding IsAmiiboRequested}" />
  234. <MenuItem
  235. Command="{ReflectionBinding TakeScreenshot}"
  236. Header="{locale:Locale MenuBarFileToolsTakeScreenshot}"
  237. InputGesture="{Binding ScreenshotKey}"
  238. IsEnabled="{Binding IsGameRunning}" />
  239. <MenuItem
  240. Command="{ReflectionBinding HideUi}"
  241. Header="{locale:Locale MenuBarFileToolsHideUi}"
  242. InputGesture="{Binding ShowUiKey}"
  243. IsEnabled="{Binding IsGameRunning}" />
  244. <MenuItem
  245. Command="{ReflectionBinding OpenCheatManagerForCurrentApp}"
  246. Header="{locale:Locale GameListContextMenuManageCheat}"
  247. IsEnabled="{Binding IsGameRunning}" />
  248. </MenuItem>
  249. <MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarTools}">
  250. <MenuItem Header="{locale:Locale MenuBarToolsInstallFirmware}" IsEnabled="{Binding EnableNonGameRunningControls}">
  251. <MenuItem Command="{ReflectionBinding InstallFirmwareFromFile}" Header="{locale:Locale MenuBarFileToolsInstallFirmwareFromFile}" />
  252. <MenuItem Command="{ReflectionBinding InstallFirmwareFromFolder}" Header="{locale:Locale MenuBarFileToolsInstallFirmwareFromDirectory}" />
  253. </MenuItem>
  254. </MenuItem>
  255. <MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarHelp}">
  256. <MenuItem
  257. Name="UpdateMenuItem"
  258. Command="{ReflectionBinding CheckForUpdates}"
  259. Header="{locale:Locale MenuBarHelpCheckForUpdates}"
  260. ToolTip.Tip="{locale:Locale CheckUpdatesTooltip}" />
  261. <Separator />
  262. <MenuItem
  263. Command="{ReflectionBinding OpenAboutWindow}"
  264. Header="{locale:Locale MenuBarHelpAbout}"
  265. ToolTip.Tip="{locale:Locale OpenAboutTooltip}" />
  266. </MenuItem>
  267. </Menu>
  268. </DockPanel>
  269. </StackPanel>
  270. <ContentControl
  271. Name="MainContent"
  272. Grid.Row="1"
  273. Padding="0"
  274. HorizontalAlignment="Stretch"
  275. VerticalAlignment="Stretch"
  276. BorderBrush="{DynamicResource ThemeControlBorderColor}"
  277. BorderThickness="0,0,0,0"
  278. DockPanel.Dock="Top"
  279. IsVisible="{Binding ShowContent}">
  280. <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
  281. <Grid.RowDefinitions>
  282. <RowDefinition Height="Auto" />
  283. <RowDefinition Height="*" />
  284. </Grid.RowDefinitions>
  285. <DockPanel
  286. Grid.Row="0"
  287. Margin="0,0,0,5"
  288. HorizontalAlignment="Stretch">
  289. <Button
  290. Width="40"
  291. MinWidth="40"
  292. Margin="5,2,0,2"
  293. VerticalAlignment="Stretch"
  294. Command="{ReflectionBinding SetListMode}"
  295. IsEnabled="{Binding IsGrid}">
  296. <ui:FontIcon
  297. Margin="0"
  298. HorizontalAlignment="Stretch"
  299. VerticalAlignment="Center"
  300. FontFamily="avares://FluentAvalonia/Fonts#Symbols"
  301. Glyph="{helpers:GlyphValueConverter List}" />
  302. </Button>
  303. <Button
  304. Width="40"
  305. MinWidth="40"
  306. Margin="5,2,5,2"
  307. VerticalAlignment="Stretch"
  308. Command="{ReflectionBinding SetGridMode}"
  309. IsEnabled="{Binding IsList}">
  310. <ui:FontIcon
  311. Margin="0"
  312. HorizontalAlignment="Stretch"
  313. VerticalAlignment="Center"
  314. FontFamily="avares://FluentAvalonia/Fonts#Symbols"
  315. Glyph="{helpers:GlyphValueConverter Grid}" />
  316. </Button>
  317. <TextBlock
  318. Margin="10,0"
  319. VerticalAlignment="Center"
  320. Text="{locale:Locale IconSize}"
  321. ToolTip.Tip="{locale:Locale IconSizeTooltip}" />
  322. <Slider
  323. Width="150"
  324. Height="35"
  325. Margin="5,-10,5,0"
  326. VerticalAlignment="Center"
  327. IsSnapToTickEnabled="True"
  328. Maximum="4"
  329. Minimum="1"
  330. TickFrequency="1"
  331. ToolTip.Tip="{locale:Locale IconSizeTooltip}"
  332. Value="{Binding GridSizeScale}" />
  333. <CheckBox
  334. Margin="0"
  335. VerticalAlignment="Center"
  336. IsChecked="{Binding ShowNames, Mode=TwoWay}"
  337. IsVisible="{Binding IsGrid}">
  338. <TextBlock Margin="5,3,0,0" Text="{locale:Locale CommonShowNames}" />
  339. </CheckBox>
  340. <TextBox
  341. Name="SearchBox"
  342. MinWidth="200"
  343. Margin="5,0,5,0"
  344. HorizontalAlignment="Right"
  345. VerticalAlignment="Center"
  346. VerticalContentAlignment="Center"
  347. DockPanel.Dock="Right"
  348. KeyUp="SearchBox_OnKeyUp"
  349. Text="{Binding SearchText}"
  350. Watermark="{locale:Locale MenuSearch}" />
  351. <ui:DropDownButton
  352. Width="150"
  353. HorizontalAlignment="Right"
  354. VerticalAlignment="Center"
  355. Content="{Binding SortName}"
  356. DockPanel.Dock="Right">
  357. <ui:DropDownButton.Flyout>
  358. <Flyout Placement="Bottom">
  359. <StackPanel
  360. Margin="0"
  361. HorizontalAlignment="Stretch"
  362. Orientation="Vertical">
  363. <StackPanel>
  364. <RadioButton
  365. Checked="Sort_Checked"
  366. Content="{locale:Locale CommonFavorite}"
  367. GroupName="Sort"
  368. IsChecked="{Binding IsSortedByFavorite, Mode=OneTime}"
  369. Tag="Favorite" />
  370. <RadioButton
  371. Checked="Sort_Checked"
  372. Content="{locale:Locale GameListHeaderApplication}"
  373. GroupName="Sort"
  374. IsChecked="{Binding IsSortedByTitle, Mode=OneTime}"
  375. Tag="Title" />
  376. <RadioButton
  377. Checked="Sort_Checked"
  378. Content="{locale:Locale GameListHeaderDeveloper}"
  379. GroupName="Sort"
  380. IsChecked="{Binding IsSortedByDeveloper, Mode=OneTime}"
  381. Tag="Developer" />
  382. <RadioButton
  383. Checked="Sort_Checked"
  384. Content="{locale:Locale GameListHeaderTimePlayed}"
  385. GroupName="Sort"
  386. IsChecked="{Binding IsSortedByTimePlayed, Mode=OneTime}"
  387. Tag="TotalTimePlayed" />
  388. <RadioButton
  389. Checked="Sort_Checked"
  390. Content="{locale:Locale GameListHeaderLastPlayed}"
  391. GroupName="Sort"
  392. IsChecked="{Binding IsSortedByLastPlayed, Mode=OneTime}"
  393. Tag="LastPlayed" />
  394. <RadioButton
  395. Checked="Sort_Checked"
  396. Content="{locale:Locale GameListHeaderFileExtension}"
  397. GroupName="Sort"
  398. IsChecked="{Binding IsSortedByType, Mode=OneTime}"
  399. Tag="FileType" />
  400. <RadioButton
  401. Checked="Sort_Checked"
  402. Content="{locale:Locale GameListHeaderFileSize}"
  403. GroupName="Sort"
  404. IsChecked="{Binding IsSortedBySize, Mode=OneTime}"
  405. Tag="FileSize" />
  406. <RadioButton
  407. Checked="Sort_Checked"
  408. Content="{locale:Locale GameListHeaderPath}"
  409. GroupName="Sort"
  410. IsChecked="{Binding IsSortedByPath, Mode=OneTime}"
  411. Tag="Path" />
  412. </StackPanel>
  413. <Border
  414. Width="60"
  415. Height="2"
  416. Margin="5"
  417. HorizontalAlignment="Stretch"
  418. BorderBrush="White"
  419. BorderThickness="0,1,0,0">
  420. <Separator Height="0" HorizontalAlignment="Stretch" />
  421. </Border>
  422. <RadioButton
  423. Checked="Order_Checked"
  424. Content="{locale:Locale OrderAscending}"
  425. GroupName="Order"
  426. IsChecked="{Binding IsAscending, Mode=OneTime}"
  427. Tag="Ascending" />
  428. <RadioButton
  429. Checked="Order_Checked"
  430. Content="{locale:Locale OrderDescending}"
  431. GroupName="Order"
  432. IsChecked="{Binding !IsAscending, Mode=OneTime}"
  433. Tag="Descending" />
  434. </StackPanel>
  435. </Flyout>
  436. </ui:DropDownButton.Flyout>
  437. </ui:DropDownButton>
  438. <TextBlock
  439. Margin="10,0"
  440. HorizontalAlignment="Right"
  441. VerticalAlignment="Center"
  442. DockPanel.Dock="Right"
  443. Text="{locale:Locale CommonSort}" />
  444. </DockPanel>
  445. <controls:GameListView
  446. x:Name="GameList"
  447. Grid.Row="1"
  448. HorizontalAlignment="Stretch"
  449. VerticalAlignment="Stretch"
  450. HorizontalContentAlignment="Stretch"
  451. VerticalContentAlignment="Stretch"
  452. IsVisible="{Binding IsList}" />
  453. <controls:GameGridView
  454. x:Name="GameGrid"
  455. Grid.Row="1"
  456. HorizontalAlignment="Stretch"
  457. VerticalAlignment="Stretch"
  458. HorizontalContentAlignment="Stretch"
  459. VerticalContentAlignment="Stretch"
  460. IsVisible="{Binding IsGrid}" />
  461. </Grid>
  462. </ContentControl>
  463. <Grid
  464. Grid.Row="1"
  465. HorizontalAlignment="Stretch"
  466. VerticalAlignment="Stretch"
  467. Background="{DynamicResource ThemeContentBackgroundColor}"
  468. IsVisible="{Binding ShowLoadProgress}"
  469. Name="LoadingView"
  470. ZIndex="1000">
  471. <Grid
  472. Margin="40"
  473. HorizontalAlignment="Center"
  474. VerticalAlignment="Center"
  475. IsVisible="{Binding ShowLoadProgress}">
  476. <Grid.ColumnDefinitions>
  477. <ColumnDefinition Width="Auto" />
  478. <ColumnDefinition Width="*" />
  479. </Grid.ColumnDefinitions>
  480. <Border
  481. Grid.RowSpan="2"
  482. Grid.Column="0"
  483. Width="256"
  484. Height="256"
  485. Margin="10"
  486. Padding="4"
  487. BorderBrush="Black"
  488. BorderThickness="2"
  489. BoxShadow="4 4 32 8 #40000000"
  490. CornerRadius="3"
  491. IsVisible="{Binding ShowLoadProgress}">
  492. <Image
  493. Width="256"
  494. Height="256"
  495. IsVisible="{Binding ShowLoadProgress}"
  496. Source="{Binding SelectedIcon, Converter={StaticResource ByteImage}}" />
  497. </Border>
  498. <Grid
  499. Grid.Column="1"
  500. HorizontalAlignment="Stretch"
  501. VerticalAlignment="Center"
  502. IsVisible="{Binding ShowLoadProgress}">
  503. <Grid.RowDefinitions>
  504. <RowDefinition Height="Auto" />
  505. <RowDefinition Height="Auto" />
  506. <RowDefinition Height="Auto" />
  507. </Grid.RowDefinitions>
  508. <TextBlock
  509. Grid.Row="0"
  510. Margin="10"
  511. FontSize="30"
  512. FontWeight="Bold"
  513. IsVisible="{Binding ShowLoadProgress}"
  514. Text="{Binding LoadHeading}"
  515. TextAlignment="Left"
  516. TextWrapping="Wrap" />
  517. <Border
  518. Grid.Row="1"
  519. Margin="10"
  520. Padding="0"
  521. HorizontalAlignment="Stretch"
  522. BorderBrush="{Binding ProgressBarBackgroundColor}"
  523. BorderThickness="1"
  524. ClipToBounds="True"
  525. CornerRadius="5"
  526. IsVisible="{Binding ShowLoadProgress}">
  527. <ProgressBar
  528. Height="10"
  529. MinWidth="500"
  530. Margin="0"
  531. Padding="0"
  532. HorizontalAlignment="Stretch"
  533. Background="{Binding ProgressBarBackgroundColor}"
  534. ClipToBounds="True"
  535. CornerRadius="5"
  536. Foreground="{Binding ProgressBarForegroundColor}"
  537. IsIndeterminate="{Binding IsLoadingIndeterminate}"
  538. IsVisible="{Binding ShowLoadProgress}"
  539. Maximum="{Binding ProgressMaximum}"
  540. Minimum="0"
  541. Value="{Binding ProgressValue}" />
  542. </Border>
  543. <TextBlock
  544. Grid.Row="2"
  545. Margin="10"
  546. FontSize="18"
  547. IsVisible="{Binding ShowLoadProgress}"
  548. Text="{Binding CacheLoadStatus}"
  549. TextAlignment="Left" />
  550. </Grid>
  551. </Grid>
  552. </Grid>
  553. <Grid
  554. Name="StatusBar"
  555. Grid.Row="2"
  556. Margin="0"
  557. MinHeight="22"
  558. HorizontalAlignment="Stretch"
  559. VerticalAlignment="Bottom"
  560. Background="{DynamicResource ThemeContentBackgroundColor}"
  561. DockPanel.Dock="Bottom"
  562. IsVisible="{Binding ShowMenuAndStatusBar}">
  563. <Grid.ColumnDefinitions>
  564. <ColumnDefinition Width="Auto" />
  565. <ColumnDefinition Width="Auto" />
  566. <ColumnDefinition Width="*" />
  567. <ColumnDefinition Width="Auto" />
  568. </Grid.ColumnDefinitions>
  569. <StackPanel
  570. Grid.Column="0"
  571. Margin="5"
  572. VerticalAlignment="Center"
  573. IsVisible="{Binding EnableNonGameRunningControls}">
  574. <Grid Margin="0">
  575. <Grid.ColumnDefinitions>
  576. <ColumnDefinition Width="Auto" />
  577. <ColumnDefinition Width="Auto" />
  578. <ColumnDefinition />
  579. </Grid.ColumnDefinitions>
  580. <Button
  581. Width="25"
  582. Height="25"
  583. MinWidth="0"
  584. Margin="0,0,5,0"
  585. VerticalAlignment="Center"
  586. Background="Transparent"
  587. Command="{ReflectionBinding LoadApplications}">
  588. <ui:SymbolIcon
  589. Width="50"
  590. Height="100"
  591. Symbol="Refresh" />
  592. </Button>
  593. <TextBlock
  594. Name="LoadStatus"
  595. Grid.Column="1"
  596. Margin="0,0,5,0"
  597. VerticalAlignment="Center"
  598. IsVisible="{Binding EnableNonGameRunningControls}"
  599. Text="{locale:Locale StatusBarGamesLoaded}" />
  600. <ProgressBar
  601. Name="LoadProgressBar"
  602. Grid.Column="2"
  603. Height="6"
  604. VerticalAlignment="Center"
  605. Foreground="{DynamicResource HighlightColor}"
  606. IsVisible="{Binding EnableNonGameRunningControls}"
  607. Maximum="{Binding StatusBarProgressMaximum}"
  608. Value="{Binding StatusBarProgressValue}" />
  609. </Grid>
  610. </StackPanel>
  611. <StackPanel
  612. Grid.Column="1"
  613. Margin="0,2"
  614. HorizontalAlignment="Left"
  615. VerticalAlignment="Center"
  616. IsVisible="{Binding IsGameRunning}"
  617. Orientation="Horizontal">
  618. <TextBlock
  619. Name="VsyncStatus"
  620. Margin="5,0,5,0"
  621. HorizontalAlignment="Left"
  622. VerticalAlignment="Center"
  623. Foreground="{Binding VsyncColor}"
  624. IsVisible="{Binding !ShowLoadProgress}"
  625. PointerReleased="VsyncStatus_PointerReleased"
  626. Text="VSync"
  627. TextAlignment="Left" />
  628. <Border
  629. Width="2"
  630. Height="12"
  631. Margin="0"
  632. BorderBrush="Gray"
  633. BorderThickness="1"
  634. IsVisible="{Binding !ShowLoadProgress}" />
  635. <TextBlock
  636. Name="DockedStatus"
  637. Margin="5,0,5,0"
  638. HorizontalAlignment="Left"
  639. VerticalAlignment="Center"
  640. IsVisible="{Binding !ShowLoadProgress}"
  641. PointerReleased="DockedStatus_PointerReleased"
  642. Text="{Binding DockedStatusText}"
  643. TextAlignment="Left" />
  644. <Border
  645. Width="2"
  646. Height="12"
  647. Margin="0"
  648. BorderBrush="Gray"
  649. BorderThickness="1"
  650. IsVisible="{Binding !ShowLoadProgress}" />
  651. <TextBlock
  652. Name="AspectRatioStatus"
  653. Margin="5,0,5,0"
  654. HorizontalAlignment="Left"
  655. VerticalAlignment="Center"
  656. IsVisible="{Binding !ShowLoadProgress}"
  657. PointerReleased="AspectRatioStatus_PointerReleased"
  658. Text="{Binding AspectRatioStatusText}"
  659. TextAlignment="Left" />
  660. <Border
  661. Width="2"
  662. Height="12"
  663. Margin="0"
  664. BorderBrush="Gray"
  665. BorderThickness="1"
  666. IsVisible="{Binding !ShowLoadProgress}" />
  667. <ui:ToggleSplitButton
  668. Name="VolumeStatus"
  669. Padding="5,0,5,0"
  670. HorizontalAlignment="Left"
  671. VerticalAlignment="Center"
  672. VerticalContentAlignment="Center"
  673. Background="{DynamicResource ThemeContentBackgroundColor}"
  674. BorderThickness="0"
  675. Content="{Binding VolumeStatusText}"
  676. IsChecked="{Binding VolumeMuted}"
  677. IsVisible="{Binding !ShowLoadProgress}">
  678. <ui:ToggleSplitButton.Flyout>
  679. <Flyout Placement="Bottom" ShowMode="TransientWithDismissOnPointerMoveAway">
  680. <Grid Margin="0">
  681. <Slider
  682. MaxHeight="40"
  683. Width="150"
  684. Margin="0"
  685. Padding="0"
  686. IsSnapToTickEnabled="True"
  687. LargeChange="0.05"
  688. Maximum="1"
  689. Minimum="0"
  690. SmallChange="0.01"
  691. TickFrequency="0.05"
  692. ToolTip.Tip="{locale:Locale AudioVolumeTooltip}"
  693. Value="{Binding Volume}" />
  694. </Grid>
  695. </Flyout>
  696. </ui:ToggleSplitButton.Flyout>
  697. </ui:ToggleSplitButton>
  698. <Border
  699. Width="2"
  700. Height="12"
  701. Margin="0"
  702. BorderBrush="Gray"
  703. BorderThickness="1"
  704. IsVisible="{Binding !ShowLoadProgress}" />
  705. <TextBlock
  706. Margin="5,0,5,0"
  707. HorizontalAlignment="Left"
  708. VerticalAlignment="Center"
  709. IsVisible="{Binding !ShowLoadProgress}"
  710. Text="{Binding GameStatusText}"
  711. TextAlignment="Left" />
  712. <Border
  713. Width="2"
  714. Height="12"
  715. Margin="0"
  716. BorderBrush="Gray"
  717. BorderThickness="1"
  718. IsVisible="{Binding !ShowLoadProgress}" />
  719. <TextBlock
  720. Margin="5,0,5,0"
  721. HorizontalAlignment="Left"
  722. VerticalAlignment="Center"
  723. IsVisible="{Binding !ShowLoadProgress}"
  724. Text="{Binding FifoStatusText}"
  725. TextAlignment="Left" />
  726. <Border
  727. Width="2"
  728. Height="12"
  729. Margin="0"
  730. BorderBrush="Gray"
  731. BorderThickness="1"
  732. IsVisible="{Binding !ShowLoadProgress}" />
  733. <TextBlock
  734. Margin="5,0,5,0"
  735. HorizontalAlignment="Left"
  736. VerticalAlignment="Center"
  737. IsVisible="{Binding !ShowLoadProgress}"
  738. Text="{Binding BackendText}"
  739. TextAlignment="Left" />
  740. <Border
  741. Width="2"
  742. Height="12"
  743. Margin="0"
  744. BorderBrush="Gray"
  745. BorderThickness="1"
  746. IsVisible="{Binding !ShowLoadProgress}" />
  747. <TextBlock
  748. Margin="5,0,5,0"
  749. HorizontalAlignment="Left"
  750. VerticalAlignment="Center"
  751. IsVisible="{Binding !ShowLoadProgress}"
  752. Text="{Binding GpuNameText}"
  753. TextAlignment="Left" />
  754. </StackPanel>
  755. <StackPanel
  756. Grid.Column="3"
  757. Margin="0,0,5,0"
  758. VerticalAlignment="Center"
  759. IsVisible="{Binding ShowFirmwareStatus}"
  760. Orientation="Horizontal">
  761. <TextBlock
  762. Name="FirmwareStatus"
  763. Margin="0"
  764. HorizontalAlignment="Right"
  765. VerticalAlignment="Center"
  766. Text="{locale:Locale StatusBarSystemVersion}" />
  767. </StackPanel>
  768. </Grid>
  769. </Grid>
  770. </Grid>
  771. </window:StyleableWindow>