aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Ava/UI/ViewModels/Input/KeyboardInputViewModel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Ava/UI/ViewModels/Input/KeyboardInputViewModel.cs')
-rw-r--r--src/Ryujinx.Ava/UI/ViewModels/Input/KeyboardInputViewModel.cs73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/Ryujinx.Ava/UI/ViewModels/Input/KeyboardInputViewModel.cs b/src/Ryujinx.Ava/UI/ViewModels/Input/KeyboardInputViewModel.cs
new file mode 100644
index 00000000..a9387306
--- /dev/null
+++ b/src/Ryujinx.Ava/UI/ViewModels/Input/KeyboardInputViewModel.cs
@@ -0,0 +1,73 @@
+using Avalonia.Svg.Skia;
+using Ryujinx.Ava.UI.Models.Input;
+
+namespace Ryujinx.Ava.UI.ViewModels.Input
+{
+ public class KeyboardInputViewModel : BaseModel
+ {
+ private KeyboardInputConfig _config;
+ public KeyboardInputConfig Config
+ {
+ get => _config;
+ set
+ {
+ _config = value;
+ OnPropertyChanged();
+ }
+ }
+
+ private bool _isLeft;
+ public bool IsLeft
+ {
+ get => _isLeft;
+ set
+ {
+ _isLeft = value;
+ OnPropertyChanged();
+ OnPropertyChanged(nameof(HasSides));
+ }
+ }
+
+ private bool _isRight;
+ public bool IsRight
+ {
+ get => _isRight;
+ set
+ {
+ _isRight = value;
+ OnPropertyChanged();
+ OnPropertyChanged(nameof(HasSides));
+ }
+ }
+
+ public bool HasSides => IsLeft ^ IsRight;
+
+ private SvgImage _image;
+ public SvgImage Image
+ {
+ get => _image;
+ set
+ {
+ _image = value;
+ OnPropertyChanged();
+ }
+ }
+
+ public InputViewModel parentModel;
+
+ public KeyboardInputViewModel(InputViewModel model, KeyboardInputConfig config)
+ {
+ parentModel = model;
+ model.NotifyChangesEvent += OnParentModelChanged;
+ OnParentModelChanged();
+ Config = config;
+ }
+
+ public void OnParentModelChanged()
+ {
+ IsLeft = parentModel.IsLeft;
+ IsRight = parentModel.IsRight;
+ Image = parentModel.Image;
+ }
+ }
+}