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