InputDialog.axaml.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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 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. InitializeComponent();
  24. }
  25. public InputDialog()
  26. {
  27. InitializeComponent();
  28. }
  29. private void InitializeComponent()
  30. {
  31. AvaloniaXamlLoader.Load(this);
  32. }
  33. public static async Task<(UserResult Result, string Input)> ShowInputDialog(StyleableWindow window, string title, string message, string input = "", string subMessage = "", uint maxLength = int.MaxValue)
  34. {
  35. ContentDialog contentDialog = window.ContentDialog;
  36. UserResult result = UserResult.Cancel;
  37. InputDialog content = new InputDialog(message, input = "", subMessage = "", maxLength);
  38. if (contentDialog != null)
  39. {
  40. contentDialog.Title = title;
  41. contentDialog.PrimaryButtonText = LocaleManager.Instance["InputDialogOk"];
  42. contentDialog.SecondaryButtonText = "";
  43. contentDialog.CloseButtonText = LocaleManager.Instance["InputDialogCancel"];
  44. contentDialog.Content = content;
  45. contentDialog.PrimaryButtonCommand = MiniCommand.Create(() =>
  46. {
  47. result = UserResult.Ok;
  48. input = content.Input;
  49. });
  50. await contentDialog.ShowAsync();
  51. }
  52. return (result, input);
  53. }
  54. }
  55. }