summaryrefslogtreecommitdiff
path: root/Source/Android
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2022-08-14 13:05:30 +0200
committerJosJuice <josjuice@gmail.com>2023-03-03 22:28:25 +0100
commit8b78f73e80dbd7c98b778aa33d0e04d71987ba3c (patch)
treef506b489de013ed4ac3abe7ca6824bc3617ffa7a /Source/Android
parentea3200d4ba9378c4dbec647c75b994a0c7aefced (diff)
Android: Add Default and Clear actions for controllers
Diffstat (limited to 'Source/Android')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java19
-rw-r--r--Source/Android/app/src/main/res/values/strings.xml5
-rw-r--r--Source/Android/jni/Input/EmulatedController.cpp24
4 files changed, 52 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.java
index 5a5793f530..5f6275ffcd 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.java
@@ -31,6 +31,10 @@ public class EmulatedController
public native void updateSingleControlReference(ControlReference controlReference);
+ public native void loadDefaultSettings();
+
+ public native void clearSettings();
+
public static native EmulatedController getGcPad(int controllerIndex);
public static native EmulatedController getWiimote(int controllerIndex);
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 e2199d2922..8d9a34c252 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
@@ -1213,6 +1213,13 @@ public final class SettingsFragmentPresenter
mView.setMappingAllDevices(newValue);
}
}, R.string.input_device_all_devices, R.string.input_device_all_devices_description));
+
+ sl.add(new RunRunnable(mContext, R.string.input_reset_to_default,
+ R.string.input_reset_to_default_description, R.string.input_reset_warning, 0, true,
+ () -> loadDefaultControllerSettings(controller)));
+
+ sl.add(new RunRunnable(mContext, R.string.input_clear, R.string.input_clear_description,
+ R.string.input_reset_warning, 0, true, () -> clearControllerSettings(controller)));
}
/**
@@ -1280,6 +1287,18 @@ public final class SettingsFragmentPresenter
}
}
+ private void loadDefaultControllerSettings(EmulatedController controller)
+ {
+ controller.loadDefaultSettings();
+ mView.getAdapter().notifyAllSettingsChanged();
+ }
+
+ private void clearControllerSettings(EmulatedController controller)
+ {
+ controller.clearSettings();
+ mView.getAdapter().notifyAllSettingsChanged();
+ }
+
private static int getLogVerbosityEntries()
{
// Value obtained from LogLevel in Common/Logging/Log.h
diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml
index ff41d8a631..16252e6b84 100644
--- a/Source/Android/app/src/main/res/values/strings.xml
+++ b/Source/Android/app/src/main/res/values/strings.xml
@@ -30,6 +30,11 @@
<string name="input_device">Device</string>
<string name="input_device_all_devices">Create Mappings for Other Devices</string>
<string name="input_device_all_devices_description">Detects inputs from all devices, not just the selected device.</string>
+ <string name="input_reset_to_default">Default</string>
+ <string name="input_reset_to_default_description">Reset settings for this controller to the default.</string>
+ <string name="input_clear">Clear</string>
+ <string name="input_clear_description">Clear settings for this controller.</string>
+ <string name="input_reset_warning">Are you sure? Your current controller settings will be deleted.</string>
<string name="input_binding">Input Binding</string>
<string name="input_binding_description">Press or move an input to bind it to %1$s.</string>
diff --git a/Source/Android/jni/Input/EmulatedController.cpp b/Source/Android/jni/Input/EmulatedController.cpp
index ba9e454dae..fb38471738 100644
--- a/Source/Android/jni/Input/EmulatedController.cpp
+++ b/Source/Android/jni/Input/EmulatedController.cpp
@@ -3,6 +3,7 @@
#include <jni.h>
+#include "Common/IniFile.h"
#include "Core/HW/GCPad.h"
#include "Core/HW/Wiimote.h"
#include "Core/HW/WiimoteEmu/WiimoteEmu.h"
@@ -71,6 +72,29 @@ Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedContro
g_controller_interface, ControlReferenceFromJava(env, control_reference));
}
+JNIEXPORT void JNICALL
+Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_loadDefaultSettings(
+ JNIEnv* env, jobject obj)
+{
+ ControllerEmu::EmulatedController* controller = EmulatedControllerFromJava(env, obj);
+
+ controller->LoadDefaults(g_controller_interface);
+ controller->UpdateReferences(g_controller_interface);
+}
+
+JNIEXPORT void JNICALL
+Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_clearSettings(
+ JNIEnv* env, jobject obj)
+{
+ ControllerEmu::EmulatedController* controller = EmulatedControllerFromJava(env, obj);
+
+ // Loading an empty IniFile section clears everything.
+ IniFile::Section section;
+
+ controller->LoadConfig(&section);
+ controller->UpdateReferences(g_controller_interface);
+}
+
JNIEXPORT jobject JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_getGcPad(
JNIEnv* env, jclass, jint controller_index)