1
0
Fork 0
forked from suyu/suyu

android: Convert CheckBoxSetting to Kotlin

This commit is contained in:
Charles Lombardo 2023-03-07 15:38:08 -05:00 committed by bunnei
parent 0d044e9f2f
commit 4d9cfc6798
2 changed files with 91 additions and 80 deletions
src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view

View file

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

View file

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