diff options
7 files changed, 59 insertions, 21 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt index 63f95690c..6621289fd 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt | |||
| @@ -8,6 +8,7 @@ enum class StringSetting( | |||
| 8 | override val section: String, | 8 | override val section: String, |
| 9 | override val defaultValue: String | 9 | override val defaultValue: String |
| 10 | ) : AbstractStringSetting { | 10 | ) : AbstractStringSetting { |
| 11 | AUDIO_OUTPUT_ENGINE("output_engine", Settings.SECTION_AUDIO, "auto"), | ||
| 11 | CUSTOM_RTC("custom_rtc", Settings.SECTION_SYSTEM, "0"); | 12 | CUSTOM_RTC("custom_rtc", Settings.SECTION_SYSTEM, "0"); |
| 12 | 13 | ||
| 13 | override var string: String = defaultValue | 14 | override var string: String = defaultValue |
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 bad34fd88..3b6731dcd 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 | |||
| @@ -7,20 +7,20 @@ import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting | |||
| 7 | import org.yuzu.yuzu_emu.features.settings.model.AbstractStringSetting | 7 | import org.yuzu.yuzu_emu.features.settings.model.AbstractStringSetting |
| 8 | 8 | ||
| 9 | class StringSingleChoiceSetting( | 9 | class StringSingleChoiceSetting( |
| 10 | val key: String? = null, | ||
| 11 | setting: AbstractSetting?, | 10 | setting: AbstractSetting?, |
| 12 | titleId: Int, | 11 | titleId: Int, |
| 13 | descriptionId: Int, | 12 | descriptionId: Int, |
| 14 | val choicesId: Array<String>, | 13 | val choices: Array<String>, |
| 15 | private val valuesId: Array<String>?, | 14 | val values: Array<String>?, |
| 15 | val key: String? = null, | ||
| 16 | private val defaultValue: String? = null | 16 | private val defaultValue: String? = null |
| 17 | ) : SettingsItem(setting, titleId, descriptionId) { | 17 | ) : SettingsItem(setting, titleId, descriptionId) { |
| 18 | override val type = TYPE_STRING_SINGLE_CHOICE | 18 | override val type = TYPE_STRING_SINGLE_CHOICE |
| 19 | 19 | ||
| 20 | fun getValueAt(index: Int): String? { | 20 | fun getValueAt(index: Int): String? { |
| 21 | if (valuesId == null) return null | 21 | if (values == null) return null |
| 22 | return if (index >= 0 && index < valuesId.size) { | 22 | return if (index >= 0 && index < values.size) { |
| 23 | valuesId[index] | 23 | values[index] |
| 24 | } else { | 24 | } else { |
| 25 | "" | 25 | "" |
| 26 | } | 26 | } |
| @@ -36,8 +36,8 @@ class StringSingleChoiceSetting( | |||
| 36 | val selectValueIndex: Int | 36 | val selectValueIndex: Int |
| 37 | get() { | 37 | get() { |
| 38 | val selectedValue = selectedValue | 38 | val selectedValue = selectedValue |
| 39 | for (i in valuesId!!.indices) { | 39 | for (i in values!!.indices) { |
| 40 | if (valuesId[i] == selectedValue) { | 40 | if (values[i] == selectedValue) { |
| 41 | return i | 41 | return i |
| 42 | } | 42 | } |
| 43 | } | 43 | } |
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 eac6a134b..ce0b92c90 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 | |||
| @@ -138,7 +138,7 @@ class SettingsAdapter( | |||
| 138 | clickedItem = item | 138 | clickedItem = item |
| 139 | dialog = MaterialAlertDialogBuilder(context) | 139 | dialog = MaterialAlertDialogBuilder(context) |
| 140 | .setTitle(item.nameId) | 140 | .setTitle(item.nameId) |
| 141 | .setSingleChoiceItems(item.choicesId, item.selectValueIndex, this) | 141 | .setSingleChoiceItems(item.choices, item.selectValueIndex, this) |
| 142 | .show() | 142 | .show() |
| 143 | } | 143 | } |
| 144 | 144 | ||
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 8215a08eb..59c1d9d54 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 | |||
| @@ -353,18 +353,31 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 353 | 353 | ||
| 354 | private fun addAudioSettings(sl: ArrayList<SettingsItem>) { | 354 | private fun addAudioSettings(sl: ArrayList<SettingsItem>) { |
| 355 | settingsActivity.setToolbarTitle(settingsActivity.getString(R.string.preferences_audio)) | 355 | settingsActivity.setToolbarTitle(settingsActivity.getString(R.string.preferences_audio)) |
| 356 | sl.add( | 356 | sl.apply { |
| 357 | SliderSetting( | 357 | add( |
| 358 | IntSetting.AUDIO_VOLUME, | 358 | StringSingleChoiceSetting( |
| 359 | R.string.audio_volume, | 359 | StringSetting.AUDIO_OUTPUT_ENGINE, |
| 360 | R.string.audio_volume_description, | 360 | R.string.audio_output_engine, |
| 361 | 0, | 361 | 0, |
| 362 | 100, | 362 | settingsActivity.resources.getStringArray(R.array.outputEngineEntries), |
| 363 | "%", | 363 | settingsActivity.resources.getStringArray(R.array.outputEngineValues), |
| 364 | IntSetting.AUDIO_VOLUME.key, | 364 | StringSetting.AUDIO_OUTPUT_ENGINE.key, |
| 365 | IntSetting.AUDIO_VOLUME.defaultValue | 365 | StringSetting.AUDIO_OUTPUT_ENGINE.defaultValue |
| 366 | ) | 366 | ) |
| 367 | ) | 367 | ) |
| 368 | add( | ||
| 369 | SliderSetting( | ||
| 370 | IntSetting.AUDIO_VOLUME, | ||
| 371 | R.string.audio_volume, | ||
| 372 | R.string.audio_volume_description, | ||
| 373 | 0, | ||
| 374 | 100, | ||
| 375 | "%", | ||
| 376 | IntSetting.AUDIO_VOLUME.key, | ||
| 377 | IntSetting.AUDIO_VOLUME.defaultValue | ||
| 378 | ) | ||
| 379 | ) | ||
| 380 | } | ||
| 368 | } | 381 | } |
| 369 | 382 | ||
| 370 | private fun addThemeSettings(sl: ArrayList<SettingsItem>) { | 383 | private fun addThemeSettings(sl: ArrayList<SettingsItem>) { |
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 de764a27f..e4e321bd3 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 | |||
| @@ -26,6 +26,14 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti | |||
| 26 | for (i in values.indices) { | 26 | for (i in values.indices) { |
| 27 | if (values[i] == item.selectedValue) { | 27 | if (values[i] == item.selectedValue) { |
| 28 | binding.textSettingDescription.text = resMgr.getStringArray(item.choicesId)[i] | 28 | binding.textSettingDescription.text = resMgr.getStringArray(item.choicesId)[i] |
| 29 | return | ||
| 30 | } | ||
| 31 | } | ||
| 32 | } else if (item is StringSingleChoiceSetting) { | ||
| 33 | for (i in item.values!!.indices) { | ||
| 34 | if (item.values[i] == item.selectedValue) { | ||
| 35 | binding.textSettingDescription.text = item.choices[i] | ||
| 36 | return | ||
| 29 | } | 37 | } |
| 30 | } | 38 | } |
| 31 | } else { | 39 | } else { |
diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index 7f7b1938c..6d092f7a9 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml | |||
| @@ -236,4 +236,15 @@ | |||
| 236 | <item>2</item> | 236 | <item>2</item> |
| 237 | </integer-array> | 237 | </integer-array> |
| 238 | 238 | ||
| 239 | <string-array name="outputEngineEntries"> | ||
| 240 | <item>@string/auto</item> | ||
| 241 | <item>@string/cubeb</item> | ||
| 242 | <item>@string/string_null</item> | ||
| 243 | </string-array> | ||
| 244 | <string-array name="outputEngineValues"> | ||
| 245 | <item>auto</item> | ||
| 246 | <item>cubeb</item> | ||
| 247 | <item>null</item> | ||
| 248 | </string-array> | ||
| 249 | |||
| 239 | </resources> | 250 | </resources> |
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index a7ea01b55..cc1d8c39d 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml | |||
| @@ -185,6 +185,7 @@ | |||
| 185 | <string name="fastmem">Fastmem</string> | 185 | <string name="fastmem">Fastmem</string> |
| 186 | 186 | ||
| 187 | <!-- Audio settings strings --> | 187 | <!-- Audio settings strings --> |
| 188 | <string name="audio_output_engine">Output engine</string> | ||
| 188 | <string name="audio_volume">Volume</string> | 189 | <string name="audio_volume">Volume</string> |
| 189 | <string name="audio_volume_description">Specifies the volume of audio output.</string> | 190 | <string name="audio_volume_description">Specifies the volume of audio output.</string> |
| 190 | 191 | ||
| @@ -203,6 +204,7 @@ | |||
| 203 | <string name="learn_more">Learn more</string> | 204 | <string name="learn_more">Learn more</string> |
| 204 | <string name="auto">Auto</string> | 205 | <string name="auto">Auto</string> |
| 205 | <string name="submit">Submit</string> | 206 | <string name="submit">Submit</string> |
| 207 | <string name="string_null">Null</string> | ||
| 206 | 208 | ||
| 207 | <!-- GPU driver installation --> | 209 | <!-- GPU driver installation --> |
| 208 | <string name="select_gpu_driver">Select GPU driver</string> | 210 | <string name="select_gpu_driver">Select GPU driver</string> |
| @@ -373,6 +375,9 @@ | |||
| 373 | <string name="theme_mode_light">Light</string> | 375 | <string name="theme_mode_light">Light</string> |
| 374 | <string name="theme_mode_dark">Dark</string> | 376 | <string name="theme_mode_dark">Dark</string> |
| 375 | 377 | ||
| 378 | <!-- Audio output engines --> | ||
| 379 | <string name="cubeb">cubeb</string> | ||
| 380 | |||
| 376 | <!-- Black backgrounds theme --> | 381 | <!-- Black backgrounds theme --> |
| 377 | <string name="use_black_backgrounds">Black backgrounds</string> | 382 | <string name="use_black_backgrounds">Black backgrounds</string> |
| 378 | <string name="use_black_backgrounds_description">When using the dark theme, apply black backgrounds.</string> | 383 | <string name="use_black_backgrounds_description">When using the dark theme, apply black backgrounds.</string> |