diff options
| author | 2023-08-21 21:48:21 -0400 | |
|---|---|---|
| committer | 2023-08-29 19:40:18 -0400 | |
| commit | f5e6b12c74243736a1dc29d297dd2eb1d0c3a4b2 (patch) | |
| tree | 76ee1b16e27c98cfb41645db1111ec41947bd181 /src | |
| parent | android: Expose interface for getting settings from native code (diff) | |
| download | yuzu-f5e6b12c74243736a1dc29d297dd2eb1d0c3a4b2.tar.gz yuzu-f5e6b12c74243736a1dc29d297dd2eb1d0c3a4b2.tar.xz yuzu-f5e6b12c74243736a1dc29d297dd2eb1d0c3a4b2.zip | |
android: Trim settings enums and items
Take advantage of the new settings interface to reduce the amount of code we need for each setting item. Additionally make all settings items non-null to improve brevity.
Diffstat (limited to 'src')
16 files changed, 133 insertions, 321 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt index 7afed95ad..724a2ecb8 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt | |||
| @@ -15,5 +15,5 @@ interface AbstractSetting { | |||
| 15 | val isRuntimeModifiable: Boolean | 15 | val isRuntimeModifiable: Boolean |
| 16 | get() = NativeConfig.getIsRuntimeModifiable(key!!) | 16 | get() = NativeConfig.getIsRuntimeModifiable(key!!) |
| 17 | 17 | ||
| 18 | fun reset() = run { } | 18 | fun reset() |
| 19 | } | 19 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/DateTimeSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/DateTimeSetting.kt index 7c858916e..8bc164197 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/DateTimeSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/DateTimeSetting.kt | |||
| @@ -4,28 +4,15 @@ | |||
| 4 | package org.yuzu.yuzu_emu.features.settings.model.view | 4 | package org.yuzu.yuzu_emu.features.settings.model.view |
| 5 | 5 | ||
| 6 | import org.yuzu.yuzu_emu.features.settings.model.AbstractLongSetting | 6 | import org.yuzu.yuzu_emu.features.settings.model.AbstractLongSetting |
| 7 | import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting | ||
| 8 | 7 | ||
| 9 | class DateTimeSetting( | 8 | class DateTimeSetting( |
| 10 | setting: AbstractSetting?, | 9 | private val longSetting: AbstractLongSetting, |
| 11 | titleId: Int, | 10 | titleId: Int, |
| 12 | descriptionId: Int, | 11 | descriptionId: Int |
| 13 | val key: String? = null, | 12 | ) : SettingsItem(longSetting, titleId, descriptionId) { |
| 14 | private val defaultValue: Long? = null | ||
| 15 | ) : SettingsItem(setting, titleId, descriptionId) { | ||
| 16 | override val type = TYPE_DATETIME_SETTING | 13 | override val type = TYPE_DATETIME_SETTING |
| 17 | 14 | ||
| 18 | val value: Long | 15 | var value: Long |
| 19 | get() = if (setting != null) { | 16 | get() = longSetting.long |
| 20 | val setting = setting as AbstractLongSetting | 17 | set(value) = (setting as AbstractLongSetting).setLong(value) |
| 21 | setting.long | ||
| 22 | } else { | ||
| 23 | defaultValue!! | ||
| 24 | } | ||
| 25 | |||
| 26 | fun setSelectedValue(datetime: Long): AbstractLongSetting { | ||
| 27 | val longSetting = setting as AbstractLongSetting | ||
| 28 | longSetting.setLong(datetime) | ||
| 29 | return longSetting | ||
| 30 | } | ||
| 31 | } | 18 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/HeaderSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/HeaderSetting.kt index a67001311..d31ce1c31 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/HeaderSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/HeaderSetting.kt | |||
| @@ -5,6 +5,6 @@ package org.yuzu.yuzu_emu.features.settings.model.view | |||
| 5 | 5 | ||
| 6 | class HeaderSetting( | 6 | class HeaderSetting( |
| 7 | titleId: Int | 7 | titleId: Int |
| 8 | ) : SettingsItem(null, titleId, 0) { | 8 | ) : SettingsItem(emptySetting, titleId, 0) { |
| 9 | override val type = TYPE_HEADER | 9 | override val type = TYPE_HEADER |
| 10 | } | 10 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/RunnableSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/RunnableSetting.kt index caaab50d8..522cc49df 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/RunnableSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/RunnableSetting.kt | |||
| @@ -8,6 +8,6 @@ class RunnableSetting( | |||
| 8 | descriptionId: Int, | 8 | descriptionId: Int, |
| 9 | val isRuntimeRunnable: Boolean, | 9 | val isRuntimeRunnable: Boolean, |
| 10 | val runnable: () -> Unit | 10 | val runnable: () -> Unit |
| 11 | ) : SettingsItem(null, titleId, descriptionId) { | 11 | ) : SettingsItem(emptySetting, titleId, descriptionId) { |
| 12 | override val type = TYPE_RUNNABLE | 12 | override val type = TYPE_RUNNABLE |
| 13 | } | 13 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index a6cba977c..3bdcc5bca 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt | |||
| @@ -5,6 +5,7 @@ package org.yuzu.yuzu_emu.features.settings.model.view | |||
| 5 | 5 | ||
| 6 | import org.yuzu.yuzu_emu.NativeLibrary | 6 | import org.yuzu.yuzu_emu.NativeLibrary |
| 7 | import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting | 7 | import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting |
| 8 | import org.yuzu.yuzu_emu.features.settings.model.Settings | ||
| 8 | 9 | ||
| 9 | /** | 10 | /** |
| 10 | * ViewModel abstraction for an Item in the RecyclerView powering SettingsFragments. | 11 | * ViewModel abstraction for an Item in the RecyclerView powering SettingsFragments. |
| @@ -14,7 +15,7 @@ import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting | |||
| 14 | * file.) | 15 | * file.) |
| 15 | */ | 16 | */ |
| 16 | abstract class SettingsItem( | 17 | abstract class SettingsItem( |
| 17 | var setting: AbstractSetting?, | 18 | val setting: AbstractSetting, |
| 18 | val nameId: Int, | 19 | val nameId: Int, |
| 19 | val descriptionId: Int | 20 | val descriptionId: Int |
| 20 | ) { | 21 | ) { |
| @@ -23,7 +24,7 @@ abstract class SettingsItem( | |||
| 23 | val isEditable: Boolean | 24 | val isEditable: Boolean |
| 24 | get() { | 25 | get() { |
| 25 | if (!NativeLibrary.isRunning()) return true | 26 | if (!NativeLibrary.isRunning()) return true |
| 26 | return setting?.isRuntimeModifiable ?: false | 27 | return setting.isRuntimeModifiable |
| 27 | } | 28 | } |
| 28 | 29 | ||
| 29 | companion object { | 30 | companion object { |
| @@ -35,5 +36,12 @@ abstract class SettingsItem( | |||
| 35 | const val TYPE_STRING_SINGLE_CHOICE = 5 | 36 | const val TYPE_STRING_SINGLE_CHOICE = 5 |
| 36 | const val TYPE_DATETIME_SETTING = 6 | 37 | const val TYPE_DATETIME_SETTING = 6 |
| 37 | const val TYPE_RUNNABLE = 7 | 38 | const val TYPE_RUNNABLE = 7 |
| 39 | |||
| 40 | val emptySetting = object : AbstractSetting { | ||
| 41 | override val key: String = "" | ||
| 42 | override val category: Settings.Category = Settings.Category.Ui | ||
| 43 | override val defaultValue: Any = false | ||
| 44 | override fun reset() {} | ||
| 45 | } | ||
| 38 | } | 46 | } |
| 39 | } | 47 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt index b6a8c4612..705527a73 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt | |||
| @@ -4,36 +4,27 @@ | |||
| 4 | package org.yuzu.yuzu_emu.features.settings.model.view | 4 | package org.yuzu.yuzu_emu.features.settings.model.view |
| 5 | 5 | ||
| 6 | import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting | 6 | import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting |
| 7 | import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting | ||
| 7 | 8 | ||
| 8 | class SingleChoiceSetting( | 9 | class SingleChoiceSetting( |
| 9 | setting: AbstractIntSetting?, | 10 | setting: AbstractSetting, |
| 10 | titleId: Int, | 11 | titleId: Int, |
| 11 | descriptionId: Int, | 12 | descriptionId: Int, |
| 12 | val choicesId: Int, | 13 | val choicesId: Int, |
| 13 | val valuesId: Int, | 14 | val valuesId: Int |
| 14 | val key: String? = null, | ||
| 15 | val defaultValue: Int? = null | ||
| 16 | ) : SettingsItem(setting, titleId, descriptionId) { | 15 | ) : SettingsItem(setting, titleId, descriptionId) { |
| 17 | override val type = TYPE_SINGLE_CHOICE | 16 | override val type = TYPE_SINGLE_CHOICE |
| 18 | 17 | ||
| 19 | val selectedValue: Int | 18 | var selectedValue: Int |
| 20 | get() = if (setting != null) { | 19 | get() { |
| 21 | val setting = setting as AbstractIntSetting | 20 | return when (setting) { |
| 22 | setting.int | 21 | is AbstractIntSetting -> setting.int |
| 23 | } else { | 22 | else -> -1 |
| 24 | defaultValue!! | 23 | } |
| 24 | } | ||
| 25 | set(value) { | ||
| 26 | when (setting) { | ||
| 27 | is AbstractIntSetting -> setting.setInt(value) | ||
| 28 | } | ||
| 25 | } | 29 | } |
| 26 | |||
| 27 | /** | ||
| 28 | * Write a value to the backing int. If that int was previously null, | ||
| 29 | * initializes a new one and returns it, so it can be added to the Hashmap. | ||
| 30 | * | ||
| 31 | * @param selection New value of the int. | ||
| 32 | * @return the existing setting with the new value applied. | ||
| 33 | */ | ||
| 34 | fun setSelectedValue(selection: Int): AbstractIntSetting { | ||
| 35 | val intSetting = setting as AbstractIntSetting | ||
| 36 | intSetting.setInt(selection) | ||
| 37 | return intSetting | ||
| 38 | } | ||
| 39 | } | 30 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.kt index e71a29e35..c3b5df02c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.kt | |||
| @@ -4,75 +4,38 @@ | |||
| 4 | package org.yuzu.yuzu_emu.features.settings.model.view | 4 | package org.yuzu.yuzu_emu.features.settings.model.view |
| 5 | 5 | ||
| 6 | import org.yuzu.yuzu_emu.features.settings.model.AbstractByteSetting | 6 | import org.yuzu.yuzu_emu.features.settings.model.AbstractByteSetting |
| 7 | import kotlin.math.roundToInt | ||
| 8 | import org.yuzu.yuzu_emu.features.settings.model.AbstractFloatSetting | 7 | import org.yuzu.yuzu_emu.features.settings.model.AbstractFloatSetting |
| 9 | import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting | 8 | import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting |
| 10 | import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting | 9 | import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting |
| 11 | import org.yuzu.yuzu_emu.features.settings.model.AbstractShortSetting | 10 | import org.yuzu.yuzu_emu.features.settings.model.AbstractShortSetting |
| 12 | import org.yuzu.yuzu_emu.utils.Log | 11 | import kotlin.math.roundToInt |
| 13 | 12 | ||
| 14 | class SliderSetting( | 13 | class SliderSetting( |
| 15 | setting: AbstractSetting?, | 14 | setting: AbstractSetting, |
| 16 | titleId: Int, | 15 | titleId: Int, |
| 17 | descriptionId: Int, | 16 | descriptionId: Int, |
| 18 | val min: Int, | 17 | val min: Int, |
| 19 | val max: Int, | 18 | val max: Int, |
| 20 | val units: String, | 19 | val units: String |
| 21 | val key: String? = null, | ||
| 22 | val defaultValue: Any? = null | ||
| 23 | ) : SettingsItem(setting, titleId, descriptionId) { | 20 | ) : SettingsItem(setting, titleId, descriptionId) { |
| 24 | override val type = TYPE_SLIDER | 21 | override val type = TYPE_SLIDER |
| 25 | 22 | ||
| 26 | val selectedValue: Any | 23 | var selectedValue: Int |
| 27 | get() { | 24 | get() { |
| 28 | val setting = setting ?: return defaultValue!! | ||
| 29 | return when (setting) { | 25 | return when (setting) { |
| 30 | is AbstractByteSetting -> setting.byte.toInt() | 26 | is AbstractByteSetting -> setting.byte.toInt() |
| 31 | is AbstractShortSetting -> setting.short.toInt() | 27 | is AbstractShortSetting -> setting.short.toInt() |
| 32 | is AbstractIntSetting -> setting.int | 28 | is AbstractIntSetting -> setting.int |
| 33 | is AbstractFloatSetting -> setting.float.roundToInt() | 29 | is AbstractFloatSetting -> setting.float.roundToInt() |
| 34 | else -> { | 30 | else -> -1 |
| 35 | Log.error("[SliderSetting] Error casting setting type.") | 31 | } |
| 36 | -1 | 32 | } |
| 37 | } | 33 | set(value) { |
| 34 | when (setting) { | ||
| 35 | is AbstractByteSetting -> setting.setByte(value.toByte()) | ||
| 36 | is AbstractShortSetting -> setting.setShort(value.toShort()) | ||
| 37 | is AbstractIntSetting -> setting.setInt(value) | ||
| 38 | is AbstractFloatSetting -> setting.setFloat(value.toFloat()) | ||
| 38 | } | 39 | } |
| 39 | } | 40 | } |
| 40 | |||
| 41 | /** | ||
| 42 | * Write a value to the backing int. If that int was previously null, | ||
| 43 | * initializes a new one and returns it, so it can be added to the Hashmap. | ||
| 44 | * | ||
| 45 | * @param selection New value of the int. | ||
| 46 | * @return the existing setting with the new value applied. | ||
| 47 | */ | ||
| 48 | fun setSelectedValue(selection: Int): AbstractIntSetting { | ||
| 49 | val intSetting = setting as AbstractIntSetting | ||
| 50 | intSetting.setInt(selection) | ||
| 51 | return intSetting | ||
| 52 | } | ||
| 53 | |||
| 54 | /** | ||
| 55 | * Write a value to the backing float. If that float was previously null, | ||
| 56 | * initializes a new one and returns it, so it can be added to the Hashmap. | ||
| 57 | * | ||
| 58 | * @param selection New value of the float. | ||
| 59 | * @return the existing setting with the new value applied. | ||
| 60 | */ | ||
| 61 | fun setSelectedValue(selection: Float): AbstractFloatSetting { | ||
| 62 | val floatSetting = setting as AbstractFloatSetting | ||
| 63 | floatSetting.setFloat(selection) | ||
| 64 | return floatSetting | ||
| 65 | } | ||
| 66 | |||
| 67 | fun setSelectedValue(selection: Short): AbstractShortSetting { | ||
| 68 | val shortSetting = setting as AbstractShortSetting | ||
| 69 | shortSetting.setShort(selection) | ||
| 70 | return shortSetting | ||
| 71 | } | ||
| 72 | |||
| 73 | fun setSelectedValue(selection: Byte): AbstractByteSetting { | ||
| 74 | val byteSetting = setting as AbstractByteSetting | ||
| 75 | byteSetting.setByte(selection) | ||
| 76 | return byteSetting | ||
| 77 | } | ||
| 78 | } | 41 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/StringSingleChoiceSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/StringSingleChoiceSetting.kt index 2195641e3..871dab4f3 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/StringSingleChoiceSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/StringSingleChoiceSetting.kt | |||
| @@ -3,57 +3,31 @@ | |||
| 3 | 3 | ||
| 4 | package org.yuzu.yuzu_emu.features.settings.model.view | 4 | package org.yuzu.yuzu_emu.features.settings.model.view |
| 5 | 5 | ||
| 6 | import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting | ||
| 7 | import org.yuzu.yuzu_emu.features.settings.model.AbstractStringSetting | 6 | import org.yuzu.yuzu_emu.features.settings.model.AbstractStringSetting |
| 8 | 7 | ||
| 9 | class StringSingleChoiceSetting( | 8 | class StringSingleChoiceSetting( |
| 10 | setting: AbstractSetting?, | 9 | private val stringSetting: AbstractStringSetting, |
| 11 | titleId: Int, | 10 | titleId: Int, |
| 12 | descriptionId: Int, | 11 | descriptionId: Int, |
| 13 | val choices: Array<String>, | 12 | val choices: Array<String>, |
| 14 | val values: Array<String>?, | 13 | val values: Array<String> |
| 15 | val key: String? = null, | 14 | ) : SettingsItem(stringSetting, titleId, descriptionId) { |
| 16 | private val defaultValue: String? = null | ||
| 17 | ) : SettingsItem(setting, titleId, descriptionId) { | ||
| 18 | override val type = TYPE_STRING_SINGLE_CHOICE | 15 | override val type = TYPE_STRING_SINGLE_CHOICE |
| 19 | 16 | ||
| 20 | fun getValueAt(index: Int): String? { | 17 | fun getValueAt(index: Int): String = |
| 21 | if (values == null) return null | 18 | if (index >= 0 && index < values.size) values[index] else "" |
| 22 | return if (index >= 0 && index < values.size) { | 19 | |
| 23 | values[index] | 20 | var selectedValue: String |
| 24 | } else { | 21 | get() = stringSetting.string |
| 25 | "" | 22 | set(value) = stringSetting.setString(value) |
| 26 | } | ||
| 27 | } | ||
| 28 | 23 | ||
| 29 | val selectedValue: String | ||
| 30 | get() = if (setting != null) { | ||
| 31 | val setting = setting as AbstractStringSetting | ||
| 32 | setting.string | ||
| 33 | } else { | ||
| 34 | defaultValue!! | ||
| 35 | } | ||
| 36 | val selectValueIndex: Int | 24 | val selectValueIndex: Int |
| 37 | get() { | 25 | get() { |
| 38 | val selectedValue = selectedValue | 26 | for (i in values.indices) { |
| 39 | for (i in values!!.indices) { | ||
| 40 | if (values[i] == selectedValue) { | 27 | if (values[i] == selectedValue) { |
| 41 | return i | 28 | return i |
| 42 | } | 29 | } |
| 43 | } | 30 | } |
| 44 | return -1 | 31 | return -1 |
| 45 | } | 32 | } |
| 46 | |||
| 47 | /** | ||
| 48 | * Write a value to the backing int. If that int was previously null, | ||
| 49 | * initializes a new one and returns it, so it can be added to the Hashmap. | ||
| 50 | * | ||
| 51 | * @param selection New value of the int. | ||
| 52 | * @return the existing setting with the new value applied. | ||
| 53 | */ | ||
| 54 | fun setSelectedValue(selection: String): AbstractStringSetting { | ||
| 55 | val stringSetting = setting as AbstractStringSetting | ||
| 56 | stringSetting.setString(selection) | ||
| 57 | return stringSetting | ||
| 58 | } | ||
| 59 | } | 33 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SubmenuSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SubmenuSetting.kt index 8a9d13a92..91c273964 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SubmenuSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SubmenuSetting.kt | |||
| @@ -7,6 +7,6 @@ class SubmenuSetting( | |||
| 7 | titleId: Int, | 7 | titleId: Int, |
| 8 | descriptionId: Int, | 8 | descriptionId: Int, |
| 9 | val menuKey: String | 9 | val menuKey: String |
| 10 | ) : SettingsItem(null, titleId, descriptionId) { | 10 | ) : SettingsItem(emptySetting, titleId, descriptionId) { |
| 11 | override val type = TYPE_SUBMENU | 11 | override val type = TYPE_SUBMENU |
| 12 | } | 12 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt index 4ed8070e5..416967e64 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt | |||
| @@ -10,53 +10,22 @@ import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting | |||
| 10 | class SwitchSetting( | 10 | class SwitchSetting( |
| 11 | setting: AbstractSetting, | 11 | setting: AbstractSetting, |
| 12 | titleId: Int, | 12 | titleId: Int, |
| 13 | descriptionId: Int, | 13 | descriptionId: Int |
| 14 | val key: String? = null, | ||
| 15 | val defaultValue: Any? = null | ||
| 16 | ) : SettingsItem(setting, titleId, descriptionId) { | 14 | ) : SettingsItem(setting, titleId, descriptionId) { |
| 17 | override val type = TYPE_SWITCH | 15 | override val type = TYPE_SWITCH |
| 18 | 16 | ||
| 19 | val isChecked: Boolean | 17 | var checked: Boolean |
| 20 | get() { | 18 | get() { |
| 21 | if (setting == null) { | 19 | return when (setting) { |
| 22 | return defaultValue as Boolean | 20 | is AbstractIntSetting -> setting.int == 1 |
| 21 | is AbstractBooleanSetting -> setting.boolean | ||
| 22 | else -> false | ||
| 23 | } | 23 | } |
| 24 | |||
| 25 | // Try integer setting | ||
| 26 | try { | ||
| 27 | val setting = setting as AbstractIntSetting | ||
| 28 | return setting.int == 1 | ||
| 29 | } catch (_: ClassCastException) { | ||
| 30 | } | ||
| 31 | |||
| 32 | // Try boolean setting | ||
| 33 | try { | ||
| 34 | val setting = setting as AbstractBooleanSetting | ||
| 35 | return setting.boolean | ||
| 36 | } catch (_: ClassCastException) { | ||
| 37 | } | ||
| 38 | return defaultValue as Boolean | ||
| 39 | } | 24 | } |
| 40 | 25 | set(value) { | |
| 41 | /** | 26 | when (setting) { |
| 42 | * Write a value to the backing boolean. If that boolean was previously null, | 27 | is AbstractIntSetting -> setting.setInt(if (value) 1 else 0) |
| 43 | * initializes a new one and returns it, so it can be added to the Hashmap. | 28 | is AbstractBooleanSetting -> setting.setBoolean(value) |
| 44 | * | 29 | } |
| 45 | * @param checked Pretty self explanatory. | ||
| 46 | * @return the existing setting with the new value applied. | ||
| 47 | */ | ||
| 48 | fun setChecked(checked: Boolean): AbstractSetting { | ||
| 49 | // Try integer setting | ||
| 50 | try { | ||
| 51 | val setting = setting as AbstractIntSetting | ||
| 52 | setting.setInt(if (checked) 1 else 0) | ||
| 53 | return setting | ||
| 54 | } catch (_: ClassCastException) { | ||
| 55 | } | 30 | } |
| 56 | |||
| 57 | // Try boolean setting | ||
| 58 | val setting = setting as AbstractBooleanSetting | ||
| 59 | setting.setBoolean(checked) | ||
| 60 | return setting | ||
| 61 | } | ||
| 62 | } | 31 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt index e2e8d8bec..27eaaa576 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt | |||
| @@ -113,7 +113,7 @@ class SettingsAdapter( | |||
| 113 | } | 113 | } |
| 114 | 114 | ||
| 115 | fun onBooleanClick(item: SwitchSetting, position: Int, checked: Boolean) { | 115 | fun onBooleanClick(item: SwitchSetting, position: Int, checked: Boolean) { |
| 116 | item.setChecked(checked) | 116 | item.checked = checked |
| 117 | fragmentView.onSettingChanged() | 117 | fragmentView.onSettingChanged() |
| 118 | } | 118 | } |
| 119 | 119 | ||
| @@ -183,7 +183,7 @@ class SettingsAdapter( | |||
| 183 | if (item.value != epochTime) { | 183 | if (item.value != epochTime) { |
| 184 | fragmentView.onSettingChanged() | 184 | fragmentView.onSettingChanged() |
| 185 | notifyItemChanged(clickedPosition) | 185 | notifyItemChanged(clickedPosition) |
| 186 | item.setSelectedValue(epochTime) | 186 | item.value = epochTime |
| 187 | } | 187 | } |
| 188 | clickedItem = null | 188 | clickedItem = null |
| 189 | } | 189 | } |
| @@ -244,7 +244,7 @@ class SettingsAdapter( | |||
| 244 | } | 244 | } |
| 245 | 245 | ||
| 246 | // Get the backing Setting, which may be null (if for example it was missing from the file) | 246 | // Get the backing Setting, which may be null (if for example it was missing from the file) |
| 247 | scSetting.setSelectedValue(value) | 247 | scSetting.selectedValue = value |
| 248 | closeDialog() | 248 | closeDialog() |
| 249 | } | 249 | } |
| 250 | 250 | ||
| @@ -252,7 +252,7 @@ class SettingsAdapter( | |||
| 252 | val scSetting = clickedItem as StringSingleChoiceSetting | 252 | val scSetting = clickedItem as StringSingleChoiceSetting |
| 253 | val value = scSetting.getValueAt(which) | 253 | val value = scSetting.getValueAt(which) |
| 254 | if (scSetting.selectedValue != value) fragmentView.onSettingChanged() | 254 | if (scSetting.selectedValue != value) fragmentView.onSettingChanged() |
| 255 | scSetting.setSelectedValue(value!!) | 255 | scSetting.selectedValue = value!! |
| 256 | closeDialog() | 256 | closeDialog() |
| 257 | } | 257 | } |
| 258 | 258 | ||
| @@ -264,21 +264,21 @@ class SettingsAdapter( | |||
| 264 | when (sliderSetting.setting) { | 264 | when (sliderSetting.setting) { |
| 265 | is ByteSetting -> { | 265 | is ByteSetting -> { |
| 266 | val value = sliderProgress.toByte() | 266 | val value = sliderProgress.toByte() |
| 267 | sliderSetting.setSelectedValue(value) | 267 | sliderSetting.selectedValue = value.toInt() |
| 268 | } | 268 | } |
| 269 | 269 | ||
| 270 | is ShortSetting -> { | 270 | is ShortSetting -> { |
| 271 | val value = sliderProgress.toShort() | 271 | val value = sliderProgress.toShort() |
| 272 | sliderSetting.setSelectedValue(value) | 272 | sliderSetting.selectedValue = value.toInt() |
| 273 | } | 273 | } |
| 274 | 274 | ||
| 275 | is FloatSetting -> { | 275 | is FloatSetting -> { |
| 276 | val value = sliderProgress.toFloat() | 276 | val value = sliderProgress.toFloat() |
| 277 | sliderSetting.setSelectedValue(value) | 277 | sliderSetting.selectedValue = value.toInt() |
| 278 | } | 278 | } |
| 279 | 279 | ||
| 280 | else -> { | 280 | else -> { |
| 281 | sliderSetting.setSelectedValue(sliderProgress) | 281 | sliderSetting.selectedValue = sliderProgress |
| 282 | } | 282 | } |
| 283 | } | 283 | } |
| 284 | closeDialog() | 284 | closeDialog() |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index 2bab9e542..dddbf65bb 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt | |||
| @@ -75,47 +75,13 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 75 | private fun addConfigSettings(sl: ArrayList<SettingsItem>) { | 75 | private fun addConfigSettings(sl: ArrayList<SettingsItem>) { |
| 76 | settingsActivity.setToolbarTitle(settingsActivity.getString(R.string.advanced_settings)) | 76 | settingsActivity.setToolbarTitle(settingsActivity.getString(R.string.advanced_settings)) |
| 77 | sl.apply { | 77 | sl.apply { |
| 78 | add(SubmenuSetting(R.string.preferences_general, 0, Settings.SECTION_GENERAL)) | ||
| 79 | add(SubmenuSetting(R.string.preferences_system, 0, Settings.SECTION_SYSTEM)) | ||
| 80 | add(SubmenuSetting(R.string.preferences_graphics, 0, Settings.SECTION_RENDERER)) | ||
| 81 | add(SubmenuSetting(R.string.preferences_audio, 0, Settings.SECTION_AUDIO)) | ||
| 82 | add(SubmenuSetting(R.string.preferences_debug, 0, Settings.SECTION_DEBUG)) | ||
| 78 | add( | 83 | add( |
| 79 | SubmenuSetting( | 84 | RunnableSetting(R.string.reset_to_default, 0, false) { |
| 80 | R.string.preferences_general, | ||
| 81 | 0, | ||
| 82 | Settings.SECTION_GENERAL | ||
| 83 | ) | ||
| 84 | ) | ||
| 85 | add( | ||
| 86 | SubmenuSetting( | ||
| 87 | R.string.preferences_system, | ||
| 88 | 0, | ||
| 89 | Settings.SECTION_SYSTEM | ||
| 90 | ) | ||
| 91 | ) | ||
| 92 | add( | ||
| 93 | SubmenuSetting( | ||
| 94 | R.string.preferences_graphics, | ||
| 95 | 0, | ||
| 96 | Settings.SECTION_RENDERER | ||
| 97 | ) | ||
| 98 | ) | ||
| 99 | add( | ||
| 100 | SubmenuSetting( | ||
| 101 | R.string.preferences_audio, | ||
| 102 | 0, | ||
| 103 | Settings.SECTION_AUDIO | ||
| 104 | ) | ||
| 105 | ) | ||
| 106 | add( | ||
| 107 | SubmenuSetting( | ||
| 108 | R.string.preferences_debug, | ||
| 109 | 0, | ||
| 110 | Settings.SECTION_DEBUG | ||
| 111 | ) | ||
| 112 | ) | ||
| 113 | add( | ||
| 114 | RunnableSetting( | ||
| 115 | R.string.reset_to_default, | ||
| 116 | 0, | ||
| 117 | false | ||
| 118 | ) { | ||
| 119 | ResetSettingsDialogFragment().show( | 85 | ResetSettingsDialogFragment().show( |
| 120 | settingsActivity.supportFragmentManager, | 86 | settingsActivity.supportFragmentManager, |
| 121 | ResetSettingsDialogFragment.TAG | 87 | ResetSettingsDialogFragment.TAG |
| @@ -132,9 +98,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 132 | SwitchSetting( | 98 | SwitchSetting( |
| 133 | BooleanSetting.RENDERER_USE_SPEED_LIMIT, | 99 | BooleanSetting.RENDERER_USE_SPEED_LIMIT, |
| 134 | R.string.frame_limit_enable, | 100 | R.string.frame_limit_enable, |
| 135 | R.string.frame_limit_enable_description, | 101 | R.string.frame_limit_enable_description |
| 136 | BooleanSetting.RENDERER_USE_SPEED_LIMIT.key, | ||
| 137 | BooleanSetting.RENDERER_USE_SPEED_LIMIT.defaultValue | ||
| 138 | ) | 102 | ) |
| 139 | ) | 103 | ) |
| 140 | add( | 104 | add( |
| @@ -144,9 +108,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 144 | R.string.frame_limit_slider_description, | 108 | R.string.frame_limit_slider_description, |
| 145 | 1, | 109 | 1, |
| 146 | 200, | 110 | 200, |
| 147 | "%", | 111 | "%" |
| 148 | ShortSetting.RENDERER_SPEED_LIMIT.key, | ||
| 149 | ShortSetting.RENDERER_SPEED_LIMIT.defaultValue | ||
| 150 | ) | 112 | ) |
| 151 | ) | 113 | ) |
| 152 | add( | 114 | add( |
| @@ -155,18 +117,14 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 155 | R.string.cpu_accuracy, | 117 | R.string.cpu_accuracy, |
| 156 | 0, | 118 | 0, |
| 157 | R.array.cpuAccuracyNames, | 119 | R.array.cpuAccuracyNames, |
| 158 | R.array.cpuAccuracyValues, | 120 | R.array.cpuAccuracyValues |
| 159 | IntSetting.CPU_ACCURACY.key, | ||
| 160 | IntSetting.CPU_ACCURACY.defaultValue | ||
| 161 | ) | 121 | ) |
| 162 | ) | 122 | ) |
| 163 | add( | 123 | add( |
| 164 | SwitchSetting( | 124 | SwitchSetting( |
| 165 | BooleanSetting.PICTURE_IN_PICTURE, | 125 | BooleanSetting.PICTURE_IN_PICTURE, |
| 166 | R.string.picture_in_picture, | 126 | R.string.picture_in_picture, |
| 167 | R.string.picture_in_picture_description, | 127 | R.string.picture_in_picture_description |
| 168 | BooleanSetting.PICTURE_IN_PICTURE.key, | ||
| 169 | BooleanSetting.PICTURE_IN_PICTURE.defaultValue | ||
| 170 | ) | 128 | ) |
| 171 | ) | 129 | ) |
| 172 | } | 130 | } |
| @@ -179,9 +137,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 179 | SwitchSetting( | 137 | SwitchSetting( |
| 180 | BooleanSetting.USE_DOCKED_MODE, | 138 | BooleanSetting.USE_DOCKED_MODE, |
| 181 | R.string.use_docked_mode, | 139 | R.string.use_docked_mode, |
| 182 | R.string.use_docked_mode_description, | 140 | R.string.use_docked_mode_description |
| 183 | BooleanSetting.USE_DOCKED_MODE.key, | ||
| 184 | BooleanSetting.USE_DOCKED_MODE.defaultValue | ||
| 185 | ) | 141 | ) |
| 186 | ) | 142 | ) |
| 187 | add( | 143 | add( |
| @@ -190,9 +146,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 190 | R.string.emulated_region, | 146 | R.string.emulated_region, |
| 191 | 0, | 147 | 0, |
| 192 | R.array.regionNames, | 148 | R.array.regionNames, |
| 193 | R.array.regionValues, | 149 | R.array.regionValues |
| 194 | IntSetting.REGION_INDEX.key, | ||
| 195 | IntSetting.REGION_INDEX.defaultValue | ||
| 196 | ) | 150 | ) |
| 197 | ) | 151 | ) |
| 198 | add( | 152 | add( |
| @@ -201,29 +155,17 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 201 | R.string.emulated_language, | 155 | R.string.emulated_language, |
| 202 | 0, | 156 | 0, |
| 203 | R.array.languageNames, | 157 | R.array.languageNames, |
| 204 | R.array.languageValues, | 158 | R.array.languageValues |
| 205 | IntSetting.LANGUAGE_INDEX.key, | ||
| 206 | IntSetting.LANGUAGE_INDEX.defaultValue | ||
| 207 | ) | 159 | ) |
| 208 | ) | 160 | ) |
| 209 | add( | 161 | add( |
| 210 | SwitchSetting( | 162 | SwitchSetting( |
| 211 | BooleanSetting.USE_CUSTOM_RTC, | 163 | BooleanSetting.USE_CUSTOM_RTC, |
| 212 | R.string.use_custom_rtc, | 164 | R.string.use_custom_rtc, |
| 213 | R.string.use_custom_rtc_description, | 165 | R.string.use_custom_rtc_description |
| 214 | BooleanSetting.USE_CUSTOM_RTC.key, | ||
| 215 | BooleanSetting.USE_CUSTOM_RTC.defaultValue | ||
| 216 | ) | ||
| 217 | ) | ||
| 218 | add( | ||
| 219 | DateTimeSetting( | ||
| 220 | LongSetting.CUSTOM_RTC, | ||
| 221 | R.string.set_custom_rtc, | ||
| 222 | 0, | ||
| 223 | LongSetting.CUSTOM_RTC.key, | ||
| 224 | LongSetting.CUSTOM_RTC.defaultValue | ||
| 225 | ) | 166 | ) |
| 226 | ) | 167 | ) |
| 168 | add(DateTimeSetting(LongSetting.CUSTOM_RTC, R.string.set_custom_rtc, 0)) | ||
| 227 | } | 169 | } |
| 228 | } | 170 | } |
| 229 | 171 | ||
| @@ -236,9 +178,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 236 | R.string.renderer_accuracy, | 178 | R.string.renderer_accuracy, |
| 237 | 0, | 179 | 0, |
| 238 | R.array.rendererAccuracyNames, | 180 | R.array.rendererAccuracyNames, |
| 239 | R.array.rendererAccuracyValues, | 181 | R.array.rendererAccuracyValues |
| 240 | IntSetting.RENDERER_ACCURACY.key, | ||
| 241 | IntSetting.RENDERER_ACCURACY.defaultValue | ||
| 242 | ) | 182 | ) |
| 243 | ) | 183 | ) |
| 244 | add( | 184 | add( |
| @@ -247,9 +187,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 247 | R.string.renderer_resolution, | 187 | R.string.renderer_resolution, |
| 248 | 0, | 188 | 0, |
| 249 | R.array.rendererResolutionNames, | 189 | R.array.rendererResolutionNames, |
| 250 | R.array.rendererResolutionValues, | 190 | R.array.rendererResolutionValues |
| 251 | IntSetting.RENDERER_RESOLUTION.key, | ||
| 252 | IntSetting.RENDERER_RESOLUTION.defaultValue | ||
| 253 | ) | 191 | ) |
| 254 | ) | 192 | ) |
| 255 | add( | 193 | add( |
| @@ -258,9 +196,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 258 | R.string.renderer_vsync, | 196 | R.string.renderer_vsync, |
| 259 | 0, | 197 | 0, |
| 260 | R.array.rendererVSyncNames, | 198 | R.array.rendererVSyncNames, |
| 261 | R.array.rendererVSyncValues, | 199 | R.array.rendererVSyncValues |
| 262 | IntSetting.RENDERER_VSYNC.key, | ||
| 263 | IntSetting.RENDERER_VSYNC.defaultValue | ||
| 264 | ) | 200 | ) |
| 265 | ) | 201 | ) |
| 266 | add( | 202 | add( |
| @@ -269,9 +205,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 269 | R.string.renderer_scaling_filter, | 205 | R.string.renderer_scaling_filter, |
| 270 | 0, | 206 | 0, |
| 271 | R.array.rendererScalingFilterNames, | 207 | R.array.rendererScalingFilterNames, |
| 272 | R.array.rendererScalingFilterValues, | 208 | R.array.rendererScalingFilterValues |
| 273 | IntSetting.RENDERER_SCALING_FILTER.key, | ||
| 274 | IntSetting.RENDERER_SCALING_FILTER.defaultValue | ||
| 275 | ) | 209 | ) |
| 276 | ) | 210 | ) |
| 277 | add( | 211 | add( |
| @@ -280,9 +214,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 280 | R.string.renderer_anti_aliasing, | 214 | R.string.renderer_anti_aliasing, |
| 281 | 0, | 215 | 0, |
| 282 | R.array.rendererAntiAliasingNames, | 216 | R.array.rendererAntiAliasingNames, |
| 283 | R.array.rendererAntiAliasingValues, | 217 | R.array.rendererAntiAliasingValues |
| 284 | IntSetting.RENDERER_ANTI_ALIASING.key, | ||
| 285 | IntSetting.RENDERER_ANTI_ALIASING.defaultValue | ||
| 286 | ) | 218 | ) |
| 287 | ) | 219 | ) |
| 288 | add( | 220 | add( |
| @@ -291,9 +223,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 291 | R.string.renderer_screen_layout, | 223 | R.string.renderer_screen_layout, |
| 292 | 0, | 224 | 0, |
| 293 | R.array.rendererScreenLayoutNames, | 225 | R.array.rendererScreenLayoutNames, |
| 294 | R.array.rendererScreenLayoutValues, | 226 | R.array.rendererScreenLayoutValues |
| 295 | IntSetting.RENDERER_SCREEN_LAYOUT.key, | ||
| 296 | IntSetting.RENDERER_SCREEN_LAYOUT.defaultValue | ||
| 297 | ) | 227 | ) |
| 298 | ) | 228 | ) |
| 299 | add( | 229 | add( |
| @@ -302,45 +232,35 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 302 | R.string.renderer_aspect_ratio, | 232 | R.string.renderer_aspect_ratio, |
| 303 | 0, | 233 | 0, |
| 304 | R.array.rendererAspectRatioNames, | 234 | R.array.rendererAspectRatioNames, |
| 305 | R.array.rendererAspectRatioValues, | 235 | R.array.rendererAspectRatioValues |
| 306 | IntSetting.RENDERER_ASPECT_RATIO.key, | ||
| 307 | IntSetting.RENDERER_ASPECT_RATIO.defaultValue | ||
| 308 | ) | 236 | ) |
| 309 | ) | 237 | ) |
| 310 | add( | 238 | add( |
| 311 | SwitchSetting( | 239 | SwitchSetting( |
| 312 | BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE, | 240 | BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE, |
| 313 | R.string.use_disk_shader_cache, | 241 | R.string.use_disk_shader_cache, |
| 314 | R.string.use_disk_shader_cache_description, | 242 | R.string.use_disk_shader_cache_description |
| 315 | BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE.key, | ||
| 316 | BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE.defaultValue | ||
| 317 | ) | 243 | ) |
| 318 | ) | 244 | ) |
| 319 | add( | 245 | add( |
| 320 | SwitchSetting( | 246 | SwitchSetting( |
| 321 | BooleanSetting.RENDERER_FORCE_MAX_CLOCK, | 247 | BooleanSetting.RENDERER_FORCE_MAX_CLOCK, |
| 322 | R.string.renderer_force_max_clock, | 248 | R.string.renderer_force_max_clock, |
| 323 | R.string.renderer_force_max_clock_description, | 249 | R.string.renderer_force_max_clock_description |
| 324 | BooleanSetting.RENDERER_FORCE_MAX_CLOCK.key, | ||
| 325 | BooleanSetting.RENDERER_FORCE_MAX_CLOCK.defaultValue | ||
| 326 | ) | 250 | ) |
| 327 | ) | 251 | ) |
| 328 | add( | 252 | add( |
| 329 | SwitchSetting( | 253 | SwitchSetting( |
| 330 | BooleanSetting.RENDERER_ASYNCHRONOUS_SHADERS, | 254 | BooleanSetting.RENDERER_ASYNCHRONOUS_SHADERS, |
| 331 | R.string.renderer_asynchronous_shaders, | 255 | R.string.renderer_asynchronous_shaders, |
| 332 | R.string.renderer_asynchronous_shaders_description, | 256 | R.string.renderer_asynchronous_shaders_description |
| 333 | BooleanSetting.RENDERER_ASYNCHRONOUS_SHADERS.key, | ||
| 334 | BooleanSetting.RENDERER_ASYNCHRONOUS_SHADERS.defaultValue | ||
| 335 | ) | 257 | ) |
| 336 | ) | 258 | ) |
| 337 | add( | 259 | add( |
| 338 | SwitchSetting( | 260 | SwitchSetting( |
| 339 | BooleanSetting.RENDERER_REACTIVE_FLUSHING, | 261 | BooleanSetting.RENDERER_REACTIVE_FLUSHING, |
| 340 | R.string.renderer_reactive_flushing, | 262 | R.string.renderer_reactive_flushing, |
| 341 | R.string.renderer_reactive_flushing_description, | 263 | R.string.renderer_reactive_flushing_description |
| 342 | BooleanSetting.RENDERER_REACTIVE_FLUSHING.key, | ||
| 343 | BooleanSetting.RENDERER_REACTIVE_FLUSHING.defaultValue | ||
| 344 | ) | 264 | ) |
| 345 | ) | 265 | ) |
| 346 | } | 266 | } |
| @@ -355,9 +275,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 355 | R.string.audio_output_engine, | 275 | R.string.audio_output_engine, |
| 356 | 0, | 276 | 0, |
| 357 | R.array.outputEngineEntries, | 277 | R.array.outputEngineEntries, |
| 358 | R.array.outputEngineValues, | 278 | R.array.outputEngineValues |
| 359 | IntSetting.AUDIO_OUTPUT_ENGINE.key, | ||
| 360 | IntSetting.AUDIO_OUTPUT_ENGINE.defaultValue | ||
| 361 | ) | 279 | ) |
| 362 | ) | 280 | ) |
| 363 | add( | 281 | add( |
| @@ -367,9 +285,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 367 | R.string.audio_volume_description, | 285 | R.string.audio_volume_description, |
| 368 | 0, | 286 | 0, |
| 369 | 100, | 287 | 100, |
| 370 | "%", | 288 | "%" |
| 371 | ByteSetting.AUDIO_VOLUME.key, | ||
| 372 | ByteSetting.AUDIO_VOLUME.defaultValue | ||
| 373 | ) | 289 | ) |
| 374 | ) | 290 | ) |
| 375 | } | 291 | } |
| @@ -392,7 +308,12 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 392 | override val key: String? = null | 308 | override val key: String? = null |
| 393 | override val category = Settings.Category.UiGeneral | 309 | override val category = Settings.Category.UiGeneral |
| 394 | override val isRuntimeModifiable: Boolean = false | 310 | override val isRuntimeModifiable: Boolean = false |
| 395 | override val defaultValue: Any = 0 | 311 | override val defaultValue: Int = 0 |
| 312 | override fun reset() { | ||
| 313 | preferences.edit() | ||
| 314 | .putInt(Settings.PREF_THEME, defaultValue) | ||
| 315 | .apply() | ||
| 316 | } | ||
| 396 | } | 317 | } |
| 397 | 318 | ||
| 398 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { | 319 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { |
| @@ -431,7 +352,12 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 431 | override val key: String? = null | 352 | override val key: String? = null |
| 432 | override val category = Settings.Category.UiGeneral | 353 | override val category = Settings.Category.UiGeneral |
| 433 | override val isRuntimeModifiable: Boolean = false | 354 | override val isRuntimeModifiable: Boolean = false |
| 434 | override val defaultValue: Any = -1 | 355 | override val defaultValue: Int = -1 |
| 356 | override fun reset() { | ||
| 357 | preferences.edit() | ||
| 358 | .putInt(Settings.PREF_BLACK_BACKGROUNDS, defaultValue) | ||
| 359 | .apply() | ||
| 360 | } | ||
| 435 | } | 361 | } |
| 436 | 362 | ||
| 437 | add( | 363 | add( |
| @@ -458,7 +384,12 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 458 | override val key: String? = null | 384 | override val key: String? = null |
| 459 | override val category = Settings.Category.UiGeneral | 385 | override val category = Settings.Category.UiGeneral |
| 460 | override val isRuntimeModifiable: Boolean = false | 386 | override val isRuntimeModifiable: Boolean = false |
| 461 | override val defaultValue: Any = false | 387 | override val defaultValue: Boolean = false |
| 388 | override fun reset() { | ||
| 389 | preferences.edit() | ||
| 390 | .putBoolean(Settings.PREF_BLACK_BACKGROUNDS, defaultValue) | ||
| 391 | .apply() | ||
| 392 | } | ||
| 462 | } | 393 | } |
| 463 | 394 | ||
| 464 | add( | 395 | add( |
| @@ -481,18 +412,14 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 481 | R.string.renderer_api, | 412 | R.string.renderer_api, |
| 482 | 0, | 413 | 0, |
| 483 | R.array.rendererApiNames, | 414 | R.array.rendererApiNames, |
| 484 | R.array.rendererApiValues, | 415 | R.array.rendererApiValues |
| 485 | IntSetting.RENDERER_BACKEND.key, | ||
| 486 | IntSetting.RENDERER_BACKEND.defaultValue | ||
| 487 | ) | 416 | ) |
| 488 | ) | 417 | ) |
| 489 | add( | 418 | add( |
| 490 | SwitchSetting( | 419 | SwitchSetting( |
| 491 | BooleanSetting.RENDERER_DEBUG, | 420 | BooleanSetting.RENDERER_DEBUG, |
| 492 | R.string.renderer_debug, | 421 | R.string.renderer_debug, |
| 493 | R.string.renderer_debug_description, | 422 | R.string.renderer_debug_description |
| 494 | BooleanSetting.RENDERER_DEBUG.key, | ||
| 495 | BooleanSetting.RENDERER_DEBUG.defaultValue | ||
| 496 | ) | 423 | ) |
| 497 | ) | 424 | ) |
| 498 | 425 | ||
| @@ -501,9 +428,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 501 | SwitchSetting( | 428 | SwitchSetting( |
| 502 | BooleanSetting.CPU_DEBUG_MODE, | 429 | BooleanSetting.CPU_DEBUG_MODE, |
| 503 | R.string.cpu_debug_mode, | 430 | R.string.cpu_debug_mode, |
| 504 | R.string.cpu_debug_mode_description, | 431 | R.string.cpu_debug_mode_description |
| 505 | BooleanSetting.CPU_DEBUG_MODE.key, | ||
| 506 | BooleanSetting.CPU_DEBUG_MODE.defaultValue | ||
| 507 | ) | 432 | ) |
| 508 | ) | 433 | ) |
| 509 | 434 | ||
| @@ -520,15 +445,10 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 520 | override val key: String? = null | 445 | override val key: String? = null |
| 521 | override val category = Settings.Category.Cpu | 446 | override val category = Settings.Category.Cpu |
| 522 | override val isRuntimeModifiable: Boolean = false | 447 | override val isRuntimeModifiable: Boolean = false |
| 523 | override val defaultValue: Any = true | 448 | override val defaultValue: Boolean = true |
| 449 | override fun reset() = setBoolean(defaultValue) | ||
| 524 | } | 450 | } |
| 525 | add( | 451 | add(SwitchSetting(fastmem, R.string.fastmem, 0)) |
| 526 | SwitchSetting( | ||
| 527 | fastmem, | ||
| 528 | R.string.fastmem, | ||
| 529 | 0 | ||
| 530 | ) | ||
| 531 | ) | ||
| 532 | } | 452 | } |
| 533 | } | 453 | } |
| 534 | } | 454 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt index eb25ea4fb..68c0b24d6 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt | |||
| @@ -46,7 +46,7 @@ class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA | |||
| 46 | 46 | ||
| 47 | override fun onLongClick(clicked: View): Boolean { | 47 | override fun onLongClick(clicked: View): Boolean { |
| 48 | if (setting.isEditable) { | 48 | if (setting.isEditable) { |
| 49 | return adapter.onLongClick(setting.setting!!, bindingAdapterPosition) | 49 | return adapter.onLongClick(setting.setting, bindingAdapterPosition) |
| 50 | } | 50 | } |
| 51 | return false | 51 | return false |
| 52 | } | 52 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt index b42d955aa..a582c425b 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt | |||
| @@ -35,7 +35,7 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti | |||
| 35 | } | 35 | } |
| 36 | } | 36 | } |
| 37 | } else if (item is StringSingleChoiceSetting) { | 37 | } else if (item is StringSingleChoiceSetting) { |
| 38 | for (i in item.values!!.indices) { | 38 | for (i in item.values.indices) { |
| 39 | if (item.values[i] == item.selectedValue) { | 39 | if (item.values[i] == item.selectedValue) { |
| 40 | binding.textSettingValue.text = item.choices[i] | 40 | binding.textSettingValue.text = item.choices[i] |
| 41 | break | 41 | break |
| @@ -66,7 +66,7 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti | |||
| 66 | 66 | ||
| 67 | override fun onLongClick(clicked: View): Boolean { | 67 | override fun onLongClick(clicked: View): Boolean { |
| 68 | if (setting.isEditable) { | 68 | if (setting.isEditable) { |
| 69 | return adapter.onLongClick(setting.setting!!, bindingAdapterPosition) | 69 | return adapter.onLongClick(setting.setting, bindingAdapterPosition) |
| 70 | } | 70 | } |
| 71 | return false | 71 | return false |
| 72 | } | 72 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt index a23b5d109..d94a46262 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt | |||
| @@ -41,7 +41,7 @@ class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAda | |||
| 41 | 41 | ||
| 42 | override fun onLongClick(clicked: View): Boolean { | 42 | override fun onLongClick(clicked: View): Boolean { |
| 43 | if (setting.isEditable) { | 43 | if (setting.isEditable) { |
| 44 | return adapter.onLongClick(setting.setting!!, bindingAdapterPosition) | 44 | return adapter.onLongClick(setting.setting, bindingAdapterPosition) |
| 45 | } | 45 | } |
| 46 | return false | 46 | return false |
| 47 | } | 47 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt index ef34bf5f4..200fbc473 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt | |||
| @@ -28,7 +28,7 @@ class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter | |||
| 28 | binding.switchWidget.setOnCheckedChangeListener { _: CompoundButton, _: Boolean -> | 28 | binding.switchWidget.setOnCheckedChangeListener { _: CompoundButton, _: Boolean -> |
| 29 | adapter.onBooleanClick(item, bindingAdapterPosition, binding.switchWidget.isChecked) | 29 | adapter.onBooleanClick(item, bindingAdapterPosition, binding.switchWidget.isChecked) |
| 30 | } | 30 | } |
| 31 | binding.switchWidget.isChecked = setting.isChecked | 31 | binding.switchWidget.isChecked = setting.checked |
| 32 | 32 | ||
| 33 | setStyle(setting.isEditable, binding) | 33 | setStyle(setting.isEditable, binding) |
| 34 | } | 34 | } |