summaryrefslogtreecommitdiff
path: root/Source/Android/app/src
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2022-04-18 18:54:58 +0200
committerJosJuice <josjuice@gmail.com>2023-03-03 22:28:24 +0100
commit2113bf5e3afface4acd072f677c620c60bd6edde (patch)
treef4ddc26fa0b8785a73b175d99d30773d8c9c2711 /Source/Android/app/src
parenta78dca5fb08d7c0f18d3d43d5b3b485549a5a8ce (diff)
Android: Implement enabling/disabling control groups
All this code for just a single checkbox... Ah well, it has to be done
Diffstat (limited to 'Source/Android/app/src')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControlGroupEnabledSetting.java50
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/ControlGroup.java10
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java7
-rw-r--r--Source/Android/app/src/main/res/values/strings.xml1
4 files changed, 68 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControlGroupEnabledSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControlGroupEnabledSetting.java
new file mode 100644
index 0000000000..95aa080429
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControlGroupEnabledSetting.java
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.features.input.model;
+
+import org.dolphinemu.dolphinemu.features.input.model.controlleremu.ControlGroup;
+import org.dolphinemu.dolphinemu.features.settings.model.AbstractBooleanSetting;
+import org.dolphinemu.dolphinemu.features.settings.model.Settings;
+
+public class ControlGroupEnabledSetting implements AbstractBooleanSetting
+{
+ private final ControlGroup mControlGroup;
+
+ public ControlGroupEnabledSetting(ControlGroup controlGroup)
+ {
+ mControlGroup = controlGroup;
+ }
+
+ @Override
+ public boolean getBoolean(Settings settings)
+ {
+ return mControlGroup.getEnabled();
+ }
+
+ @Override
+ public void setBoolean(Settings settings, boolean newValue)
+ {
+ mControlGroup.setEnabled(newValue);
+ }
+
+ @Override
+ public boolean isOverridden(Settings settings)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isRuntimeEditable()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean delete(Settings settings)
+ {
+ boolean newValue = mControlGroup.getDefaultEnabledValue() != ControlGroup.DEFAULT_ENABLED_NO;
+ mControlGroup.setEnabled(newValue);
+
+ return true;
+ }
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/ControlGroup.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/ControlGroup.java
index 0a7681af6d..1bafd4a1f2 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/ControlGroup.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/ControlGroup.java
@@ -27,6 +27,10 @@ public class ControlGroup
public static final int TYPE_IMU_GYROSCOPE = 12;
public static final int TYPE_IMU_CURSOR = 13;
+ public static final int DEFAULT_ENABLED_ALWAYS = 0;
+ public static final int DEFAULT_ENABLED_YES = 1;
+ public static final int DEFAULT_ENABLED_NO = 2;
+
@Keep
private final long mPointer;
@@ -40,6 +44,12 @@ public class ControlGroup
public native int getGroupType();
+ public native int getDefaultEnabledValue();
+
+ public native boolean getEnabled();
+
+ public native void setEnabled(boolean value);
+
public native int getControlCount();
public native Control getControl(int i);
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 f731a3426f..8ace1df30b 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
@@ -19,6 +19,7 @@ import org.dolphinemu.dolphinemu.features.input.model.InputMappingBooleanSetting
import org.dolphinemu.dolphinemu.features.input.model.InputMappingDoubleSetting;
import org.dolphinemu.dolphinemu.features.input.model.InputMappingIntSetting;
import org.dolphinemu.dolphinemu.features.input.model.controlleremu.ControlGroup;
+import org.dolphinemu.dolphinemu.features.input.model.ControlGroupEnabledSetting;
import org.dolphinemu.dolphinemu.features.input.model.controlleremu.EmulatedController;
import org.dolphinemu.dolphinemu.features.input.model.controlleremu.NumericSetting;
import org.dolphinemu.dolphinemu.features.input.model.view.InputMappingControlSetting;
@@ -1178,6 +1179,12 @@ public final class SettingsFragmentPresenter
sl.add(new HeaderSetting(group.getUiName(), ""));
+ if (group.getDefaultEnabledValue() != ControlGroup.DEFAULT_ENABLED_ALWAYS)
+ {
+ sl.add(new SwitchSetting(mContext, new ControlGroupEnabledSetting(group), R.string.enabled,
+ 0));
+ }
+
int controlCount = group.getControlCount();
for (int j = 0; j < controlCount; j++)
{
diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml
index 4fd30b59fb..7099a1e33f 100644
--- a/Source/Android/app/src/main/res/values/strings.xml
+++ b/Source/Android/app/src/main/res/values/strings.xml
@@ -585,6 +585,7 @@ It can efficiently compress both junk data and encrypted Wii data.
<string name="unavailable_paths">Dolphin does not have permission to access one or more configured paths. Would you like to fix this before starting?</string>
<!-- Misc -->
+ <string name="enabled">Enabled</string>
<string name="pitch">Total Pitch</string>
<string name="yaw">Total Yaw</string>
<string name="vertical_offset">Vertical Offset</string>