android: frontend: settings: Add performance warnings for relevant settings.
This commit is contained in:
parent
56fb1e0549
commit
a60c447d31
@ -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.IntSetting;
|
||||||
import org.citra.citra_android.model.settings.Setting;
|
import org.citra.citra_android.model.settings.Setting;
|
||||||
|
import org.citra.citra_android.ui.settings.SettingsFragmentView;
|
||||||
|
|
||||||
public final class CheckBoxSetting extends SettingsItem {
|
public final class CheckBoxSetting extends SettingsItem {
|
||||||
private boolean mDefaultValue;
|
private boolean mDefaultValue;
|
||||||
|
private boolean mShowPerformanceWarning;
|
||||||
|
private SettingsFragmentView mView;
|
||||||
|
|
||||||
public CheckBoxSetting(String key, String section, int file, int titleId, int descriptionId,
|
public CheckBoxSetting(String key, String section, int file, int titleId, int descriptionId,
|
||||||
boolean defaultValue, Setting setting) {
|
boolean defaultValue, Setting setting) {
|
||||||
super(key, section, file, setting, titleId, descriptionId);
|
super(key, section, file, setting, titleId, descriptionId);
|
||||||
mDefaultValue = defaultValue;
|
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() {
|
public boolean isChecked() {
|
||||||
@ -29,6 +41,11 @@ public final class CheckBoxSetting extends SettingsItem {
|
|||||||
* @return null if overwritten successfully; otherwise, a newly created BooleanSetting.
|
* @return null if overwritten successfully; otherwise, a newly created BooleanSetting.
|
||||||
*/
|
*/
|
||||||
public IntSetting setChecked(boolean checked) {
|
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) {
|
if (getSetting() == null) {
|
||||||
IntSetting setting = new IntSetting(getKey(), getSection(), getFile(), checked ? 1 : 0);
|
IntSetting setting = new IntSetting(getKey(), getSection(), getFile(), checked ? 1 : 0);
|
||||||
setSetting(setting);
|
setSetting(setting);
|
||||||
|
@ -197,8 +197,8 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showToastMessage(String message) {
|
public void showToastMessage(String message, boolean is_long) {
|
||||||
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, message, is_long ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -114,11 +114,11 @@ public final class SettingsActivityPresenter {
|
|||||||
if (menuTag.equals("Dolphin")) {
|
if (menuTag.equals("Dolphin")) {
|
||||||
SettingsFile.saveFile("../GameSettings/" + gameId, mSettings.get(SettingsFile.SETTINGS_DOLPHIN), mView);
|
SettingsFile.saveFile("../GameSettings/" + gameId, mSettings.get(SettingsFile.SETTINGS_DOLPHIN), mView);
|
||||||
}
|
}
|
||||||
mView.showToastMessage("Saved settings for " + gameId);
|
mView.showToastMessage("Saved settings for " + gameId, false);
|
||||||
} else {
|
} else {
|
||||||
Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI...");
|
Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI...");
|
||||||
SettingsFile.saveFile(SettingsFile.FILE_NAME_CONFIG, mSettings.get(SettingsFile.SETTINGS_DOLPHIN), mView);
|
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;
|
break;
|
||||||
|
|
||||||
case 2:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,8 +55,9 @@ public interface SettingsActivityView {
|
|||||||
* Display a popup text message on screen.
|
* Display a popup text message on screen.
|
||||||
*
|
*
|
||||||
* @param message The contents of the onscreen message.
|
* @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.
|
* Show the previous fragment.
|
||||||
|
@ -136,8 +136,8 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showToastMessage(String message) {
|
public void showToastMessage(String message, boolean is_long) {
|
||||||
mActivity.showToastMessage(message);
|
mActivity.showToastMessage(message, is_long);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -32,7 +32,6 @@ public final class SettingsFragmentPresenter {
|
|||||||
public void onCreate(String menuTag, String gameId) {
|
public void onCreate(String menuTag, String gameId) {
|
||||||
mGameID = gameId;
|
mGameID = gameId;
|
||||||
mMenuTag = menuTag;
|
mMenuTag = menuTag;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onViewCreated(ArrayList<HashMap<String, SettingSection>> settings) {
|
public void onViewCreated(ArrayList<HashMap<String, SettingSection>> settings) {
|
||||||
@ -92,7 +91,7 @@ public final class SettingsFragmentPresenter {
|
|||||||
addAudioSettings(sl);
|
addAudioSettings(sl);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
mView.showToastMessage("Unimplemented menu");
|
mView.showToastMessage("Unimplemented menu", false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,7 +119,7 @@ public final class SettingsFragmentPresenter {
|
|||||||
mView.passSettingsToActivity(mSettings);
|
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) {
|
private void addSystemSettings(ArrayList<SettingsItem> sl) {
|
||||||
@ -172,8 +171,8 @@ public final class SettingsFragmentPresenter {
|
|||||||
mView.passSettingsToActivity(mSettings);
|
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_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));
|
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_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 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));
|
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.
|
* Tell the Fragment to tell the containing activity to display a toast message.
|
||||||
*
|
*
|
||||||
* @param message Text to be shown in the Toast
|
* @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.
|
* Have the fragment add a setting to the HashMap.
|
||||||
|
@ -174,7 +174,7 @@ public final class SettingsFile {
|
|||||||
writer.store();
|
writer.store();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Log.error("[SettingsFile] File not found: " + fileName + ".ini: " + e.getMessage());
|
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