diff options
| author | Ryan Meredith <rwm@udel.edu> | 2020-09-25 11:50:59 -0400 |
|---|---|---|
| committer | Ryan Meredith <rwm@udel.edu> | 2020-09-25 11:50:59 -0400 |
| commit | c3f34ac3fa1c05416e1d7e2d88876e523dafe265 (patch) | |
| tree | 48441e99e70e3c5ab7e89d99233a2c634b10a5b3 /Source/Android/app/src/main/java | |
| parent | 991eb6ae832a729facb01aa26f8e2c20b815c0e9 (diff) | |
Android: Add "Ignore for this session" to Warning AlertMessages
Diffstat (limited to 'Source/Android/app/src/main/java')
3 files changed, 39 insertions, 4 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java index 0e15304f19..44c1ab4f15 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java @@ -446,7 +446,7 @@ public final class NativeLibrary public static native void SetObscuredPixelsTop(int height); public static boolean displayAlertMsg(final String caption, final String text, - final boolean yesNo) + final boolean yesNo, final boolean isWarning) { Log.error("[NativeLibrary] Alert: " + text); final EmulationActivity emulationActivity = sEmulationActivity.get(); @@ -455,6 +455,10 @@ public final class NativeLibrary { Log.warning("[NativeLibrary] EmulationActivity is null, can't do panic alert."); } + else if (emulationActivity.isIgnoringWarnings() && isWarning) + { + return true; + } else { // AlertMessages while the core is booting will deadlock when WaitUntilDoneBooting is called. @@ -470,8 +474,9 @@ public final class NativeLibrary { sIsShowingAlertMessage = true; - emulationActivity.runOnUiThread(() -> AlertMessage.newInstance(caption, text, yesNo) - .show(emulationActivity.getSupportFragmentManager(), "AlertMessage")); + emulationActivity.runOnUiThread( + () -> AlertMessage.newInstance(caption, text, yesNo, isWarning) + .show(emulationActivity.getSupportFragmentManager(), "AlertMessage")); // Wait for the lock to notify that it is complete. synchronized (sAlertMessageLock) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java index 8497e9fe5a..17b420c2c4 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java @@ -85,12 +85,14 @@ public final class EmulationActivity extends AppCompatActivity private String mSelectedGameId; private int mPlatform; private String[] mPaths; + private boolean mIgnoreWarnings; private static boolean sUserPausedEmulation; public static final String EXTRA_SELECTED_GAMES = "SelectedGames"; public static final String EXTRA_SELECTED_TITLE = "SelectedTitle"; public static final String EXTRA_SELECTED_GAMEID = "SelectedGameId"; public static final String EXTRA_PLATFORM = "Platform"; + public static final String EXTRA_IGNORE_WARNINGS = "IgnoreWarnings"; public static final String EXTRA_USER_PAUSED_EMULATION = "sUserPausedEmulation"; @Retention(SOURCE) @@ -272,6 +274,7 @@ public final class EmulationActivity extends AppCompatActivity mSelectedTitle = gameToEmulate.getStringExtra(EXTRA_SELECTED_TITLE); mSelectedGameId = gameToEmulate.getStringExtra(EXTRA_SELECTED_GAMEID); mPlatform = gameToEmulate.getIntExtra(EXTRA_PLATFORM, 0); + mIgnoreWarnings = gameToEmulate.getBooleanExtra(EXTRA_IGNORE_WARNINGS, false); sUserPausedEmulation = gameToEmulate.getBooleanExtra(EXTRA_USER_PAUSED_EMULATION, false); activityRecreated = false; Toast.makeText(this, R.string.emulation_menu_help, Toast.LENGTH_LONG).show(); @@ -327,6 +330,7 @@ public final class EmulationActivity extends AppCompatActivity outState.putString(EXTRA_SELECTED_TITLE, mSelectedTitle); outState.putString(EXTRA_SELECTED_GAMEID, mSelectedGameId); outState.putInt(EXTRA_PLATFORM, mPlatform); + outState.putBoolean(EXTRA_USER_PAUSED_EMULATION, mIgnoreWarnings); outState.putBoolean(EXTRA_USER_PAUSED_EMULATION, sUserPausedEmulation); super.onSaveInstanceState(outState); } @@ -337,6 +341,7 @@ public final class EmulationActivity extends AppCompatActivity mSelectedTitle = savedInstanceState.getString(EXTRA_SELECTED_TITLE); mSelectedGameId = savedInstanceState.getString(EXTRA_SELECTED_GAMEID); mPlatform = savedInstanceState.getInt(EXTRA_PLATFORM); + mIgnoreWarnings = savedInstanceState.getBoolean(EXTRA_IGNORE_WARNINGS); sUserPausedEmulation = savedInstanceState.getBoolean(EXTRA_USER_PAUSED_EMULATION); } @@ -671,6 +676,16 @@ public final class EmulationActivity extends AppCompatActivity } } + public boolean isIgnoringWarnings() + { + return mIgnoreWarnings; + } + + public void setIgnoreWarnings(boolean value) + { + mIgnoreWarnings = value; + } + public static boolean getHasUserPausedEmulation() { return sUserPausedEmulation; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/AlertMessage.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/AlertMessage.java index 9aa9b8030b..9832b770c6 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/AlertMessage.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/AlertMessage.java @@ -17,8 +17,10 @@ public final class AlertMessage extends DialogFragment private static final String ARG_TITLE = "title"; private static final String ARG_MESSAGE = "message"; private static final String ARG_YES_NO = "yesNo"; + private static final String ARG_IS_WARNING = "isWarning"; - public static AlertMessage newInstance(String title, String message, boolean yesNo) + public static AlertMessage newInstance(String title, String message, boolean yesNo, + boolean isWarning) { AlertMessage fragment = new AlertMessage(); @@ -26,6 +28,7 @@ public final class AlertMessage extends DialogFragment args.putString(ARG_TITLE, title); args.putString(ARG_MESSAGE, message); args.putBoolean(ARG_YES_NO, yesNo); + args.putBoolean(ARG_IS_WARNING, isWarning); fragment.setArguments(args); return fragment; @@ -39,6 +42,7 @@ public final class AlertMessage extends DialogFragment String title = requireArguments().getString(ARG_TITLE); String message = requireArguments().getString(ARG_MESSAGE); boolean yesNo = requireArguments().getBoolean(ARG_YES_NO); + boolean isWarning = requireArguments().getBoolean(ARG_IS_WARNING); setCancelable(false); AlertDialog.Builder builder = new AlertDialog.Builder(emulationActivity, @@ -71,6 +75,17 @@ public final class AlertMessage extends DialogFragment NativeLibrary.NotifyAlertMessageLock(); }); } + + if (isWarning) + { + builder.setNeutralButton(R.string.ignore_warning_alert_messages, (dialog, which) -> + { + emulationActivity.setIgnoreWarnings(true); + dialog.dismiss(); + NativeLibrary.NotifyAlertMessageLock(); + }); + } + return builder.create(); } |
