summaryrefslogtreecommitdiff
path: root/Source/Android
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2022-08-14 21:11:00 +0200
committerJosJuice <josjuice@gmail.com>2023-03-03 22:28:25 +0100
commit7ef229d9082f72795e71db58ed13824bdd3d3e2c (patch)
tree62747f0a434dd2bd2eb3e8e1e357172476084fd0 /Source/Android
parent8b78f73e80dbd7c98b778aa33d0e04d71987ba3c (diff)
Android: Show warning when using old pre-defined controller INIs
Co-authored-by: Charles Lombardo <clombardo169@gmail.com>
Diffstat (limited to 'Source/Android')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java15
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java9
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java16
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java18
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java8
-rw-r--r--Source/Android/app/src/main/res/layout/activity_settings.xml12
-rw-r--r--Source/Android/app/src/main/res/values/strings.xml1
7 files changed, 76 insertions, 3 deletions
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 f10a915bcc..d4ec285681 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
@@ -9,6 +9,7 @@ import android.os.Bundle;
import android.provider.Settings;
import android.view.Menu;
import android.view.MenuInflater;
+import android.view.View;
import android.widget.Toast;
import androidx.annotation.NonNull;
@@ -339,7 +340,7 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
public void setToolbarTitle(String title)
{
- mToolbarLayout.setTitle(title);
+ mBinding.toolbarSettingsLayout.setTitle(title);
}
@Override
@@ -354,6 +355,14 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
return mMappingAllDevices;
}
+ @Override
+ public int setOldControllerSettingsWarningVisibility(boolean visible)
+ {
+ // We use INVISIBLE instead of GONE to avoid getting a stale height for the return value
+ mBinding.oldControllerSettingsWarning.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
+ return visible ? mBinding.oldControllerSettingsWarning.getHeight() : 0;
+ }
+
private void setInsets()
{
ViewCompat.setOnApplyWindowInsetsListener(mBinding.appbarSettings, (v, windowInsets) ->
@@ -364,6 +373,10 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
mBinding.frameContentSettings.setPadding(insets.left, 0, insets.right, 0);
+ int textPadding = getResources().getDimensionPixelSize(R.dimen.spacing_large);
+ mBinding.oldControllerSettingsWarning.setPadding(textPadding + insets.left, textPadding,
+ textPadding + insets.right, textPadding + insets.bottom);
+
InsetsHelper.applyNavbarWorkaround(insets.bottom, mBinding.workaroundView);
ThemeHelper.setNavigationBarColor(this,
MaterialColors.getColor(mBinding.appbarSettings, R.attr.colorSurface));
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 d71d729af8..203b14ca4b 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
@@ -109,4 +109,13 @@ public interface SettingsActivityView
* not just the device configured for the controller.
*/
boolean isMappingAllDevices();
+
+ /**
+ * Shows or hides a warning telling the user that they're using incompatible controller settings.
+ * The warning is hidden by default.
+ *
+ * @param visible Whether the warning should be visible.
+ * @return The height of the warning view, or 0 if the view is now invisible.
+ */
+ int setOldControllerSettingsWarningVisibility(boolean visible);
}
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 7a3f7b6db8..fcc27c4e5d 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
@@ -38,6 +38,8 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
private SettingsAdapter mAdapter;
+ private int mOldControllerSettingsWarningHeight = 0;
+
private static final Map<MenuTag, Integer> titles = new HashMap<>();
static
@@ -260,13 +262,23 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
return mActivity.isMappingAllDevices();
}
+ @Override
+ public void setOldControllerSettingsWarningVisibility(boolean visible)
+ {
+ mOldControllerSettingsWarningHeight =
+ mActivity.setOldControllerSettingsWarningVisibility(visible);
+
+ // Trigger the insets listener we've registered
+ mBinding.listSettings.requestApplyInsets();
+ }
+
private void setInsets()
{
ViewCompat.setOnApplyWindowInsetsListener(mBinding.listSettings, (v, windowInsets) ->
{
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars());
- v.setPadding(0, 0, 0,
- insets.bottom + getResources().getDimensionPixelSize(R.dimen.spacing_list));
+ int listSpacing = getResources().getDimensionPixelSize(R.dimen.spacing_list);
+ v.setPadding(0, 0, 0, insets.bottom + listSpacing + mOldControllerSettingsWarningHeight);
return 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 8d9a34c252..6cce1361ec 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
@@ -80,6 +80,7 @@ public final class SettingsFragmentPresenter
private Settings mSettings;
private ArrayList<SettingsItem> mSettingsList;
+ private boolean mHasOldControllerSettings = false;
private int mSerialPort1Type;
private int mControllerNumber;
@@ -144,6 +145,7 @@ public final class SettingsFragmentPresenter
else
{
mView.showSettingsList(mSettingsList);
+ mView.setOldControllerSettingsWarningVisibility(mHasOldControllerSettings);
}
}
@@ -1220,6 +1222,8 @@ public final class SettingsFragmentPresenter
sl.add(new RunRunnable(mContext, R.string.input_clear, R.string.input_clear_description,
R.string.input_reset_warning, 0, true, () -> clearControllerSettings(controller)));
+
+ updateOldControllerSettingsWarningVisibility(controller);
}
/**
@@ -1232,6 +1236,8 @@ public final class SettingsFragmentPresenter
private void addControllerMappingSettings(ArrayList<SettingsItem> sl,
EmulatedController controller, Set<Integer> groupTypeFilter)
{
+ updateOldControllerSettingsWarningVisibility(controller);
+
int groupCount = controller.getGroupCount();
for (int i = 0; i < groupCount; i++)
{
@@ -1287,16 +1293,28 @@ public final class SettingsFragmentPresenter
}
}
+ private void updateOldControllerSettingsWarningVisibility(EmulatedController controller)
+ {
+ String defaultDevice = controller.getDefaultDevice();
+
+ mHasOldControllerSettings = defaultDevice.startsWith("Android/") &&
+ defaultDevice.endsWith("/Touchscreen");
+
+ mView.setOldControllerSettingsWarningVisibility(mHasOldControllerSettings);
+ }
+
private void loadDefaultControllerSettings(EmulatedController controller)
{
controller.loadDefaultSettings();
mView.getAdapter().notifyAllSettingsChanged();
+ updateOldControllerSettingsWarningVisibility(controller);
}
private void clearControllerSettings(EmulatedController controller)
{
controller.clearSettings();
mView.getAdapter().notifyAllSettingsChanged();
+ updateOldControllerSettingsWarningVisibility(controller);
}
private static int getLogVerbosityEntries()
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 280657158f..53a3010962 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
@@ -101,4 +101,12 @@ public interface SettingsFragmentView
* not just the device configured for the controller.
*/
boolean isMappingAllDevices();
+
+ /**
+ * Shows or hides a warning telling the user that they're using incompatible controller settings.
+ * The warning is hidden by default.
+ *
+ * @param visible Whether the warning should be visible.
+ */
+ void setOldControllerSettingsWarningVisibility(boolean visible);
}
diff --git a/Source/Android/app/src/main/res/layout/activity_settings.xml b/Source/Android/app/src/main/res/layout/activity_settings.xml
index 4b2d96dfb6..533893df12 100644
--- a/Source/Android/app/src/main/res/layout/activity_settings.xml
+++ b/Source/Android/app/src/main/res/layout/activity_settings.xml
@@ -39,6 +39,18 @@
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
+ <TextView
+ android:id="@+id/old_controller_settings_warning"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom"
+ android:background="?attr/colorErrorContainer"
+ android:text="@string/old_controller_settings"
+ android:textColor="?attr/colorOnErrorContainer"
+ android:visibility="invisible"
+ android:clickable="true"
+ android:focusable="false" />
+
<View
android:id="@+id/workaround_view"
android:layout_width="match_parent"
diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml
index 16252e6b84..f01ebd28f1 100644
--- a/Source/Android/app/src/main/res/values/strings.xml
+++ b/Source/Android/app/src/main/res/values/strings.xml
@@ -35,6 +35,7 @@
<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="old_controller_settings">Your controller settings are from an old version of Dolphin and won\'t work in this version. Press \"Default\" to start over with new settings.</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>