diff options
author | Emmanuel Hansen <emmausssss@gmail.com> | 2022-07-05 18:06:31 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-05 20:06:31 +0200 |
commit | 594246ea4727c9377b1c916934d9b257a1b5d0d0 (patch) | |
tree | d3a8538f729575262543bcdb16e5c2c01522796b /Ryujinx.Ava/Ui/ViewModels/MainWindowViewModel.cs | |
parent | d21b403886fdc00dac2493532b3e8ff53d5882c4 (diff) |
UI - Avalonia Part 2 (#3351)1.1.163
* add settings windows and children views
* Expose hotkeys configuration on the UI
* Remove double spacing from locale JSON
* simplify button assigner
* add cemuhook buttons and title to locale
* move common button assigner to own class
* cancel button assigner when window is closed
* remove unused setting
* address review. fix controller profile not loading default when switching devices
* fix updater file name
* Input cleanup (#37)
* addressed review
* add device type to controller device checks
* change accessibility modifier of public classes to internal
* Update Ryujinx.Ava/Ui/ViewModels/ControllerSettingsViewModel.cs
Co-authored-by: gdkchan <gab.dark.100@gmail.com>
* Update de_DE.json
* Update de_DE.json
* Update tr_TR.json
Translated newly added lines
* Update it_IT.json
* fix rebase
* update avalonia
* fix wrong key used for button text
* Align settings window elements
* Tabs to spaces
* Update brazilian portuguese translation
* Minor improvement on brazilian portuguese translation
* fix turkish translation
* remove unused text
* change view related classes to public
* unsubscribe from deferred event if dialog is closed
* Load the default language before loading any other when switching languages
* Make controller settings more compact
* increase default width of settings window, reduce profile buttons width
Co-authored-by: gdk <gab.dark.100@gmail.com>
Co-authored-by: MutantAura <44103205+MutantAura@users.noreply.github.com>
Co-authored-by: Niwu34 <67392333+Niwu34@users.noreply.github.com>
Co-authored-by: aegiff <99728970+aegiff@users.noreply.github.com>
Co-authored-by: Antonio Brugnolo <36473846+AntoSkate@users.noreply.github.com>
Diffstat (limited to 'Ryujinx.Ava/Ui/ViewModels/MainWindowViewModel.cs')
-rw-r--r-- | Ryujinx.Ava/Ui/ViewModels/MainWindowViewModel.cs | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/Ryujinx.Ava/Ui/ViewModels/MainWindowViewModel.cs b/Ryujinx.Ava/Ui/ViewModels/MainWindowViewModel.cs index dcb015bb..dbc19f75 100644 --- a/Ryujinx.Ava/Ui/ViewModels/MainWindowViewModel.cs +++ b/Ryujinx.Ava/Ui/ViewModels/MainWindowViewModel.cs @@ -11,6 +11,7 @@ using LibHac.FsSystem; using LibHac.Ncm; using Ryujinx.Ava.Common; using Ryujinx.Ava.Common.Locale; +using Ryujinx.Ava.Input; using Ryujinx.Ava.Ui.Controls; using Ryujinx.Ava.Ui.Windows; using Ryujinx.Common; @@ -35,7 +36,7 @@ using ShaderCacheLoadingState = Ryujinx.Graphics.Gpu.Shader.ShaderCacheState; namespace Ryujinx.Ava.Ui.ViewModels { - public class MainWindowViewModel : BaseModel + internal class MainWindowViewModel : BaseModel { private readonly MainWindow _owner; private ObservableCollection<ApplicationData> _applications; @@ -86,9 +87,7 @@ namespace Ryujinx.Ava.Ui.ViewModels if (Program.PreviewerDetached) { - ShowUiKey = KeyGesture.Parse(ConfigurationState.Instance.Hid.Hotkeys.Value.ShowUi.ToString()); - ScreenshotKey = KeyGesture.Parse(ConfigurationState.Instance.Hid.Hotkeys.Value.Screenshot.ToString()); - PauseKey = KeyGesture.Parse(ConfigurationState.Instance.Hid.Hotkeys.Value.Pause.ToString()); + LoadConfigurableHotKeys(); Volume = ConfigurationState.Instance.System.AudioVolume; } @@ -836,6 +835,22 @@ namespace Ryujinx.Ava.Ui.ViewModels } } + public void LoadConfigurableHotKeys() + { + if (AvaloniaMappingHelper.TryGetAvaKey((Ryujinx.Input.Key)ConfigurationState.Instance.Hid.Hotkeys.Value.ShowUi, out var showUiKey)) + { + ShowUiKey = new KeyGesture(showUiKey, KeyModifiers.None); + } + if (AvaloniaMappingHelper.TryGetAvaKey((Ryujinx.Input.Key)ConfigurationState.Instance.Hid.Hotkeys.Value.Screenshot, out var screenshotKey)) + { + ScreenshotKey = new KeyGesture(screenshotKey, KeyModifiers.None); + } + if (AvaloniaMappingHelper.TryGetAvaKey((Ryujinx.Input.Key)ConfigurationState.Instance.Hid.Hotkeys.Value.Pause, out var pauseKey)) + { + PauseKey = new KeyGesture(pauseKey, KeyModifiers.None); + } + } + public void TakeScreenshot() { _owner.AppHost.ScreenshotRequested = true; @@ -930,10 +945,12 @@ namespace Ryujinx.Ava.Ui.ViewModels } } - public void OpenSettings() + public async void OpenSettings() { - // TODO : Implement Settings window - ContentDialogHelper.ShowNotAvailableMessage(_owner); + _owner.SettingsWindow = new(_owner.VirtualFileSystem, _owner.ContentManager); + + await _owner.SettingsWindow.ShowDialog(_owner); + LoadConfigurableHotKeys(); } public void ManageProfiles() @@ -951,6 +968,7 @@ namespace Ryujinx.Ava.Ui.ViewModels public void ChangeLanguage(object obj) { + LocaleManager.Instance.LoadDefaultLanguage(); LocaleManager.Instance.LoadLanguage((string)obj); } @@ -1350,7 +1368,13 @@ namespace Ryujinx.Ava.Ui.ViewModels dialogMessage += LocaleManager.Instance["DialogFirmwareInstallerFirmwareInstallConfirmMessage"]; - UserResult result = await ContentDialogHelper.CreateConfirmationDialog(_owner, dialogTitle, dialogMessage, LocaleManager.Instance["InputDialogYes"], LocaleManager.Instance["InputDialogNo"], LocaleManager.Instance["RyujinxConfirm"]); + UserResult result = await ContentDialogHelper.CreateConfirmationDialog( + _owner, + dialogTitle, + dialogMessage, + LocaleManager.Instance["InputDialogYes"], + LocaleManager.Instance["InputDialogNo"], + LocaleManager.Instance["RyujinxConfirm"]); UpdateWaitWindow waitingDialog = ContentDialogHelper.CreateWaitingDialog(dialogTitle, LocaleManager.Instance["DialogFirmwareInstallerFirmwareInstallWaitMessage"]); |