summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2022-04-18 17:57:29 +0200
committerJosJuice <josjuice@gmail.com>2023-03-03 22:28:24 +0100
commite7530a1cb91d9b49257fbfb75cb000757b212489 (patch)
tree554f0948301c2a3a06019dc890ad708c05382971 /Source/Android/app/src/main/java
parent0dd8bbbbbb91f701f284561f244fa4e6f29b5f61 (diff)
Android: Split Wii Remote settings into submenus
Too much stuff on one screen otherwise. This split matches DolphinQt.
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java29
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java12
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java74
3 files changed, 109 insertions, 6 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java
index 1d4fe28af9..f97a013074 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java
@@ -38,7 +38,19 @@ public enum MenuTag
WIIMOTE_EXTENSION_1("wiimote_extension", 0),
WIIMOTE_EXTENSION_2("wiimote_extension", 1),
WIIMOTE_EXTENSION_3("wiimote_extension", 2),
- WIIMOTE_EXTENSION_4("wiimote_extension", 3);
+ WIIMOTE_EXTENSION_4("wiimote_extension", 3),
+ WIIMOTE_GENERAL_1("wiimote_general", 0),
+ WIIMOTE_GENERAL_2("wiimote_general", 1),
+ WIIMOTE_GENERAL_3("wiimote_general", 2),
+ WIIMOTE_GENERAL_4("wiimote_general", 3),
+ WIIMOTE_MOTION_SIMULATION_1("wiimote_motion_simulation", 0),
+ WIIMOTE_MOTION_SIMULATION_2("wiimote_motion_simulation", 1),
+ WIIMOTE_MOTION_SIMULATION_3("wiimote_motion_simulation", 2),
+ WIIMOTE_MOTION_SIMULATION_4("wiimote_motion_simulation", 3),
+ WIIMOTE_MOTION_INPUT_1("wiimote_motion_input", 0),
+ WIIMOTE_MOTION_INPUT_2("wiimote_motion_input", 1),
+ WIIMOTE_MOTION_INPUT_3("wiimote_motion_input", 2),
+ WIIMOTE_MOTION_INPUT_4("wiimote_motion_input", 3);
private String tag;
private int subType = -1;
@@ -112,6 +124,21 @@ public enum MenuTag
return getMenuTag("wiimote_extension", subtype);
}
+ public static MenuTag getWiimoteGeneralMenuTag(int subtype)
+ {
+ return getMenuTag("wiimote_general", subtype);
+ }
+
+ public static MenuTag getWiimoteMotionSimulationMenuTag(int subtype)
+ {
+ return getMenuTag("wiimote_motion_simulation", subtype);
+ }
+
+ public static MenuTag getWiimoteMotionInputMenuTag(int subtype)
+ {
+ return getMenuTag("wiimote_motion_input", subtype);
+ }
+
private static MenuTag getMenuTag(String tag, int subtype)
{
for (MenuTag menuTag : MenuTag.values())
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
index bb73093656..11ed282cf4 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
@@ -75,6 +75,18 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
titles.put(MenuTag.WIIMOTE_EXTENSION_2, R.string.wiimote_extension_1);
titles.put(MenuTag.WIIMOTE_EXTENSION_3, R.string.wiimote_extension_2);
titles.put(MenuTag.WIIMOTE_EXTENSION_4, R.string.wiimote_extension_3);
+ titles.put(MenuTag.WIIMOTE_GENERAL_1, R.string.wiimote_general);
+ titles.put(MenuTag.WIIMOTE_GENERAL_2, R.string.wiimote_general);
+ titles.put(MenuTag.WIIMOTE_GENERAL_3, R.string.wiimote_general);
+ titles.put(MenuTag.WIIMOTE_GENERAL_4, R.string.wiimote_general);
+ titles.put(MenuTag.WIIMOTE_MOTION_SIMULATION_1, R.string.wiimote_motion_simulation);
+ titles.put(MenuTag.WIIMOTE_MOTION_SIMULATION_2, R.string.wiimote_motion_simulation);
+ titles.put(MenuTag.WIIMOTE_MOTION_SIMULATION_3, R.string.wiimote_motion_simulation);
+ titles.put(MenuTag.WIIMOTE_MOTION_SIMULATION_4, R.string.wiimote_motion_simulation);
+ titles.put(MenuTag.WIIMOTE_MOTION_INPUT_1, R.string.wiimote_motion_input);
+ titles.put(MenuTag.WIIMOTE_MOTION_INPUT_2, R.string.wiimote_motion_input);
+ titles.put(MenuTag.WIIMOTE_MOTION_INPUT_3, R.string.wiimote_motion_input);
+ titles.put(MenuTag.WIIMOTE_MOTION_INPUT_4, R.string.wiimote_motion_input);
}
private FragmentSettingsBinding mBinding;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
index fded8e56de..3f60937810 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
@@ -10,6 +10,7 @@ import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.collection.ArraySet;
import org.dolphinemu.dolphinemu.NativeLibrary;
import org.dolphinemu.dolphinemu.R;
@@ -56,8 +57,11 @@ import org.dolphinemu.dolphinemu.utils.ThreadUtil;
import org.dolphinemu.dolphinemu.utils.WiiUtils;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.Set;
public final class SettingsFragmentPresenter
{
@@ -248,6 +252,27 @@ public final class SettingsFragmentPresenter
addExtensionTypeSettings(sl, mControllerNumber, mControllerType);
break;
+ case WIIMOTE_GENERAL_1:
+ case WIIMOTE_GENERAL_2:
+ case WIIMOTE_GENERAL_3:
+ case WIIMOTE_GENERAL_4:
+ addWiimoteGeneralSubSettings(sl, mControllerNumber);
+ break;
+
+ case WIIMOTE_MOTION_SIMULATION_1:
+ case WIIMOTE_MOTION_SIMULATION_2:
+ case WIIMOTE_MOTION_SIMULATION_3:
+ case WIIMOTE_MOTION_SIMULATION_4:
+ addWiimoteMotionSimulationSubSettings(sl, mControllerNumber);
+ break;
+
+ case WIIMOTE_MOTION_INPUT_1:
+ case WIIMOTE_MOTION_INPUT_2:
+ case WIIMOTE_MOTION_INPUT_3:
+ case WIIMOTE_MOTION_INPUT_4:
+ addWiimoteMotionInputSubSettings(sl, mControllerNumber);
+ break;
+
default:
throw new UnsupportedOperationException("Unimplemented menu");
}
@@ -1081,7 +1106,7 @@ public final class SettingsFragmentPresenter
{
if (gcPadType == 6) // Emulated
{
- addControllerSettings(sl, EmulatedController.getGcPad(gcPadNumber));
+ addControllerSettings(sl, EmulatedController.getGcPad(gcPadNumber), null);
}
else if (gcPadType == 12) // Adapter
{
@@ -1094,22 +1119,61 @@ public final class SettingsFragmentPresenter
private void addWiimoteSubSettings(ArrayList<SettingsItem> sl, int wiimoteNumber)
{
- addControllerSettings(sl, EmulatedController.getWiimote(wiimoteNumber));
+ sl.add(new HeaderSetting(mContext, R.string.wiimote, 0));
+ sl.add(new SubmenuSetting(mContext, R.string.wiimote_general,
+ MenuTag.getWiimoteGeneralMenuTag(wiimoteNumber)));
+ sl.add(new SubmenuSetting(mContext, R.string.wiimote_motion_simulation,
+ MenuTag.getWiimoteMotionSimulationMenuTag(wiimoteNumber)));
+ sl.add(new SubmenuSetting(mContext, R.string.wiimote_motion_input,
+ MenuTag.getWiimoteMotionInputMenuTag(wiimoteNumber)));
+
+ addControllerSettings(sl, EmulatedController.getWiimote(wiimoteNumber),
+ Collections.singleton(ControlGroup.TYPE_ATTACHMENTS));
}
private void addExtensionTypeSettings(ArrayList<SettingsItem> sl, int wiimoteNumber,
int extensionType)
{
addControllerSettings(sl,
- EmulatedController.getWiimoteAttachment(wiimoteNumber, extensionType));
+ EmulatedController.getWiimoteAttachment(wiimoteNumber, extensionType), null);
+ }
+
+ private void addWiimoteGeneralSubSettings(ArrayList<SettingsItem> sl, int wiimoteNumber)
+ {
+ addControllerSettings(sl, EmulatedController.getWiimote(wiimoteNumber),
+ new ArraySet<>(Arrays.asList(ControlGroup.TYPE_BUTTONS, ControlGroup.TYPE_OTHER)));
+ }
+
+ private void addWiimoteMotionSimulationSubSettings(ArrayList<SettingsItem> sl, int wiimoteNumber)
+ {
+ addControllerSettings(sl, EmulatedController.getWiimote(wiimoteNumber),
+ new ArraySet<>(Arrays.asList(ControlGroup.TYPE_FORCE, ControlGroup.TYPE_TILT,
+ ControlGroup.TYPE_CURSOR, ControlGroup.TYPE_SHAKE)));
}
- private void addControllerSettings(ArrayList<SettingsItem> sl, EmulatedController controller)
+ private void addWiimoteMotionInputSubSettings(ArrayList<SettingsItem> sl, int wiimoteNumber)
+ {
+ addControllerSettings(sl, EmulatedController.getWiimote(wiimoteNumber),
+ new ArraySet<>(Arrays.asList(ControlGroup.TYPE_IMU_ACCELEROMETER,
+ ControlGroup.TYPE_IMU_GYROSCOPE, ControlGroup.TYPE_IMU_CURSOR)));
+ }
+
+ /**
+ * @param sl The list to place controller settings into.
+ * @param controller The controller to add settings for.
+ * @param groupTypeFilter If this is non-null, only groups whose types match this are considered.
+ */
+ private void addControllerSettings(ArrayList<SettingsItem> sl, EmulatedController controller,
+ Set<Integer> groupTypeFilter)
{
int groupCount = controller.getGroupCount();
for (int i = 0; i < groupCount; i++)
{
ControlGroup group = controller.getGroup(i);
+ int groupType = group.getGroupType();
+ if (groupTypeFilter != null && !groupTypeFilter.contains(groupType))
+ continue;
+
sl.add(new HeaderSetting(group.getUiName(), ""));
int controlCount = group.getControlCount();
@@ -1118,7 +1182,7 @@ public final class SettingsFragmentPresenter
sl.add(new InputMappingControlSetting(group.getControl(j), controller));
}
- if (group.getGroupType() == ControlGroup.TYPE_ATTACHMENTS)
+ if (groupType == ControlGroup.TYPE_ATTACHMENTS)
{
NumericSetting attachmentSetting = group.getAttachmentSetting();
sl.add(new SingleChoiceSetting(mContext, new InputMappingIntSetting(attachmentSetting),