android: frontend: settings: Add performance warnings for relevant settings.

This commit is contained in:
bunnei 2019-07-23 18:31:44 -04:00
parent 161b1fc8e0
commit 5da86171dd
8 changed files with 33 additions and 15 deletions

View File

@ -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);

View File

@ -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

View File

@ -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;
}
}

View File

@ -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.

View File

@ -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

View File

@ -32,7 +32,6 @@ public final class SettingsFragmentPresenter {
public void onCreate(String menuTag, String gameId) {
mGameID = gameId;
mMenuTag = menuTag;
}
public void onViewCreated(ArrayList<HashMap<String, SettingSection>> 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<SettingsItem> 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));

View File

@ -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.

View File

@ -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);
}
}