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