RumbleSettingsWindow.axaml.cs 2.0 KB

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