summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2022-10-30 17:20:10 +0100
committerJosJuice <josjuice@gmail.com>2023-03-03 22:28:24 +0100
commita1cc19f443fb9c39d1341f3aa1c80b1ecfe0ec4d (patch)
tree009543d56013a9d63e0459c6f14c1317df26df7d /Source/Android/app/src/main/java
parent2b1dd52750c8c85796be4a6785fb769481ec191c (diff)
Android: Add "Create mappings for other devices"
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/MotionAlertDialog.java12
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java25
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java12
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java3
-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.java34
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java12
7 files changed, 103 insertions, 7 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/MotionAlertDialog.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/MotionAlertDialog.java
index 0a4afc7acf..9872bdd01e 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/MotionAlertDialog.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/MotionAlertDialog.java
@@ -22,20 +22,24 @@ public final class MotionAlertDialog extends AlertDialog
{
private final Activity mActivity;
private final InputMappingControlSetting mSetting;
+ private final boolean mAllDevices;
private boolean mRunning = false;
/**
* Constructor
*
- * @param activity The current {@link Activity}.
- * @param setting The setting to show this dialog for.
+ * @param activity The current {@link Activity}.
+ * @param setting The setting to show this dialog for.
+ * @param allDevices Whether to detect inputs from devices other than the configured one.
*/
- public MotionAlertDialog(Activity activity, InputMappingControlSetting setting)
+ public MotionAlertDialog(Activity activity, InputMappingControlSetting setting,
+ boolean allDevices)
{
super(activity);
mActivity = activity;
mSetting = setting;
+ mAllDevices = allDevices;
}
@Override
@@ -46,7 +50,7 @@ public final class MotionAlertDialog extends AlertDialog
mRunning = true;
new Thread(() ->
{
- String result = MappingCommon.detectInput(mSetting.getController(), false);
+ String result = MappingCommon.detectInput(mSetting.getController(), mAllDevices);
mActivity.runOnUiThread(() ->
{
if (mRunning)
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
index 2af17e2d2f..f10a915bcc 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
@@ -41,15 +41,17 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
private static final String ARG_GAME_ID = "game_id";
private static final String ARG_REVISION = "revision";
private static final String ARG_IS_WII = "is_wii";
+ private static final String KEY_MAPPING_ALL_DEVICES = "all_devices";
private static final String FRAGMENT_TAG = "settings";
- private SettingsActivityPresenter mPresenter;
+ private SettingsActivityPresenter mPresenter;
private AlertDialog dialog;
-
private CollapsingToolbarLayout mToolbarLayout;
private ActivitySettingsBinding mBinding;
+ private boolean mMappingAllDevices = false;
+
public static void launch(Context context, MenuTag menuTag, String gameId, int revision,
boolean isWii)
{
@@ -82,6 +84,10 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
{
MainPresenter.skipRescanningLibrary();
}
+ else
+ {
+ mMappingAllDevices = savedInstanceState.getBoolean(KEY_MAPPING_ALL_DEVICES);
+ }
mBinding = ActivitySettingsBinding.inflate(getLayoutInflater());
setContentView(mBinding.getRoot());
@@ -125,7 +131,10 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
{
// Critical: If super method is not called, rotations will be busted.
super.onSaveInstanceState(outState);
+
mPresenter.saveState(outState);
+
+ outState.putBoolean(KEY_MAPPING_ALL_DEVICES, mMappingAllDevices);
}
@Override
@@ -333,6 +342,18 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
mToolbarLayout.setTitle(title);
}
+ @Override
+ public void setMappingAllDevices(boolean allDevices)
+ {
+ mMappingAllDevices = allDevices;
+ }
+
+ @Override
+ public boolean isMappingAllDevices()
+ {
+ return mMappingAllDevices;
+ }
+
private void setInsets()
{
ViewCompat.setOnApplyWindowInsetsListener(mBinding.appbarSettings, (v, windowInsets) ->
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java
index c835aa4399..d71d729af8 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java
@@ -97,4 +97,16 @@ public interface SettingsActivityView
* Accesses the material toolbar layout and changes the title
*/
void setToolbarTitle(String title);
+
+ /**
+ * Sets whether the input mapping dialog should detect inputs from all devices,
+ * not just the device configured for the controller.
+ */
+ void setMappingAllDevices(boolean allDevices);
+
+ /**
+ * Returns whether the input mapping dialog should detect inputs from all devices,
+ * not just the device configured for the controller.
+ */
+ boolean isMappingAllDevices();
}
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 cd2d047ecb..10ca9ddef2 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
@@ -312,7 +312,8 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
public void onInputMappingClick(final InputMappingControlSetting item, final int position)
{
- final MotionAlertDialog dialog = new MotionAlertDialog(mView.getActivity(), item);
+ final MotionAlertDialog dialog = new MotionAlertDialog(mView.getActivity(), item,
+ mView.isMappingAllDevices());
Drawable background = ContextCompat.getDrawable(mContext, R.drawable.dialog_round);
@ColorInt int color = new ElevationOverlayProvider(dialog.getContext()).compositeOverlay(
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 11ed282cf4..7a3f7b6db8 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
@@ -248,6 +248,18 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
return mActivity.hasMenuTagActionForValue(menuTag, value);
}
+ @Override
+ public void setMappingAllDevices(boolean allDevices)
+ {
+ mActivity.setMappingAllDevices(allDevices);
+ }
+
+ @Override
+ public boolean isMappingAllDevices()
+ {
+ return mActivity.isMappingAllDevices();
+ }
+
private void setInsets()
{
ViewCompat.setOnApplyWindowInsetsListener(mBinding.listSettings, (v, windowInsets) ->
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 c0540cefed..e2199d2922 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
@@ -1179,6 +1179,40 @@ public final class SettingsFragmentPresenter
private void addControllerMetaSettings(ArrayList<SettingsItem> sl, EmulatedController controller)
{
sl.add(new InputDeviceSetting(mContext, R.string.input_device, 0, controller));
+
+ sl.add(new SwitchSetting(mContext, new AbstractBooleanSetting()
+ {
+ @Override
+ public boolean isOverridden(Settings settings)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isRuntimeEditable()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean delete(Settings settings)
+ {
+ mView.setMappingAllDevices(false);
+ return true;
+ }
+
+ @Override
+ public boolean getBoolean(Settings settings)
+ {
+ return mView.isMappingAllDevices();
+ }
+
+ @Override
+ public void setBoolean(Settings settings, boolean newValue)
+ {
+ mView.setMappingAllDevices(newValue);
+ }
+ }, R.string.input_device_all_devices, R.string.input_device_all_devices_description));
}
/**
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java
index 295ff95abd..280657158f 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java
@@ -89,4 +89,16 @@ public interface SettingsFragmentView
* @param value The current value of the setting.
*/
boolean hasMenuTagActionForValue(@NonNull MenuTag menuTag, int value);
+
+ /**
+ * Sets whether the input mapping dialog should detect inputs from all devices,
+ * not just the device configured for the controller.
+ */
+ void setMappingAllDevices(boolean allDevices);
+
+ /**
+ * Returns whether the input mapping dialog should detect inputs from all devices,
+ * not just the device configured for the controller.
+ */
+ boolean isMappingAllDevices();
}