From f3fb03858724645140d3128045e10fac34968a98 Mon Sep 17 00:00:00 2001 From: David Griswold Date: Fri, 27 Sep 2024 14:50:36 -0700 Subject: [PATCH] Reenable dpad axes option (#262) * Reenable dpad axes option * Update Header Setting to allow for a description under tht title * Add header descriptions for dpad axis and buttons --- .../features/settings/model/Settings.kt | 8 +++--- .../settings/model/view/HeaderSetting.kt | 2 +- .../model/view/InputBindingSetting.kt | 10 ------- .../features/settings/ui/SettingsActivity.kt | 2 +- .../settings/ui/SettingsFragmentPresenter.kt | 9 +++++-- .../ui/viewholder/HeaderViewHolder.kt | 6 +++++ .../res/layout/list_item_settings_header.xml | 27 +++++++++++++++---- .../app/src/main/res/values/strings.xml | 4 +++ 8 files changed, 46 insertions(+), 22 deletions(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.kt index 5ecce6dc4..6e97786cd 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.kt @@ -165,9 +165,11 @@ class Settings { KEY_CSTICK_AXIS_VERTICAL, KEY_CSTICK_AXIS_HORIZONTAL ) - val dPadKeys = listOf( -// KEY_DPAD_AXIS_VERTICAL, -// KEY_DPAD_AXIS_HORIZONTAL, + val dPadAxisKeys = listOf( + KEY_DPAD_AXIS_VERTICAL, + KEY_DPAD_AXIS_HORIZONTAL + ) + val dPadButtonKeys = listOf( KEY_BUTTON_UP, KEY_BUTTON_DOWN, KEY_BUTTON_LEFT, diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/HeaderSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/HeaderSetting.kt index e99b842f9..d2a50f648 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/HeaderSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/HeaderSetting.kt @@ -4,6 +4,6 @@ package org.citra.citra_emu.features.settings.model.view -class HeaderSetting(titleId: Int) : SettingsItem(null, titleId, 0) { +class HeaderSetting(titleId: Int,descId: Int = 0) : SettingsItem(null, titleId, descId) { override val type = TYPE_HEADER } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt index 967b81a8d..8ecd60684 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt @@ -78,15 +78,6 @@ class InputBindingSetting( else -> false } - - fun isDpadButtons(): Boolean = - when (abstractSetting.key) { - Settings.KEY_BUTTON_DOWN, - Settings.KEY_BUTTON_LEFT, - Settings.KEY_BUTTON_UP, - Settings.KEY_BUTTON_RIGHT -> true - else -> false - } /** * Returns true if this key is for the 3DS L/R or ZL/ZR buttons. Note, these are not real * triggers on the 3DS, but we support them as such on a physical gamepad. @@ -136,7 +127,6 @@ class InputBindingSetting( Settings.KEY_BUTTON_DOWN -> NativeLibrary.ButtonType.DPAD_DOWN Settings.KEY_BUTTON_LEFT -> NativeLibrary.ButtonType.DPAD_LEFT Settings.KEY_BUTTON_RIGHT -> NativeLibrary.ButtonType.DPAD_RIGHT - Settings.HOTKEY_SCREEN_SWAP -> Hotkey.SWAP_SCREEN.button Settings.HOTKEY_CYCLE_LAYOUT -> Hotkey.CYCLE_LAYOUT.button Settings.HOTKEY_CLOSE_GAME -> Hotkey.CLOSE_GAME.button diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivity.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivity.kt index 18b708131..66e4bcace 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivity.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivity.kt @@ -191,7 +191,7 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView { presenter.onSettingsReset() val controllerKeys = Settings.buttonKeys + Settings.circlePadKeys + Settings.cStickKeys + - Settings.dPadKeys + Settings.triggerKeys + Settings.dPadButtonKeys + Settings.dPadAxisKeys + Settings.triggerKeys val editor = PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext).edit() controllerKeys.forEach { editor.remove(it) } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt index 5b462b69a..0206a8082 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -621,8 +621,13 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) add(InputBindingSetting(button, Settings.axisTitles[i])) } - add(HeaderSetting(R.string.controller_dpad)) - Settings.dPadKeys.forEachIndexed { i: Int, key: String -> + add(HeaderSetting(R.string.controller_dpad_axis,R.string.controller_dpad_axis_description)) + Settings.dPadAxisKeys.forEachIndexed { i: Int, key: String -> + val button = getInputObject(key) + add(InputBindingSetting(button, Settings.axisTitles[i])) + } + add(HeaderSetting(R.string.controller_dpad_button,R.string.controller_dpad_button_description)) + Settings.dPadButtonKeys.forEachIndexed { i: Int, key: String -> val button = getInputObject(key) add(InputBindingSetting(button, Settings.dPadTitles[i])) } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/HeaderViewHolder.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/HeaderViewHolder.kt index 617348c89..ed794fcfb 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/HeaderViewHolder.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/HeaderViewHolder.kt @@ -18,6 +18,12 @@ class HeaderViewHolder(val binding: ListItemSettingsHeaderBinding, adapter: Sett override fun bind(item: SettingsItem) { binding.textHeaderName.setText(item.nameId) + if (item.descriptionId != 0) { + binding.textHeaderDescription.visibility = View.VISIBLE + binding.textHeaderDescription.setText(item.descriptionId) + }else { + binding.textHeaderDescription.visibility = View.GONE + } } override fun onClick(clicked: View) { diff --git a/src/android/app/src/main/res/layout/list_item_settings_header.xml b/src/android/app/src/main/res/layout/list_item_settings_header.xml index e072d3254..539f36409 100644 --- a/src/android/app/src/main/res/layout/list_item_settings_header.xml +++ b/src/android/app/src/main/res/layout/list_item_settings_header.xml @@ -1,16 +1,33 @@ - + + + + \ No newline at end of file diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 6acc9d463..38537bccd 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -108,6 +108,10 @@ Triggers Trigger D-Pad + D-Pad (Axis) + Some controllers will not be able to map their dpad as an axis. In that case, use the D-Pad (buttons) section below instead. + D-Pad (Buttons) + Only map these buttons if the D-Pad (Axis) settings above do not work with your controller. Up/Down Axis Left/Right Axis Up