InputDialog.axaml.cs 1.8 KB

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