InputDialog.axaml.cs 1.8 KB

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