summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCharles Lombardo <clombardo169@gmail.com>2023-08-22 03:48:21 +0200
committerCharles Lombardo <clombardo169@gmail.com>2023-08-30 01:40:18 +0200
commitf5e6b12c74243736a1dc29d297dd2eb1d0c3a4b2 (patch)
tree76ee1b16e27c98cfb41645db1111ec41947bd181
parentandroid: Expose interface for getting settings from native code (diff)
downloadyuzu-f5e6b12c74243736a1dc29d297dd2eb1d0c3a4b2.tar
yuzu-f5e6b12c74243736a1dc29d297dd2eb1d0c3a4b2.tar.gz
yuzu-f5e6b12c74243736a1dc29d297dd2eb1d0c3a4b2.tar.bz2
yuzu-f5e6b12c74243736a1dc29d297dd2eb1d0c3a4b2.tar.lz
yuzu-f5e6b12c74243736a1dc29d297dd2eb1d0c3a4b2.tar.xz
yuzu-f5e6b12c74243736a1dc29d297dd2eb1d0c3a4b2.tar.zst
yuzu-f5e6b12c74243736a1dc29d297dd2eb1d0c3a4b2.zip
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/DateTimeSetting.kt25
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/HeaderSetting.kt2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/RunnableSetting.kt2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt12
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt37
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.kt63
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/StringSingleChoiceSetting.kt46
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SubmenuSetting.kt2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt53
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt16
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt184
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt4
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt2
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 {
val isRuntimeModifiable: Boolean
get() = NativeConfig.getIsRuntimeModifiable(key!!)
- fun reset() = run { }
+ fun reset()
}
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 @@
package org.yuzu.yuzu_emu.features.settings.model.view
import org.yuzu.yuzu_emu.features.settings.model.AbstractLongSetting
-import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting
class DateTimeSetting(
- setting: AbstractSetting?,
+ private val longSetting: AbstractLongSetting,
titleId: Int,
- descriptionId: Int,
- val key: String? = null,
- private val defaultValue: Long? = null
-) : SettingsItem(setting, titleId, descriptionId) {
+ descriptionId: Int
+) : SettingsItem(longSetting, titleId, descriptionId) {
override val type = TYPE_DATETIME_SETTING
- val value: Long
- get() = if (setting != null) {
- val setting = setting as AbstractLongSetting
- setting.long
- } else {
- defaultValue!!
- }
-
- fun setSelectedValue(datetime: Long): AbstractLongSetting {
- val longSetting = setting as AbstractLongSetting
- longSetting.setLong(datetime)
- return longSetting
- }
+ var value: Long
+ get() = longSetting.long
+ set(value) = (setting as AbstractLongSetting).setLong(value)
}
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
class HeaderSetting(
titleId: Int
-) : SettingsItem(null, titleId, 0) {
+) : SettingsItem(emptySetting, titleId, 0) {
override val type = TYPE_HEADER
}
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(
descriptionId: Int,
val isRuntimeRunnable: Boolean,
val runnable: () -> Unit
-) : SettingsItem(null, titleId, descriptionId) {
+) : SettingsItem(emptySetting, titleId, descriptionId) {
override val type = TYPE_RUNNABLE
}
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
import org.yuzu.yuzu_emu.NativeLibrary
import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting
+import org.yuzu.yuzu_emu.features.settings.model.Settings
/**
* ViewModel abstraction for an Item in the RecyclerView powering SettingsFragments.
@@ -14,7 +15,7 @@ import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting
* file.)
*/
abstract class SettingsItem(
- var setting: AbstractSetting?,
+ val setting: AbstractSetting,
val nameId: Int,
val descriptionId: Int
) {
@@ -23,7 +24,7 @@ abstract class SettingsItem(
val isEditable: Boolean
get() {
if (!NativeLibrary.isRunning()) return true
- return setting?.isRuntimeModifiable ?: false
+ return setting.isRuntimeModifiable
}
companion object {
@@ -35,5 +36,12 @@ abstract class SettingsItem(
const val TYPE_STRING_SINGLE_CHOICE = 5
const val TYPE_DATETIME_SETTING = 6
const val TYPE_RUNNABLE = 7
+
+ val emptySetting = object : AbstractSetting {
+ override val key: String = ""
+ override val category: Settings.Category = Settings.Category.Ui
+ override val defaultValue: Any = false
+ override fun reset() {}
+ }
}
}
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 @@
package org.yuzu.yuzu_emu.features.settings.model.view
import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting
+import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting
class SingleChoiceSetting(
- setting: AbstractIntSetting?,
+ setting: AbstractSetting,
titleId: Int,
descriptionId: Int,
val choicesId: Int,
- val valuesId: Int,
- val key: String? = null,
- val defaultValue: Int? = null
+ val valuesId: Int
) : SettingsItem(setting, titleId, descriptionId) {
override val type = TYPE_SINGLE_CHOICE
- val selectedValue: Int
- get() = if (setting != null) {
- val setting = setting as AbstractIntSetting
- setting.int
- } else {
- defaultValue!!
+ var selectedValue: Int
+ get() {
+ return when (setting) {
+ is AbstractIntSetting -> setting.int
+ else -> -1
+ }
+ }
+ set(value) {
+ when (setting) {
+ is AbstractIntSetting -> setting.setInt(value)
+ }
}
-
- /**
- * Write a value to the backing int. If that int was previously null,
- * initializes a new one and returns it, so it can be added to the Hashmap.
- *
- * @param selection New value of the int.
- * @return the existing setting with the new value applied.
- */
- fun setSelectedValue(selection: Int): AbstractIntSetting {
- val intSetting = setting as AbstractIntSetting
- intSetting.setInt(selection)
- return intSetting
- }
}
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 @@
package org.yuzu.yuzu_emu.features.settings.model.view
import org.yuzu.yuzu_emu.features.settings.model.AbstractByteSetting
-import kotlin.math.roundToInt
import org.yuzu.yuzu_emu.features.settings.model.AbstractFloatSetting
import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting
import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting
import org.yuzu.yuzu_emu.features.settings.model.AbstractShortSetting
-import org.yuzu.yuzu_emu.utils.Log
+import kotlin.math.roundToInt
class SliderSetting(
- setting: AbstractSetting?,
+ setting: AbstractSetting,
titleId: Int,
descriptionId: Int,
val min: Int,
val max: Int,
- val units: String,
- val key: String? = null,
- val defaultValue: Any? = null
+ val units: String
) : SettingsItem(setting, titleId, descriptionId) {
override val type = TYPE_SLIDER
- val selectedValue: Any
+ var selectedValue: Int
get() {
- val setting = setting ?: return defaultValue!!
return when (setting) {
is AbstractByteSetting -> setting.byte.toInt()
is AbstractShortSetting -> setting.short.toInt()
is AbstractIntSetting -> setting.int
is AbstractFloatSetting -> setting.float.roundToInt()
- else -> {
- Log.error("[SliderSetting] Error casting setting type.")
- -1
- }
+ else -> -1
+ }
+ }
+ set(value) {
+ when (setting) {
+ is AbstractByteSetting -> setting.setByte(value.toByte())
+ is AbstractShortSetting -> setting.setShort(value.toShort())
+ is AbstractIntSetting -> setting.setInt(value)
+ is AbstractFloatSetting -> setting.setFloat(value.toFloat())
}
}
-
- /**
- * Write a value to the backing int. If that int was previously null,
- * initializes a new one and returns it, so it can be added to the Hashmap.
- *
- * @param selection New value of the int.
- * @return the existing setting with the new value applied.
- */
- fun setSelectedValue(selection: Int): AbstractIntSetting {
- val intSetting = setting as AbstractIntSetting
- intSetting.setInt(selection)
- return intSetting
- }
-
- /**
- * Write a value to the backing float. If that float was previously null,
- * initializes a new one and returns it, so it can be added to the Hashmap.
- *
- * @param selection New value of the float.
- * @return the existing setting with the new value applied.
- */
- fun setSelectedValue(selection: Float): AbstractFloatSetting {
- val floatSetting = setting as AbstractFloatSetting
- floatSetting.setFloat(selection)
- return floatSetting
- }
-
- fun setSelectedValue(selection: Short): AbstractShortSetting {
- val shortSetting = setting as AbstractShortSetting
- shortSetting.setShort(selection)
- return shortSetting
- }
-
- fun setSelectedValue(selection: Byte): AbstractByteSetting {
- val byteSetting = setting as AbstractByteSetting
- byteSetting.setByte(selection)
- return byteSetting
- }
}
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 @@
package org.yuzu.yuzu_emu.features.settings.model.view
-import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting
import org.yuzu.yuzu_emu.features.settings.model.AbstractStringSetting
class StringSingleChoiceSetting(
- setting: AbstractSetting?,
+ private val stringSetting: AbstractStringSetting,
titleId: Int,
descriptionId: Int,
val choices: Array<String>,
- val values: Array<String>?,
- val key: String? = null,
- private val defaultValue: String? = null
-) : SettingsItem(setting, titleId, descriptionId) {
+ val values: Array<String>
+) : SettingsItem(stringSetting, titleId, descriptionId) {
override val type = TYPE_STRING_SINGLE_CHOICE
- fun getValueAt(index: Int): String? {
- if (values == null) return null
- return if (index >= 0 && index < values.size) {
- values[index]
- } else {
- ""
- }
- }
+ fun getValueAt(index: Int): String =
+ if (index >= 0 && index < values.size) values[index] else ""
+
+ var selectedValue: String
+ get() = stringSetting.string
+ set(value) = stringSetting.setString(value)
- val selectedValue: String
- get() = if (setting != null) {
- val setting = setting as AbstractStringSetting
- setting.string
- } else {
- defaultValue!!
- }
val selectValueIndex: Int
get() {
- val selectedValue = selectedValue
- for (i in values!!.indices) {
+ for (i in values.indices) {
if (values[i] == selectedValue) {
return i
}
}
return -1
}
-
- /**
- * Write a value to the backing int. If that int was previously null,
- * initializes a new one and returns it, so it can be added to the Hashmap.
- *
- * @param selection New value of the int.
- * @return the existing setting with the new value applied.
- */
- fun setSelectedValue(selection: String): AbstractStringSetting {
- val stringSetting = setting as AbstractStringSetting
- stringSetting.setString(selection)
- return stringSetting
- }
}
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(
titleId: Int,
descriptionId: Int,
val menuKey: String
-) : SettingsItem(null, titleId, descriptionId) {
+) : SettingsItem(emptySetting, titleId, descriptionId) {
override val type = TYPE_SUBMENU
}
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
class SwitchSetting(
setting: AbstractSetting,
titleId: Int,
- descriptionId: Int,
- val key: String? = null,
- val defaultValue: Any? = null
+ descriptionId: Int
) : SettingsItem(setting, titleId, descriptionId) {
override val type = TYPE_SWITCH
- val isChecked: Boolean
+ var checked: Boolean
get() {
- if (setting == null) {
- return defaultValue as Boolean
+ return when (setting) {
+ is AbstractIntSetting -> setting.int == 1
+ is AbstractBooleanSetting -> setting.boolean
+ else -> false
}
-
- // Try integer setting
- try {
- val setting = setting as AbstractIntSetting
- return setting.int == 1
- } catch (_: ClassCastException) {
- }
-
- // Try boolean setting
- try {
- val setting = setting as AbstractBooleanSetting
- return setting.boolean
- } catch (_: ClassCastException) {
- }
- return defaultValue as Boolean
}
-
- /**
- * 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 the existing setting with the new value applied.
- */
- fun setChecked(checked: Boolean): AbstractSetting {
- // Try integer setting
- try {
- val setting = setting as AbstractIntSetting
- setting.setInt(if (checked) 1 else 0)
- return setting
- } catch (_: ClassCastException) {
+ set(value) {
+ when (setting) {
+ is AbstractIntSetting -> setting.setInt(if (value) 1 else 0)
+ is AbstractBooleanSetting -> setting.setBoolean(value)
+ }
}
-
- // Try boolean setting
- val setting = setting as AbstractBooleanSetting
- setting.setBoolean(checked)
- return setting
- }
}
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(
}
fun onBooleanClick(item: SwitchSetting, position: Int, checked: Boolean) {
- item.setChecked(checked)
+ item.checked = checked
fragmentView.onSettingChanged()
}
@@ -183,7 +183,7 @@ class SettingsAdapter(
if (item.value != epochTime) {
fragmentView.onSettingChanged()
notifyItemChanged(clickedPosition)
- item.setSelectedValue(epochTime)
+ item.value = epochTime
}
clickedItem = null
}
@@ -244,7 +244,7 @@ class SettingsAdapter(
}
// Get the backing Setting, which may be null (if for example it was missing from the file)
- scSetting.setSelectedValue(value)
+ scSetting.selectedValue = value
closeDialog()
}
@@ -252,7 +252,7 @@ class SettingsAdapter(
val scSetting = clickedItem as StringSingleChoiceSetting
val value = scSetting.getValueAt(which)
if (scSetting.selectedValue != value) fragmentView.onSettingChanged()
- scSetting.setSelectedValue(value!!)
+ scSetting.selectedValue = value!!
closeDialog()
}
@@ -264,21 +264,21 @@ class SettingsAdapter(
when (sliderSetting.setting) {
is ByteSetting -> {
val value = sliderProgress.toByte()
- sliderSetting.setSelectedValue(value)
+ sliderSetting.selectedValue = value.toInt()
}
is ShortSetting -> {
val value = sliderProgress.toShort()
- sliderSetting.setSelectedValue(value)
+ sliderSetting.selectedValue = value.toInt()
}
is FloatSetting -> {
val value = sliderProgress.toFloat()
- sliderSetting.setSelectedValue(value)
+ sliderSetting.selectedValue = value.toInt()
}
else -> {
- sliderSetting.setSelectedValue(sliderProgress)
+ sliderSetting.selectedValue = sliderProgress
}
}
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)
private fun addConfigSettings(sl: ArrayList<SettingsItem>) {
settingsActivity.setToolbarTitle(settingsActivity.getString(R.string.advanced_settings))
sl.apply {
+ add(SubmenuSetting(R.string.preferences_general, 0, Settings.SECTION_GENERAL))
+ add(SubmenuSetting(R.string.preferences_system, 0, Settings.SECTION_SYSTEM))
+ add(SubmenuSetting(R.string.preferences_graphics, 0, Settings.SECTION_RENDERER))
+ add(SubmenuSetting(R.string.preferences_audio, 0, Settings.SECTION_AUDIO))
+ add(SubmenuSetting(R.string.preferences_debug, 0, Settings.SECTION_DEBUG))
add(
- SubmenuSetting(
- R.string.preferences_general,
- 0,
- Settings.SECTION_GENERAL
- )
- )
- add(
- SubmenuSetting(
- R.string.preferences_system,
- 0,
- Settings.SECTION_SYSTEM
- )
- )
- add(
- SubmenuSetting(
- R.string.preferences_graphics,
- 0,
- Settings.SECTION_RENDERER
- )
- )
- add(
- SubmenuSetting(
- R.string.preferences_audio,
- 0,
- Settings.SECTION_AUDIO
- )
- )
- add(
- SubmenuSetting(
- R.string.preferences_debug,
- 0,
- Settings.SECTION_DEBUG
- )
- )
- add(
- RunnableSetting(
- R.string.reset_to_default,
- 0,
- false
- ) {
+ RunnableSetting(R.string.reset_to_default, 0, false) {
ResetSettingsDialogFragment().show(
settingsActivity.supportFragmentManager,
ResetSettingsDialogFragment.TAG
@@ -132,9 +98,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
SwitchSetting(
BooleanSetting.RENDERER_USE_SPEED_LIMIT,
R.string.frame_limit_enable,
- R.string.frame_limit_enable_description,
- BooleanSetting.RENDERER_USE_SPEED_LIMIT.key,
- BooleanSetting.RENDERER_USE_SPEED_LIMIT.defaultValue
+ R.string.frame_limit_enable_description
)
)
add(
@@ -144,9 +108,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.frame_limit_slider_description,
1,
200,
- "%",
- ShortSetting.RENDERER_SPEED_LIMIT.key,
- ShortSetting.RENDERER_SPEED_LIMIT.defaultValue
+ "%"
)
)
add(
@@ -155,18 +117,14 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.cpu_accuracy,
0,
R.array.cpuAccuracyNames,
- R.array.cpuAccuracyValues,
- IntSetting.CPU_ACCURACY.key,
- IntSetting.CPU_ACCURACY.defaultValue
+ R.array.cpuAccuracyValues
)
)
add(
SwitchSetting(
BooleanSetting.PICTURE_IN_PICTURE,
R.string.picture_in_picture,
- R.string.picture_in_picture_description,
- BooleanSetting.PICTURE_IN_PICTURE.key,
- BooleanSetting.PICTURE_IN_PICTURE.defaultValue
+ R.string.picture_in_picture_description
)
)
}
@@ -179,9 +137,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
SwitchSetting(
BooleanSetting.USE_DOCKED_MODE,
R.string.use_docked_mode,
- R.string.use_docked_mode_description,
- BooleanSetting.USE_DOCKED_MODE.key,
- BooleanSetting.USE_DOCKED_MODE.defaultValue
+ R.string.use_docked_mode_description
)
)
add(
@@ -190,9 +146,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.emulated_region,
0,
R.array.regionNames,
- R.array.regionValues,
- IntSetting.REGION_INDEX.key,
- IntSetting.REGION_INDEX.defaultValue
+ R.array.regionValues
)
)
add(
@@ -201,29 +155,17 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.emulated_language,
0,
R.array.languageNames,
- R.array.languageValues,
- IntSetting.LANGUAGE_INDEX.key,
- IntSetting.LANGUAGE_INDEX.defaultValue
+ R.array.languageValues
)
)
add(
SwitchSetting(
BooleanSetting.USE_CUSTOM_RTC,
R.string.use_custom_rtc,
- R.string.use_custom_rtc_description,
- BooleanSetting.USE_CUSTOM_RTC.key,
- BooleanSetting.USE_CUSTOM_RTC.defaultValue
- )
- )
- add(
- DateTimeSetting(
- LongSetting.CUSTOM_RTC,
- R.string.set_custom_rtc,
- 0,
- LongSetting.CUSTOM_RTC.key,
- LongSetting.CUSTOM_RTC.defaultValue
+ R.string.use_custom_rtc_description
)
)
+ add(DateTimeSetting(LongSetting.CUSTOM_RTC, R.string.set_custom_rtc, 0))
}
}
@@ -236,9 +178,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.renderer_accuracy,
0,
R.array.rendererAccuracyNames,
- R.array.rendererAccuracyValues,
- IntSetting.RENDERER_ACCURACY.key,
- IntSetting.RENDERER_ACCURACY.defaultValue
+ R.array.rendererAccuracyValues
)
)
add(
@@ -247,9 +187,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.renderer_resolution,
0,
R.array.rendererResolutionNames,
- R.array.rendererResolutionValues,
- IntSetting.RENDERER_RESOLUTION.key,
- IntSetting.RENDERER_RESOLUTION.defaultValue
+ R.array.rendererResolutionValues
)
)
add(
@@ -258,9 +196,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.renderer_vsync,
0,
R.array.rendererVSyncNames,
- R.array.rendererVSyncValues,
- IntSetting.RENDERER_VSYNC.key,
- IntSetting.RENDERER_VSYNC.defaultValue
+ R.array.rendererVSyncValues
)
)
add(
@@ -269,9 +205,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.renderer_scaling_filter,
0,
R.array.rendererScalingFilterNames,
- R.array.rendererScalingFilterValues,
- IntSetting.RENDERER_SCALING_FILTER.key,
- IntSetting.RENDERER_SCALING_FILTER.defaultValue
+ R.array.rendererScalingFilterValues
)
)
add(
@@ -280,9 +214,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.renderer_anti_aliasing,
0,
R.array.rendererAntiAliasingNames,
- R.array.rendererAntiAliasingValues,
- IntSetting.RENDERER_ANTI_ALIASING.key,
- IntSetting.RENDERER_ANTI_ALIASING.defaultValue
+ R.array.rendererAntiAliasingValues
)
)
add(
@@ -291,9 +223,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.renderer_screen_layout,
0,
R.array.rendererScreenLayoutNames,
- R.array.rendererScreenLayoutValues,
- IntSetting.RENDERER_SCREEN_LAYOUT.key,
- IntSetting.RENDERER_SCREEN_LAYOUT.defaultValue
+ R.array.rendererScreenLayoutValues
)
)
add(
@@ -302,45 +232,35 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.renderer_aspect_ratio,
0,
R.array.rendererAspectRatioNames,
- R.array.rendererAspectRatioValues,
- IntSetting.RENDERER_ASPECT_RATIO.key,
- IntSetting.RENDERER_ASPECT_RATIO.defaultValue
+ R.array.rendererAspectRatioValues
)
)
add(
SwitchSetting(
BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE,
R.string.use_disk_shader_cache,
- R.string.use_disk_shader_cache_description,
- BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE.key,
- BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE.defaultValue
+ R.string.use_disk_shader_cache_description
)
)
add(
SwitchSetting(
BooleanSetting.RENDERER_FORCE_MAX_CLOCK,
R.string.renderer_force_max_clock,
- R.string.renderer_force_max_clock_description,
- BooleanSetting.RENDERER_FORCE_MAX_CLOCK.key,
- BooleanSetting.RENDERER_FORCE_MAX_CLOCK.defaultValue
+ R.string.renderer_force_max_clock_description
)
)
add(
SwitchSetting(
BooleanSetting.RENDERER_ASYNCHRONOUS_SHADERS,
R.string.renderer_asynchronous_shaders,
- R.string.renderer_asynchronous_shaders_description,
- BooleanSetting.RENDERER_ASYNCHRONOUS_SHADERS.key,
- BooleanSetting.RENDERER_ASYNCHRONOUS_SHADERS.defaultValue
+ R.string.renderer_asynchronous_shaders_description
)
)
add(
SwitchSetting(
BooleanSetting.RENDERER_REACTIVE_FLUSHING,
R.string.renderer_reactive_flushing,
- R.string.renderer_reactive_flushing_description,
- BooleanSetting.RENDERER_REACTIVE_FLUSHING.key,
- BooleanSetting.RENDERER_REACTIVE_FLUSHING.defaultValue
+ R.string.renderer_reactive_flushing_description
)
)
}
@@ -355,9 +275,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.audio_output_engine,
0,
R.array.outputEngineEntries,
- R.array.outputEngineValues,
- IntSetting.AUDIO_OUTPUT_ENGINE.key,
- IntSetting.AUDIO_OUTPUT_ENGINE.defaultValue
+ R.array.outputEngineValues
)
)
add(
@@ -367,9 +285,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.audio_volume_description,
0,
100,
- "%",
- ByteSetting.AUDIO_VOLUME.key,
- ByteSetting.AUDIO_VOLUME.defaultValue
+ "%"
)
)
}
@@ -392,7 +308,12 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
override val key: String? = null
override val category = Settings.Category.UiGeneral
override val isRuntimeModifiable: Boolean = false
- override val defaultValue: Any = 0
+ override val defaultValue: Int = 0
+ override fun reset() {
+ preferences.edit()
+ .putInt(Settings.PREF_THEME, defaultValue)
+ .apply()
+ }
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
@@ -431,7 +352,12 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
override val key: String? = null
override val category = Settings.Category.UiGeneral
override val isRuntimeModifiable: Boolean = false
- override val defaultValue: Any = -1
+ override val defaultValue: Int = -1
+ override fun reset() {
+ preferences.edit()
+ .putInt(Settings.PREF_BLACK_BACKGROUNDS, defaultValue)
+ .apply()
+ }
}
add(
@@ -458,7 +384,12 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
override val key: String? = null
override val category = Settings.Category.UiGeneral
override val isRuntimeModifiable: Boolean = false
- override val defaultValue: Any = false
+ override val defaultValue: Boolean = false
+ override fun reset() {
+ preferences.edit()
+ .putBoolean(Settings.PREF_BLACK_BACKGROUNDS, defaultValue)
+ .apply()
+ }
}
add(
@@ -481,18 +412,14 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.renderer_api,
0,
R.array.rendererApiNames,
- R.array.rendererApiValues,
- IntSetting.RENDERER_BACKEND.key,
- IntSetting.RENDERER_BACKEND.defaultValue
+ R.array.rendererApiValues
)
)
add(
SwitchSetting(
BooleanSetting.RENDERER_DEBUG,
R.string.renderer_debug,
- R.string.renderer_debug_description,
- BooleanSetting.RENDERER_DEBUG.key,
- BooleanSetting.RENDERER_DEBUG.defaultValue
+ R.string.renderer_debug_description
)
)
@@ -501,9 +428,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
SwitchSetting(
BooleanSetting.CPU_DEBUG_MODE,
R.string.cpu_debug_mode,
- R.string.cpu_debug_mode_description,
- BooleanSetting.CPU_DEBUG_MODE.key,
- BooleanSetting.CPU_DEBUG_MODE.defaultValue
+ R.string.cpu_debug_mode_description
)
)
@@ -520,15 +445,10 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
override val key: String? = null
override val category = Settings.Category.Cpu
override val isRuntimeModifiable: Boolean = false
- override val defaultValue: Any = true
+ override val defaultValue: Boolean = true
+ override fun reset() = setBoolean(defaultValue)
}
- add(
- SwitchSetting(
- fastmem,
- R.string.fastmem,
- 0
- )
- )
+ add(SwitchSetting(fastmem, R.string.fastmem, 0))
}
}
}
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
override fun onLongClick(clicked: View): Boolean {
if (setting.isEditable) {
- return adapter.onLongClick(setting.setting!!, bindingAdapterPosition)
+ return adapter.onLongClick(setting.setting, bindingAdapterPosition)
}
return false
}
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
}
}
} else if (item is StringSingleChoiceSetting) {
- for (i in item.values!!.indices) {
+ for (i in item.values.indices) {
if (item.values[i] == item.selectedValue) {
binding.textSettingValue.text = item.choices[i]
break
@@ -66,7 +66,7 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti
override fun onLongClick(clicked: View): Boolean {
if (setting.isEditable) {
- return adapter.onLongClick(setting.setting!!, bindingAdapterPosition)
+ return adapter.onLongClick(setting.setting, bindingAdapterPosition)
}
return false
}
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
override fun onLongClick(clicked: View): Boolean {
if (setting.isEditable) {
- return adapter.onLongClick(setting.setting!!, bindingAdapterPosition)
+ return adapter.onLongClick(setting.setting, bindingAdapterPosition)
}
return false
}
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
binding.switchWidget.setOnCheckedChangeListener { _: CompoundButton, _: Boolean ->
adapter.onBooleanClick(item, bindingAdapterPosition, binding.switchWidget.isChecked)
}
- binding.switchWidget.isChecked = setting.isChecked
+ binding.switchWidget.isChecked = setting.checked
setStyle(setting.isEditable, binding)
}