From fcbf08ca984e7a0250bf6c0973f4b6071c20209f Mon Sep 17 00:00:00 2001
From: Charles Lombardo <clombardo169@gmail.com>
Date: Tue, 4 Apr 2023 13:15:27 -0400
Subject: [PATCH] android: Add DPad slide toggle

---
 .../java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt   | 6 ++++++
 .../src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt | 2 +-
 .../java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt   | 2 +-
 src/android/app/src/main/res/menu/menu_overlay_options.xml  | 5 +++++
 src/android/app/src/main/res/values/strings.xml             | 1 +
 5 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
index 79383b1dd5..c7e44a0fbc 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
@@ -223,6 +223,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
         popup.menuInflater.inflate(R.menu.menu_overlay_options, popup.menu)
 
         popup.menu.findItem(R.id.menu_rel_stick_center).isChecked = EmulationMenuSettings.joystickRelCenter
+        popup.menu.findItem(R.id.menu_dpad_slide).isChecked = EmulationMenuSettings.dpadSlide
 
         popup.setOnMenuItemClickListener {
             when (it.itemId) {
@@ -266,6 +267,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
                     EmulationMenuSettings.joystickRelCenter = it.isChecked
                     true
                 }
+                R.id.menu_dpad_slide -> {
+                    it.isChecked = !it.isChecked
+                    EmulationMenuSettings.dpadSlide = it.isChecked
+                    true
+                }
                 R.id.menu_reset_overlay -> {
                     binding.drawerLayout.close()
                     resetInputOverlay()
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt
index 97e0ba3df3..7bff0a9cd4 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt
@@ -127,7 +127,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : SurfaceView(context
         }
 
         for (dpad in overlayDpads) {
-            if (!dpad.updateStatus(event, EmulationMenuSettings.dpadSlideEnable)) {
+            if (!dpad.updateStatus(event, EmulationMenuSettings.dpadSlide)) {
                 continue
             }
             NativeLibrary.onGamePadButtonEvent(
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt
index e51ac1cc11..021698d15a 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt
@@ -26,7 +26,7 @@ object EmulationMenuSettings {
                 .putBoolean(Settings.PREF_MENU_SETTINGS_JOYSTICK_REL_CENTER, value)
                 .apply()
         }
-    var dpadSlideEnable: Boolean
+    var dpadSlide: Boolean
         get() = preferences.getBoolean(Settings.PREF_MENU_SETTINGS_DPAD_SLIDE, true)
         set(value) {
             preferences.edit()
diff --git a/src/android/app/src/main/res/menu/menu_overlay_options.xml b/src/android/app/src/main/res/menu/menu_overlay_options.xml
index 151f305fb6..36c710f143 100644
--- a/src/android/app/src/main/res/menu/menu_overlay_options.xml
+++ b/src/android/app/src/main/res/menu/menu_overlay_options.xml
@@ -14,6 +14,11 @@
         android:title="@string/emulation_rel_stick_center"
         android:checkable="true" />
 
+    <item
+        android:id="@+id/menu_dpad_slide"
+        android:title="@string/emulation_dpad_slide"
+        android:checkable="true" />
+
     <item
         android:id="@+id/menu_reset_overlay"
         android:title="@string/emulation_touch_overlay_reset" />
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index 441d889785..70bff57499 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -88,6 +88,7 @@
     <string name="emulation_done">Done</string>
     <string name="emulation_toggle_controls">Toggle Controls</string>
     <string name="emulation_rel_stick_center">Relative Stick Center</string>
+    <string name="emulation_dpad_slide">DPad Slide</string>
     <string name="emulation_toggle_all">Toggle All</string>
     <string name="emulation_control_scale">Adjust Scale</string>
     <string name="emulation_touch_overlay_reset">Reset Overlay</string>