android: frontend: settings: Add performance warnings for relevant settings.
This commit is contained in:
parent
161b1fc8e0
commit
5da86171dd
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
|
@ -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.
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user