From 49b37550cae6b3c69f59a9c7a44b17e3c12a813b Mon Sep 17 00:00:00 2001
From: Isaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com>
Date: Sat, 21 Oct 2023 07:26:51 -0400
Subject: Ava UI: Input Menu Refactor (#4998)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* So much boilerplate

* Slow and steady

* Restructure + Ack suggestions

* Restructure + Ack suggestions

* Restructure

* Clean

* Propogate those fields i forgot about

* It builds

* Progress

* Almost there

* Fix stupid mistake

* Fix more stupid mistakes

* Actually fix fuck ups

* Start localising

* r/therestofthefuckingowl

* Localise ButtonKeyAssigner

* Are you feeling it now mr krabs

* We’re done at last

* Crimes against code

* Try me in the Hague

* Please be quiet

* Crimes are here to stay

* Dispose stuff

* Cleanup a couple things

* Visual fixes and improvements

One weird bug

* Fix rebase errors

* Fixes

* Ack Suggestions

Remaining ack suggestions

Update src/Ryujinx.Ava/UI/Models/Input/ControllerInputConfig.cs

Co-authored-by: Ac_K <Acoustik666@gmail.com>

Update src/Ryujinx.Ava/UI/Models/Input/ControllerInputConfig.cs

Co-authored-by: Ac_K <Acoustik666@gmail.com>

* Formatting and error

More Ava 11-ness

Whoops

* Code style fixes

* Style fixes

* Analyzer fix

* Remove all ReflectionBindings

* Remove ambigious object

* Remove redundant property

* Old man yells at formatter

* r e a d o n l y

* Fix profiles

* Use new Sliders

---------

Co-authored-by: Ac_K <Acoustik666@gmail.com>
---
 .../ViewModels/Input/ControllerInputViewModel.cs   | 84 ++++++++++++++++++++++
 1 file changed, 84 insertions(+)
 create mode 100644 src/Ryujinx.Ava/UI/ViewModels/Input/ControllerInputViewModel.cs

(limited to 'src/Ryujinx.Ava/UI/ViewModels/Input/ControllerInputViewModel.cs')

diff --git a/src/Ryujinx.Ava/UI/ViewModels/Input/ControllerInputViewModel.cs b/src/Ryujinx.Ava/UI/ViewModels/Input/ControllerInputViewModel.cs
new file mode 100644
index 00000000..0e23dfa7
--- /dev/null
+++ b/src/Ryujinx.Ava/UI/ViewModels/Input/ControllerInputViewModel.cs
@@ -0,0 +1,84 @@
+using Avalonia.Svg.Skia;
+using Ryujinx.Ava.UI.Models.Input;
+using Ryujinx.Ava.UI.Views.Input;
+
+namespace Ryujinx.Ava.UI.ViewModels.Input
+{
+    public class ControllerInputViewModel : BaseModel
+    {
+        private ControllerInputConfig _config;
+        public ControllerInputConfig 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 ControllerInputViewModel(InputViewModel model, ControllerInputConfig config)
+        {
+            parentModel = model;
+            model.NotifyChangesEvent += OnParentModelChanged;
+            OnParentModelChanged();
+            Config = config;
+        }
+
+        public async void ShowMotionConfig()
+        {
+            await MotionInputView.Show(this);
+        }
+
+        public async void ShowRumbleConfig()
+        {
+            await RumbleInputView.Show(this);
+        }
+
+        public void OnParentModelChanged()
+        {
+            IsLeft = parentModel.IsLeft;
+            IsRight = parentModel.IsRight;
+            Image = parentModel.Image;
+        }
+    }
+}
-- 
cgit v1.2.3-70-g09d2