From 8acc39cc3f769dc378d5231ddeb634a08114f40d Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sun, 26 Feb 2023 12:45:28 +0100 Subject: [PATCH] Android: Add a button for accessing controller mappings The settings GameCube Controller N and Wii Remote N (where N is a number) have two purposes: You can select what controller type you want to use, and also, when you select a controller type (even if you're selecting the one that already is selected), the mapping settings open. This second part is less discoverable than it ideally should be. I'm changing it so that there now is a button for opening the mapping settings instead. --- .../features/settings/ui/SettingsAdapter.java | 6 +- .../ui/viewholder/SingleChoiceViewHolder.java | 42 +++++++++++++- .../res/layout-ldrtl/list_item_setting.xml | 57 +++++++++++++++++++ .../src/main/res/layout/list_item_setting.xml | 21 ++++++- .../app/src/main/res/values/strings.xml | 1 + 5 files changed, 116 insertions(+), 11 deletions(-) create mode 100644 Source/Android/app/src/main/res/layout-ldrtl/list_item_setting.xml diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java index a042e7aaaf..be46ded8a1 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java @@ -467,7 +467,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter getSelectedValue = null; + if (item instanceof SingleChoiceSetting) + { + SingleChoiceSetting setting = (SingleChoiceSetting) item; + menuTag = setting.getMenuTag(); + getSelectedValue = setting::getSelectedValue; + } + else if (item instanceof StringSingleChoiceSetting) + { + StringSingleChoiceSetting setting = (StringSingleChoiceSetting) item; + menuTag = setting.getMenuTag(); + getSelectedValue = setting::getSelectedValueIndex; + } + + if (menuTag != null) + { + mBinding.buttonMoreSettings.setVisibility(View.VISIBLE); + + final MenuTag finalMenuTag = menuTag; + final Function finalGetSelectedValue = getSelectedValue; + mBinding.buttonMoreSettings.setOnClickListener((view) -> + adapter.handleMenuTag(finalMenuTag, finalGetSelectedValue.apply(settings))); + } + else + { + mBinding.buttonMoreSettings.setVisibility(View.GONE); + } + setStyle(mBinding.textSettingName, mItem); } diff --git a/Source/Android/app/src/main/res/layout-ldrtl/list_item_setting.xml b/Source/Android/app/src/main/res/layout-ldrtl/list_item_setting.xml new file mode 100644 index 0000000000..8e923c4bd8 --- /dev/null +++ b/Source/Android/app/src/main/res/layout-ldrtl/list_item_setting.xml @@ -0,0 +1,57 @@ + + + + + + + +