From a60c447d31d324ca0bc6ea6fe1c11a2dfd80d99d Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 23 Jul 2019 18:31:44 -0400 Subject: [PATCH] android: frontend: settings: Add performance warnings for relevant settings. --- .../model/settings/view/CheckBoxSetting.java | 17 +++++++++++++++++ .../ui/settings/SettingsActivity.java | 4 ++-- .../ui/settings/SettingsActivityPresenter.java | 6 +++--- .../ui/settings/SettingsActivityView.java | 3 ++- .../ui/settings/SettingsFragment.java | 4 ++-- .../ui/settings/SettingsFragmentPresenter.java | 9 ++++----- .../ui/settings/SettingsFragmentView.java | 3 ++- .../citra/citra_android/utils/SettingsFile.java | 2 +- 8 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/android/app/src/main/java/org/citra/citra_android/model/settings/view/CheckBoxSetting.java b/src/android/app/src/main/java/org/citra/citra_android/model/settings/view/CheckBoxSetting.java index 6bb7d9302..1f9072581 100644 --- a/src/android/app/src/main/java/org/citra/citra_android/model/settings/view/CheckBoxSetting.java +++ b/src/android/app/src/main/java/org/citra/citra_android/model/settings/view/CheckBoxSetting.java @@ -2,14 +2,26 @@ package org.citra.citra_android.model.settings.view; import org.citra.citra_android.model.settings.IntSetting; import org.citra.citra_android.model.settings.Setting; +import org.citra.citra_android.ui.settings.SettingsFragmentView; public final class CheckBoxSetting extends SettingsItem { private boolean mDefaultValue; + private boolean mShowPerformanceWarning; + private SettingsFragmentView mView; public CheckBoxSetting(String key, String section, int file, int titleId, int descriptionId, boolean defaultValue, Setting setting) { super(key, section, file, setting, titleId, descriptionId); mDefaultValue = defaultValue; + mShowPerformanceWarning = false; + } + + public CheckBoxSetting(String key, String section, int file, int titleId, int descriptionId, + boolean defaultValue, Setting setting, boolean show_performance_warning, SettingsFragmentView view) { + super(key, section, file, setting, titleId, descriptionId); + mDefaultValue = defaultValue; + mView = view; + mShowPerformanceWarning = show_performance_warning; } public boolean isChecked() { @@ -29,6 +41,11 @@ public final class CheckBoxSetting extends SettingsItem { * @return null if overwritten successfully; otherwise, a newly created BooleanSetting. */ public IntSetting setChecked(boolean checked) { + // Show a performance warning if the setting has been disabled + if (mShowPerformanceWarning && !checked) { + mView.showToastMessage("Turning off this setting will significantly reduce emulation performance! For the best experience, it is recommended that you leave this setting enabled.", true); + } + if (getSetting() == null) { IntSetting setting = new IntSetting(getKey(), getSection(), getFile(), checked ? 1 : 0); setSetting(setting); diff --git a/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsActivity.java b/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsActivity.java index 8fe4a83f7..4cdeca736 100644 --- a/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsActivity.java +++ b/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsActivity.java @@ -197,8 +197,8 @@ public final class SettingsActivity extends AppCompatActivity implements Setting } @Override - public void showToastMessage(String message) { - Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + public void showToastMessage(String message, boolean is_long) { + Toast.makeText(this, message, is_long ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT).show(); } @Override diff --git a/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsActivityPresenter.java b/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsActivityPresenter.java index 840dd361b..7ab0eb889 100644 --- a/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsActivityPresenter.java +++ b/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsActivityPresenter.java @@ -114,11 +114,11 @@ public final class SettingsActivityPresenter { if (menuTag.equals("Dolphin")) { SettingsFile.saveFile("../GameSettings/" + gameId, mSettings.get(SettingsFile.SETTINGS_DOLPHIN), mView); } - mView.showToastMessage("Saved settings for " + gameId); + mView.showToastMessage("Saved settings for " + gameId, false); } else { Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI..."); SettingsFile.saveFile(SettingsFile.FILE_NAME_CONFIG, mSettings.get(SettingsFile.SETTINGS_DOLPHIN), mView); - mView.showToastMessage("Saved settings to INI files"); + mView.showToastMessage("Saved settings to INI files", false); } } } @@ -168,7 +168,7 @@ public final class SettingsActivityPresenter { break; case 2: - mView.showToastMessage("Please make sure Continuous Scanning is enabled in Core Settings."); + mView.showToastMessage("Please make sure Continuous Scanning is enabled in Core Settings.", false); break; } } diff --git a/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsActivityView.java b/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsActivityView.java index f0cc650ea..19daba36a 100644 --- a/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsActivityView.java +++ b/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsActivityView.java @@ -55,8 +55,9 @@ public interface SettingsActivityView { * Display a popup text message on screen. * * @param message The contents of the onscreen message. + * @param is_long Whether this should be a long Toast or short one. */ - void showToastMessage(String message); + void showToastMessage(String message, boolean is_long); /** * Show the previous fragment. diff --git a/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsFragment.java b/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsFragment.java index 793d8e6d8..3dd52490a 100644 --- a/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsFragment.java +++ b/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsFragment.java @@ -136,8 +136,8 @@ public final class SettingsFragment extends Fragment implements SettingsFragment } @Override - public void showToastMessage(String message) { - mActivity.showToastMessage(message); + public void showToastMessage(String message, boolean is_long) { + mActivity.showToastMessage(message, is_long); } @Override diff --git a/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsFragmentPresenter.java b/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsFragmentPresenter.java index a22233503..47fe619c7 100644 --- a/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsFragmentPresenter.java +++ b/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsFragmentPresenter.java @@ -32,7 +32,6 @@ public final class SettingsFragmentPresenter { public void onCreate(String menuTag, String gameId) { mGameID = gameId; mMenuTag = menuTag; - } public void onViewCreated(ArrayList> settings) { @@ -92,7 +91,7 @@ public final class SettingsFragmentPresenter { addAudioSettings(sl); break; default: - mView.showToastMessage("Unimplemented menu"); + mView.showToastMessage("Unimplemented menu", false); return; } @@ -120,7 +119,7 @@ public final class SettingsFragmentPresenter { mView.passSettingsToActivity(mSettings); } - sl.add(new CheckBoxSetting(SettingsFile.KEY_CPU_JIT, SettingsFile.SECTION_CORE, SettingsFile.SETTINGS_DOLPHIN, R.string.cpu_jit, 0, true, useCpuJit)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_CPU_JIT, SettingsFile.SECTION_CORE, SettingsFile.SETTINGS_DOLPHIN, R.string.cpu_jit, 0, true, useCpuJit, true, mView)); } private void addSystemSettings(ArrayList sl) { @@ -172,8 +171,8 @@ public final class SettingsFragmentPresenter { mView.passSettingsToActivity(mSettings); } - sl.add(new CheckBoxSetting(SettingsFile.KEY_HW_RENDERER, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.hw_renderer, 0, true, hardwareRenderer)); - sl.add(new CheckBoxSetting(SettingsFile.KEY_HW_SHADER, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.hw_shaders, R.string.hw_shaders_descrip, true, hardwareShader)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_HW_RENDERER, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.hw_renderer, 0, true, hardwareRenderer, true, mView)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_HW_SHADER, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.hw_shaders, R.string.hw_shaders_descrip, true, hardwareShader, true, mView)); sl.add(new CheckBoxSetting(SettingsFile.KEY_SHADERS_ACCURATE_MUL, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.shaders_accurate_mul, 0, false, shadersAccurateMul)); sl.add(new CheckBoxSetting(SettingsFile.KEY_SHADERS_ACCURATE_GS, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.shaders_accurate_gs, 0, false, shadersAccurateGs)); sl.add(new SliderSetting(SettingsFile.KEY_RESOLUTION_FACTOR, SettingsFile.SECTION_RENDERER, SettingsFile.SETTINGS_DOLPHIN, R.string.internal_resolution, R.string.internal_resolution_descrip, 10, "x", 1, resolutionFactor)); diff --git a/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsFragmentView.java b/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsFragmentView.java index c240cc59f..d47322766 100644 --- a/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsFragmentView.java +++ b/src/android/app/src/main/java/org/citra/citra_android/ui/settings/SettingsFragmentView.java @@ -61,8 +61,9 @@ public interface SettingsFragmentView { * Tell the Fragment to tell the containing activity to display a toast message. * * @param message Text to be shown in the Toast + * @param is_long Whether this should be a long Toast or short one. */ - void showToastMessage(String message); + void showToastMessage(String message, boolean is_long); /** * Have the fragment add a setting to the HashMap. diff --git a/src/android/app/src/main/java/org/citra/citra_android/utils/SettingsFile.java b/src/android/app/src/main/java/org/citra/citra_android/utils/SettingsFile.java index 4fd442051..ad2530b39 100644 --- a/src/android/app/src/main/java/org/citra/citra_android/utils/SettingsFile.java +++ b/src/android/app/src/main/java/org/citra/citra_android/utils/SettingsFile.java @@ -174,7 +174,7 @@ public final class SettingsFile { writer.store(); } catch (IOException e) { Log.error("[SettingsFile] File not found: " + fileName + ".ini: " + e.getMessage()); - view.showToastMessage("Error saving " + fileName + ".ini: " + e.getMessage()); + view.showToastMessage("Error saving " + fileName + ".ini: " + e.getMessage(), false); } }