diff options
Diffstat (limited to 'Ryujinx.Ava/Ui/Controls/InputDialog.axaml.cs')
-rw-r--r-- | Ryujinx.Ava/Ui/Controls/InputDialog.axaml.cs | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/Ryujinx.Ava/Ui/Controls/InputDialog.axaml.cs b/Ryujinx.Ava/Ui/Controls/InputDialog.axaml.cs new file mode 100644 index 00000000..b9bbb66d --- /dev/null +++ b/Ryujinx.Ava/Ui/Controls/InputDialog.axaml.cs @@ -0,0 +1,67 @@ +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using FluentAvalonia.UI.Controls; +using Ryujinx.Ava.Common.Locale; +using Ryujinx.Ava.Ui.Models; +using Ryujinx.Ava.Ui.Windows; +using System.Threading.Tasks; + +namespace Ryujinx.Ava.Ui.Controls +{ + public class InputDialog : UserControl + { + public string Message { get; set; } + public string Input { get; set; } + public string SubMessage { get; set; } + + public uint MaxLength { get; } + + public InputDialog(string message, string input = "", string subMessage = "", uint maxLength = int.MaxValue) + { + Message = message; + Input = input; + SubMessage = subMessage; + MaxLength = maxLength; + + DataContext = this; + + InitializeComponent(); + } + + public InputDialog() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + + public static async Task<(UserResult Result, string Input)> ShowInputDialog(StyleableWindow window, string title, string message, string input = "", string subMessage = "", uint maxLength = int.MaxValue) + { + ContentDialog contentDialog = window.ContentDialog; + + UserResult result = UserResult.Cancel; + + InputDialog content = new InputDialog(message, input = "", subMessage = "", maxLength); + + if (contentDialog != null) + { + contentDialog.Title = title; + contentDialog.PrimaryButtonText = LocaleManager.Instance["InputDialogOk"]; + contentDialog.SecondaryButtonText = ""; + contentDialog.CloseButtonText = LocaleManager.Instance["InputDialogCancel"]; + contentDialog.Content = content; + contentDialog.PrimaryButtonCommand = MiniCommand.Create(() => + { + result = UserResult.Ok; + input = content.Input; + }); + await contentDialog.ShowAsync(); + } + + return (result, input); + } + } +}
\ No newline at end of file |