diff options
Diffstat (limited to 'Ryujinx.Ava/Ui/Applet/AvaHostUiHandler.cs')
-rw-r--r-- | Ryujinx.Ava/Ui/Applet/AvaHostUiHandler.cs | 57 |
1 files changed, 53 insertions, 4 deletions
diff --git a/Ryujinx.Ava/Ui/Applet/AvaHostUiHandler.cs b/Ryujinx.Ava/Ui/Applet/AvaHostUiHandler.cs index f573e167..e9a0bd51 100644 --- a/Ryujinx.Ava/Ui/Applet/AvaHostUiHandler.cs +++ b/Ryujinx.Ava/Ui/Applet/AvaHostUiHandler.cs @@ -1,5 +1,6 @@ using Avalonia.Controls; using Avalonia.Threading; +using FluentAvalonia.UI.Controls; using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Ui.Controls; using Ryujinx.Ava.Ui.Windows; @@ -45,13 +46,61 @@ namespace Ryujinx.Ava.Ui.Applet public bool DisplayMessageDialog(string title, string message) { - // TODO : Show controller applet. Needs settings window to be implemented. - Dispatcher.UIThread.InvokeAsync(() => + ManualResetEvent dialogCloseEvent = new(false); + + bool okPressed = false; + + Dispatcher.UIThread.InvokeAsync(async () => { - ContentDialogHelper.ShowNotAvailableMessage(_parent); + try + { + ManualResetEvent deferEvent = new(false); + + bool opened = false; + + UserResult response = await ContentDialogHelper.ShowDeferredContentDialog(_parent, + title, + message, + "", + LocaleManager.Instance["DialogOpenSettingsWindowLabel"], + "", + LocaleManager.Instance["SettingsButtonClose"], + (int)Symbol.Important, + deferEvent, + async (window) => + { + if (opened) + { + return; + } + + opened = true; + + _parent.SettingsWindow = new SettingsWindow(_parent.VirtualFileSystem, _parent.ContentManager); + + await _parent.SettingsWindow.ShowDialog(window); + + opened = false; + }); + + if (response == UserResult.Ok) + { + okPressed = true; + } + + dialogCloseEvent.Set(); + } + catch (Exception ex) + { + ContentDialogHelper.CreateErrorDialog(_parent, string.Format(LocaleManager.Instance["DialogMessageDialogErrorExceptionMessage"], ex)); + + dialogCloseEvent.Set(); + } }); - return true; + dialogCloseEvent.WaitOne(); + + return okPressed; } public bool DisplayInputDialog(SoftwareKeyboardUiArgs args, out string userText) |