RumbleSettingsWindow.axaml.cs 2.3 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.ViewModels;
  7. using Ryujinx.Common.Configuration.Hid.Controller;
  8. using System.Threading.Tasks;
  9. namespace Ryujinx.Ava.Ui.Windows
  10. {
  11. public class RumbleSettingsWindow : UserControl
  12. {
  13. private readonly InputConfiguration<GamepadInputId, StickInputId> _viewmodel;
  14. public RumbleSettingsWindow()
  15. {
  16. InitializeComponent();
  17. }
  18. public RumbleSettingsWindow(ControllerSettingsViewModel viewmodel)
  19. {
  20. var config = viewmodel.Configuration as InputConfiguration<GamepadInputId, StickInputId>;
  21. _viewmodel = new InputConfiguration<GamepadInputId, StickInputId>()
  22. {
  23. StrongRumble = config.StrongRumble,
  24. WeakRumble = config.WeakRumble
  25. };
  26. InitializeComponent();
  27. }
  28. private void InitializeComponent()
  29. {
  30. DataContext = _viewmodel;
  31. AvaloniaXamlLoader.Load(this);
  32. }
  33. public static async Task Show(ControllerSettingsViewModel viewmodel, StyleableWindow window)
  34. {
  35. ContentDialog contentDialog = window.ContentDialog;
  36. string name = string.Empty;
  37. RumbleSettingsWindow content = new RumbleSettingsWindow(viewmodel);
  38. if (contentDialog != null)
  39. {
  40. contentDialog.Title = LocaleManager.Instance["ControllerRumbleTitle"];
  41. contentDialog.PrimaryButtonText = LocaleManager.Instance["ControllerSettingsSave"];
  42. contentDialog.SecondaryButtonText = "";
  43. contentDialog.CloseButtonText = LocaleManager.Instance["ControllerSettingsClose"];
  44. contentDialog.Content = content;
  45. contentDialog.PrimaryButtonClick += (sender, args) =>
  46. {
  47. var config = viewmodel.Configuration as InputConfiguration<GamepadInputId, StickInputId>;
  48. config.StrongRumble = content._viewmodel.StrongRumble;
  49. config.WeakRumble = content._viewmodel.WeakRumble;
  50. };
  51. await contentDialog.ShowAsync();
  52. }
  53. }
  54. }
  55. }