InputDialog.axaml.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using Avalonia.Controls;
  2. using FluentAvalonia.UI.Controls;
  3. using Ryujinx.Ava.Common.Locale;
  4. using Ryujinx.Ava.UI.Helpers;
  5. using Ryujinx.Ava.UI.Models;
  6. using System.Threading.Tasks;
  7. namespace Ryujinx.Ava.UI.Controls
  8. {
  9. public partial class InputDialog : UserControl
  10. {
  11. public string Message { get; set; }
  12. public string Input { get; set; }
  13. public string SubMessage { get; set; }
  14. public uint MaxLength { get; }
  15. public InputDialog(string message, string input = "", string subMessage = "", uint maxLength = int.MaxValue)
  16. {
  17. Message = message;
  18. Input = input;
  19. SubMessage = subMessage;
  20. MaxLength = maxLength;
  21. DataContext = this;
  22. }
  23. public InputDialog()
  24. {
  25. InitializeComponent();
  26. }
  27. public static async Task<(UserResult Result, string Input)> ShowInputDialog(string title, string message,
  28. string input = "", string subMessage = "", uint maxLength = int.MaxValue)
  29. {
  30. UserResult result = UserResult.Cancel;
  31. InputDialog content = new InputDialog(message, input, subMessage, maxLength);
  32. ContentDialog contentDialog = new ContentDialog
  33. {
  34. Title = title,
  35. PrimaryButtonText = LocaleManager.Instance[LocaleKeys.InputDialogOk],
  36. SecondaryButtonText = "",
  37. CloseButtonText = LocaleManager.Instance[LocaleKeys.InputDialogCancel],
  38. Content = content,
  39. PrimaryButtonCommand = MiniCommand.Create(() =>
  40. {
  41. result = UserResult.Ok;
  42. input = content.Input;
  43. })
  44. };
  45. await contentDialog.ShowAsync();
  46. return (result, input);
  47. }
  48. }
  49. }