From 4d9cfc67981fecf1dc56cde71026f6ee66969cd3 Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Tue, 7 Mar 2023 15:38:08 -0500 Subject: [PATCH] android: Convert CheckBoxSetting to Kotlin --- .../settings/model/view/CheckBoxSetting.java | 80 ---------------- .../settings/model/view/CheckBoxSetting.kt | 91 +++++++++++++++++++ 2 files changed, 91 insertions(+), 80 deletions(-) delete mode 100644 src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.java create mode 100644 src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.kt diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.java deleted file mode 100644 index c5c4e14f3..000000000 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.java +++ /dev/null @@ -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; - } -} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.kt new file mode 100644 index 000000000..239dc8e2f --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.kt @@ -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 + } + } +}