committed by
bunnei
2 changed files with 91 additions and 80 deletions
-
80src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.java
-
91src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.kt
@ -1,80 +0,0 @@ |
|||||
package org.yuzu.yuzu_emu.features.settings.model.view; |
|
||||
|
|
||||
import org.yuzu.yuzu_emu.YuzuApplication; |
|
||||
import org.yuzu.yuzu_emu.R; |
|
||||
import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting; |
|
||||
import org.yuzu.yuzu_emu.features.settings.model.IntSetting; |
|
||||
import org.yuzu.yuzu_emu.features.settings.model.Setting; |
|
||||
import org.yuzu.yuzu_emu.features.settings.ui.SettingsFragmentView; |
|
||||
|
|
||||
public final class CheckBoxSetting extends SettingsItem { |
|
||||
private boolean mDefaultValue; |
|
||||
private boolean mShowPerformanceWarning; |
|
||||
private SettingsFragmentView mView; |
|
||||
|
|
||||
public CheckBoxSetting(String key, String section, int titleId, int descriptionId, |
|
||||
boolean defaultValue, Setting setting) { |
|
||||
super(key, section, setting, titleId, descriptionId); |
|
||||
mDefaultValue = defaultValue; |
|
||||
mShowPerformanceWarning = false; |
|
||||
} |
|
||||
|
|
||||
public CheckBoxSetting(String key, String section, int titleId, int descriptionId, |
|
||||
boolean defaultValue, Setting setting, boolean show_performance_warning, SettingsFragmentView view) { |
|
||||
super(key, section, setting, titleId, descriptionId); |
|
||||
mDefaultValue = defaultValue; |
|
||||
mView = view; |
|
||||
mShowPerformanceWarning = show_performance_warning; |
|
||||
} |
|
||||
|
|
||||
public boolean isChecked() { |
|
||||
if (getSetting() == null) { |
|
||||
return mDefaultValue; |
|
||||
} |
|
||||
|
|
||||
// Try integer setting |
|
||||
try { |
|
||||
IntSetting setting = (IntSetting) getSetting(); |
|
||||
return setting.getValue() == 1; |
|
||||
} catch (ClassCastException exception) { |
|
||||
} |
|
||||
|
|
||||
// Try boolean setting |
|
||||
try { |
|
||||
BooleanSetting setting = (BooleanSetting) getSetting(); |
|
||||
return setting.getValue() == true; |
|
||||
} catch (ClassCastException exception) { |
|
||||
} |
|
||||
|
|
||||
return mDefaultValue; |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* Write a value to the backing boolean. If that boolean was previously null, |
|
||||
* initializes a new one and returns it, so it can be added to the Hashmap. |
|
||||
* |
|
||||
* @param checked Pretty self explanatory. |
|
||||
* @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(YuzuApplication.getAppContext().getString(R.string.performance_warning), true); |
|
||||
} |
|
||||
|
|
||||
if (getSetting() == null) { |
|
||||
IntSetting setting = new IntSetting(getKey(), getSection(), checked ? 1 : 0); |
|
||||
setSetting(setting); |
|
||||
return setting; |
|
||||
} else { |
|
||||
IntSetting setting = (IntSetting) getSetting(); |
|
||||
setting.setValue(checked ? 1 : 0); |
|
||||
return null; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public int getType() { |
|
||||
return TYPE_CHECKBOX; |
|
||||
} |
|
||||
} |
|
||||
@ -0,0 +1,91 @@ |
|||||
|
package org.yuzu.yuzu_emu.features.settings.model.view |
||||
|
|
||||
|
import org.yuzu.yuzu_emu.R |
||||
|
import org.yuzu.yuzu_emu.YuzuApplication |
||||
|
import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting |
||||
|
import org.yuzu.yuzu_emu.features.settings.model.IntSetting |
||||
|
import org.yuzu.yuzu_emu.features.settings.model.Setting |
||||
|
import org.yuzu.yuzu_emu.features.settings.ui.SettingsFragmentView |
||||
|
|
||||
|
class CheckBoxSetting : SettingsItem { |
||||
|
override val type = TYPE_CHECKBOX |
||||
|
|
||||
|
private var defaultValue: Boolean |
||||
|
private var showPerformanceWarning: Boolean |
||||
|
private var fragmentView: SettingsFragmentView? = null |
||||
|
|
||||
|
constructor( |
||||
|
key: String, |
||||
|
section: String, |
||||
|
setting: Setting?, |
||||
|
titleId: Int, |
||||
|
descriptionId: Int, |
||||
|
defaultValue: Boolean |
||||
|
) : super(key, section, setting, titleId, descriptionId) { |
||||
|
this.defaultValue = defaultValue |
||||
|
showPerformanceWarning = false |
||||
|
} |
||||
|
|
||||
|
constructor( |
||||
|
key: String, |
||||
|
section: String, |
||||
|
titleId: Int, |
||||
|
descriptionId: Int, |
||||
|
defaultValue: Boolean, |
||||
|
setting: Setting, |
||||
|
show_performance_warning: Boolean, |
||||
|
view: SettingsFragmentView |
||||
|
) : super(key, section, setting, titleId, descriptionId) { |
||||
|
this.defaultValue = defaultValue |
||||
|
fragmentView = view |
||||
|
showPerformanceWarning = show_performance_warning |
||||
|
} |
||||
|
|
||||
|
val isChecked: Boolean |
||||
|
get() { |
||||
|
if (setting == null) { |
||||
|
return defaultValue |
||||
|
} |
||||
|
|
||||
|
// Try integer setting |
||||
|
try { |
||||
|
val setting = setting as IntSetting |
||||
|
return setting.value == 1 |
||||
|
} catch (_: ClassCastException) { |
||||
|
} |
||||
|
|
||||
|
// Try boolean setting |
||||
|
try { |
||||
|
val setting = setting as BooleanSetting |
||||
|
return setting.value |
||||
|
} catch (_: ClassCastException) { |
||||
|
} |
||||
|
return defaultValue |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Write a value to the backing boolean. If that boolean was previously null, |
||||
|
* initializes a new one and returns it, so it can be added to the Hashmap. |
||||
|
* |
||||
|
* @param checked Pretty self explanatory. |
||||
|
* @return null if overwritten successfully; otherwise, a newly created BooleanSetting. |
||||
|
*/ |
||||
|
fun setChecked(checked: Boolean): IntSetting? { |
||||
|
// Show a performance warning if the setting has been disabled |
||||
|
if (showPerformanceWarning && !checked) { |
||||
|
fragmentView!!.showToastMessage( |
||||
|
YuzuApplication.appContext.getString(R.string.performance_warning), true |
||||
|
) |
||||
|
} |
||||
|
|
||||
|
return if (setting == null) { |
||||
|
val newSetting = IntSetting(key!!, section!!, if (checked) 1 else 0) |
||||
|
setting = newSetting |
||||
|
newSetting |
||||
|
} else { |
||||
|
val newSetting = setting as IntSetting |
||||
|
newSetting.value = if (checked) 1 else 0 |
||||
|
null |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue