|
|
@@ -0,0 +1,75 @@
|
|
|
+using Avalonia;
|
|
|
+using Avalonia.Controls;
|
|
|
+using Avalonia.Markup.Xaml;
|
|
|
+using FluentAvalonia.UI.Controls;
|
|
|
+using Ryujinx.Ava.Common.Locale;
|
|
|
+using Ryujinx.Ava.UI.Models.Input;
|
|
|
+using Ryujinx.Ava.UI.ViewModels.Input;
|
|
|
+using Ryujinx.Ava.UI.Views.Input;
|
|
|
+using System.Threading.Tasks;
|
|
|
+
|
|
|
+namespace Ryujinx.UI.Views.Input
|
|
|
+{
|
|
|
+ public partial class LedInputView : UserControl
|
|
|
+ {
|
|
|
+ private readonly LedInputViewModel _viewModel;
|
|
|
+
|
|
|
+ public LedInputView(ControllerInputViewModel viewModel)
|
|
|
+ {
|
|
|
+ DataContext = _viewModel = new LedInputViewModel
|
|
|
+ {
|
|
|
+ ParentModel = viewModel.ParentModel,
|
|
|
+ TurnOffLed = viewModel.Config.TurnOffLed,
|
|
|
+ EnableLedChanging = viewModel.Config.EnableLedChanging,
|
|
|
+ LedColor = viewModel.Config.LedColor,
|
|
|
+ UseRainbowLed = viewModel.Config.UseRainbowLed,
|
|
|
+ };
|
|
|
+
|
|
|
+ InitializeComponent();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void ColorPickerButton_OnColorChanged(ColorPickerButton sender, ColorButtonColorChangedEventArgs args)
|
|
|
+ {
|
|
|
+ if (!args.NewColor.HasValue) return;
|
|
|
+ if (DataContext is not LedInputViewModel lvm) return;
|
|
|
+ if (!lvm.EnableLedChanging) return;
|
|
|
+ if (lvm.TurnOffLed) return;
|
|
|
+
|
|
|
+ lvm.ParentModel.SelectedGamepad.SetLed(args.NewColor.Value.ToUInt32());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void ColorPickerButton_OnAttachedToVisualTree(object sender, VisualTreeAttachmentEventArgs e)
|
|
|
+ {
|
|
|
+ if (DataContext is not LedInputViewModel lvm) return;
|
|
|
+ if (!lvm.EnableLedChanging) return;
|
|
|
+ if (lvm.TurnOffLed) return;
|
|
|
+
|
|
|
+ lvm.ParentModel.SelectedGamepad.SetLed(lvm.LedColor.ToUInt32());
|
|
|
+ }
|
|
|
+
|
|
|
+ public static async Task Show(ControllerInputViewModel viewModel)
|
|
|
+ {
|
|
|
+ LedInputView content = new(viewModel);
|
|
|
+
|
|
|
+ ContentDialog contentDialog = new()
|
|
|
+ {
|
|
|
+ Title = LocaleManager.Instance[LocaleKeys.ControllerLedTitle],
|
|
|
+ PrimaryButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsSave],
|
|
|
+ SecondaryButtonText = string.Empty,
|
|
|
+ CloseButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsClose],
|
|
|
+ Content = content,
|
|
|
+ };
|
|
|
+ contentDialog.PrimaryButtonClick += (sender, args) =>
|
|
|
+ {
|
|
|
+ GamepadInputConfig config = viewModel.Config;
|
|
|
+ config.EnableLedChanging = content._viewModel.EnableLedChanging;
|
|
|
+ config.LedColor = content._viewModel.LedColor;
|
|
|
+ config.UseRainbowLed = content._viewModel.UseRainbowLed;
|
|
|
+ config.TurnOffLed = content._viewModel.TurnOffLed;
|
|
|
+ };
|
|
|
+
|
|
|
+ await contentDialog.ShowAsync();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|