diff options
| author | 2023-05-13 18:43:35 -0400 | |
|---|---|---|
| committer | 2023-06-03 00:06:01 -0700 | |
| commit | c31a37c828f483c62a5b46b473d636738fda6361 (patch) | |
| tree | d392720bc3bb607fbc3fab3b179a7f4582da5afa /src | |
| parent | android: Reset setting on long press (diff) | |
| download | yuzu-c31a37c828f483c62a5b46b473d636738fda6361.tar.gz yuzu-c31a37c828f483c62a5b46b473d636738fda6361.tar.xz yuzu-c31a37c828f483c62a5b46b473d636738fda6361.zip | |
android: Expose custom RTC setting
Diffstat (limited to 'src')
9 files changed, 72 insertions, 31 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt index 9bc0d4176..7c0ca08c7 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt | |||
| @@ -8,8 +8,7 @@ enum class BooleanSetting( | |||
| 8 | override val section: String, | 8 | override val section: String, |
| 9 | override val defaultValue: Boolean | 9 | override val defaultValue: Boolean |
| 10 | ) : AbstractBooleanSetting { | 10 | ) : AbstractBooleanSetting { |
| 11 | // No boolean settings currently exist | 11 | USE_CUSTOM_RTC("custom_rtc_enabled", Settings.SECTION_SYSTEM, false); |
| 12 | EMPTY_SETTING("", "", false); | ||
| 13 | 12 | ||
| 14 | override var boolean: Boolean = defaultValue | 13 | override var boolean: Boolean = defaultValue |
| 15 | 14 | ||
| @@ -27,7 +26,9 @@ enum class BooleanSetting( | |||
| 27 | } | 26 | } |
| 28 | 27 | ||
| 29 | companion object { | 28 | companion object { |
| 30 | private val NOT_RUNTIME_EDITABLE = emptyList<BooleanSetting>() | 29 | private val NOT_RUNTIME_EDITABLE = listOf( |
| 30 | USE_CUSTOM_RTC | ||
| 31 | ) | ||
| 31 | 32 | ||
| 32 | fun from(key: String): BooleanSetting? = | 33 | fun from(key: String): BooleanSetting? = |
| 33 | BooleanSetting.values().firstOrNull { it.key == key } | 34 | BooleanSetting.values().firstOrNull { it.key == key } |
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 c41180b77..d16ff17df 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,8 +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 | // No string settings currently exist | 11 | CUSTOM_RTC("custom_rtc", Settings.SECTION_SYSTEM, "0"); |
| 12 | EMPTY_SETTING("", "", ""); | ||
| 13 | 12 | ||
| 14 | override var string: String = defaultValue | 13 | override var string: String = defaultValue |
| 15 | 14 | ||
| @@ -27,7 +26,9 @@ enum class StringSetting( | |||
| 27 | } | 26 | } |
| 28 | 27 | ||
| 29 | companion object { | 28 | companion object { |
| 30 | private val NOT_RUNTIME_EDITABLE = emptyList<StringSetting>() | 29 | private val NOT_RUNTIME_EDITABLE = listOf( |
| 30 | CUSTOM_RTC | ||
| 31 | ) | ||
| 31 | 32 | ||
| 32 | fun from(key: String): StringSetting? = StringSetting.values().firstOrNull { it.key == key } | 33 | fun from(key: String): StringSetting? = StringSetting.values().firstOrNull { it.key == key } |
| 33 | } | 34 | } |
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 f2038c578..bc0bf7788 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 | |||
| @@ -7,10 +7,10 @@ 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 DateTimeSetting( | 9 | class DateTimeSetting( |
| 10 | val key: String? = null, | ||
| 11 | setting: AbstractSetting?, | 10 | setting: AbstractSetting?, |
| 12 | titleId: Int, | 11 | titleId: Int, |
| 13 | descriptionId: Int, | 12 | descriptionId: Int, |
| 13 | val key: String? = null, | ||
| 14 | private val defaultValue: String? = null | 14 | private val defaultValue: String? = null |
| 15 | ) : SettingsItem(setting, titleId, descriptionId) { | 15 | ) : SettingsItem(setting, titleId, descriptionId) { |
| 16 | override val type = TYPE_DATETIME_SETTING | 16 | override val type = TYPE_DATETIME_SETTING |
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 6ed1aa880..9f3c7e9d5 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 | |||
| @@ -15,14 +15,14 @@ class SwitchSetting( | |||
| 15 | titleId: Int, | 15 | titleId: Int, |
| 16 | descriptionId: Int, | 16 | descriptionId: Int, |
| 17 | val key: String? = null, | 17 | val key: String? = null, |
| 18 | val defaultValue: Boolean? = null | 18 | val defaultValue: Any? = null |
| 19 | ) : SettingsItem(setting, titleId, descriptionId) { | 19 | ) : SettingsItem(setting, titleId, descriptionId) { |
| 20 | override val type = TYPE_SWITCH | 20 | override val type = TYPE_SWITCH |
| 21 | 21 | ||
| 22 | val isChecked: Boolean | 22 | val isChecked: Boolean |
| 23 | get() { | 23 | get() { |
| 24 | if (setting == null) { | 24 | if (setting == null) { |
| 25 | return defaultValue!! | 25 | return defaultValue as Boolean |
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | // Try integer setting | 28 | // Try integer setting |
| @@ -38,7 +38,7 @@ class SwitchSetting( | |||
| 38 | return setting.boolean | 38 | return setting.boolean |
| 39 | } catch (_: ClassCastException) { | 39 | } catch (_: ClassCastException) { |
| 40 | } | 40 | } |
| 41 | return defaultValue!! | 41 | return defaultValue as Boolean |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | /** | 44 | /** |
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 f0b9083ab..943905482 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 | |||
| @@ -182,10 +182,11 @@ class SettingsAdapter( | |||
| 182 | epochTime += timePicker.minute.toLong() * 60 | 182 | epochTime += timePicker.minute.toLong() * 60 |
| 183 | val rtcString = epochTime.toString() | 183 | val rtcString = epochTime.toString() |
| 184 | if (item.value != rtcString) { | 184 | if (item.value != rtcString) { |
| 185 | notifyItemChanged(clickedPosition) | ||
| 186 | fragmentView.onSettingChanged() | 185 | fragmentView.onSettingChanged() |
| 187 | } | 186 | } |
| 188 | item.setSelectedValue(rtcString) | 187 | notifyItemChanged(clickedPosition) |
| 188 | val setting = item.setSelectedValue(rtcString) | ||
| 189 | fragmentView.putSetting(setting) | ||
| 189 | clickedItem = null | 190 | clickedItem = null |
| 190 | } | 191 | } |
| 191 | datePicker.show( | 192 | datePicker.show( |
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 9a7b60581..d36afa932 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 | |||
| @@ -13,8 +13,10 @@ import org.yuzu.yuzu_emu.YuzuApplication | |||
| 13 | import org.yuzu.yuzu_emu.features.settings.model.AbstractBooleanSetting | 13 | import org.yuzu.yuzu_emu.features.settings.model.AbstractBooleanSetting |
| 14 | import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting | 14 | import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting |
| 15 | import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting | 15 | import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting |
| 16 | import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting | ||
| 16 | import org.yuzu.yuzu_emu.features.settings.model.IntSetting | 17 | import org.yuzu.yuzu_emu.features.settings.model.IntSetting |
| 17 | import org.yuzu.yuzu_emu.features.settings.model.Settings | 18 | import org.yuzu.yuzu_emu.features.settings.model.Settings |
| 19 | import org.yuzu.yuzu_emu.features.settings.model.StringSetting | ||
| 18 | import org.yuzu.yuzu_emu.features.settings.model.view.* | 20 | import org.yuzu.yuzu_emu.features.settings.model.view.* |
| 19 | import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile | 21 | import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile |
| 20 | import org.yuzu.yuzu_emu.utils.ThemeHelper | 22 | import org.yuzu.yuzu_emu.utils.ThemeHelper |
| @@ -121,7 +123,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 121 | R.string.frame_limit_enable, | 123 | R.string.frame_limit_enable, |
| 122 | R.string.frame_limit_enable_description, | 124 | R.string.frame_limit_enable_description, |
| 123 | IntSetting.RENDERER_USE_SPEED_LIMIT.key, | 125 | IntSetting.RENDERER_USE_SPEED_LIMIT.key, |
| 124 | true | 126 | IntSetting.RENDERER_USE_SPEED_LIMIT.defaultValue |
| 125 | ) | 127 | ) |
| 126 | ) | 128 | ) |
| 127 | add( | 129 | add( |
| @@ -133,7 +135,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 133 | 200, | 135 | 200, |
| 134 | "%", | 136 | "%", |
| 135 | IntSetting.RENDERER_SPEED_LIMIT.key, | 137 | IntSetting.RENDERER_SPEED_LIMIT.key, |
| 136 | 100 | 138 | IntSetting.RENDERER_SPEED_LIMIT.defaultValue |
| 137 | ) | 139 | ) |
| 138 | ) | 140 | ) |
| 139 | add( | 141 | add( |
| @@ -144,7 +146,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 144 | R.array.cpuAccuracyNames, | 146 | R.array.cpuAccuracyNames, |
| 145 | R.array.cpuAccuracyValues, | 147 | R.array.cpuAccuracyValues, |
| 146 | IntSetting.CPU_ACCURACY.key, | 148 | IntSetting.CPU_ACCURACY.key, |
| 147 | 0 | 149 | IntSetting.CPU_ACCURACY.defaultValue |
| 148 | ) | 150 | ) |
| 149 | ) | 151 | ) |
| 150 | } | 152 | } |
| @@ -159,7 +161,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 159 | R.string.use_docked_mode, | 161 | R.string.use_docked_mode, |
| 160 | R.string.use_docked_mode_description, | 162 | R.string.use_docked_mode_description, |
| 161 | IntSetting.USE_DOCKED_MODE.key, | 163 | IntSetting.USE_DOCKED_MODE.key, |
| 162 | false | 164 | IntSetting.USE_DOCKED_MODE.defaultValue |
| 163 | ) | 165 | ) |
| 164 | ) | 166 | ) |
| 165 | add( | 167 | add( |
| @@ -170,7 +172,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 170 | R.array.regionNames, | 172 | R.array.regionNames, |
| 171 | R.array.regionValues, | 173 | R.array.regionValues, |
| 172 | IntSetting.REGION_INDEX.key, | 174 | IntSetting.REGION_INDEX.key, |
| 173 | -1 | 175 | IntSetting.REGION_INDEX.defaultValue |
| 174 | ) | 176 | ) |
| 175 | ) | 177 | ) |
| 176 | add( | 178 | add( |
| @@ -181,7 +183,25 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 181 | R.array.languageNames, | 183 | R.array.languageNames, |
| 182 | R.array.languageValues, | 184 | R.array.languageValues, |
| 183 | IntSetting.LANGUAGE_INDEX.key, | 185 | IntSetting.LANGUAGE_INDEX.key, |
| 184 | 1 | 186 | IntSetting.LANGUAGE_INDEX.defaultValue |
| 187 | ) | ||
| 188 | ) | ||
| 189 | add( | ||
| 190 | SwitchSetting( | ||
| 191 | BooleanSetting.USE_CUSTOM_RTC, | ||
| 192 | R.string.use_custom_rtc, | ||
| 193 | R.string.use_custom_rtc_description, | ||
| 194 | BooleanSetting.USE_CUSTOM_RTC.key, | ||
| 195 | BooleanSetting.USE_CUSTOM_RTC.defaultValue | ||
| 196 | ) | ||
| 197 | ) | ||
| 198 | add( | ||
| 199 | DateTimeSetting( | ||
| 200 | StringSetting.CUSTOM_RTC, | ||
| 201 | R.string.set_custom_rtc, | ||
| 202 | 0, | ||
| 203 | StringSetting.CUSTOM_RTC.key, | ||
| 204 | StringSetting.CUSTOM_RTC.defaultValue | ||
| 185 | ) | 205 | ) |
| 186 | ) | 206 | ) |
| 187 | } | 207 | } |
| @@ -198,7 +218,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 198 | R.array.rendererApiNames, | 218 | R.array.rendererApiNames, |
| 199 | R.array.rendererApiValues, | 219 | R.array.rendererApiValues, |
| 200 | IntSetting.RENDERER_BACKEND.key, | 220 | IntSetting.RENDERER_BACKEND.key, |
| 201 | 1 | 221 | IntSetting.RENDERER_BACKEND.defaultValue |
| 202 | ) | 222 | ) |
| 203 | ) | 223 | ) |
| 204 | add( | 224 | add( |
| @@ -209,7 +229,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 209 | R.array.rendererAccuracyNames, | 229 | R.array.rendererAccuracyNames, |
| 210 | R.array.rendererAccuracyValues, | 230 | R.array.rendererAccuracyValues, |
| 211 | IntSetting.RENDERER_ACCURACY.key, | 231 | IntSetting.RENDERER_ACCURACY.key, |
| 212 | 0 | 232 | IntSetting.RENDERER_ACCURACY.defaultValue |
| 213 | ) | 233 | ) |
| 214 | ) | 234 | ) |
| 215 | add( | 235 | add( |
| @@ -220,7 +240,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 220 | R.array.rendererResolutionNames, | 240 | R.array.rendererResolutionNames, |
| 221 | R.array.rendererResolutionValues, | 241 | R.array.rendererResolutionValues, |
| 222 | IntSetting.RENDERER_RESOLUTION.key, | 242 | IntSetting.RENDERER_RESOLUTION.key, |
| 223 | 2 | 243 | IntSetting.RENDERER_RESOLUTION.defaultValue |
| 224 | ) | 244 | ) |
| 225 | ) | 245 | ) |
| 226 | add( | 246 | add( |
| @@ -231,7 +251,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 231 | R.array.rendererScalingFilterNames, | 251 | R.array.rendererScalingFilterNames, |
| 232 | R.array.rendererScalingFilterValues, | 252 | R.array.rendererScalingFilterValues, |
| 233 | IntSetting.RENDERER_SCALING_FILTER.key, | 253 | IntSetting.RENDERER_SCALING_FILTER.key, |
| 234 | 1 | 254 | IntSetting.RENDERER_SCALING_FILTER.defaultValue |
| 235 | ) | 255 | ) |
| 236 | ) | 256 | ) |
| 237 | add( | 257 | add( |
| @@ -242,7 +262,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 242 | R.array.rendererAntiAliasingNames, | 262 | R.array.rendererAntiAliasingNames, |
| 243 | R.array.rendererAntiAliasingValues, | 263 | R.array.rendererAntiAliasingValues, |
| 244 | IntSetting.RENDERER_ANTI_ALIASING.key, | 264 | IntSetting.RENDERER_ANTI_ALIASING.key, |
| 245 | 0 | 265 | IntSetting.RENDERER_ANTI_ALIASING.defaultValue |
| 246 | ) | 266 | ) |
| 247 | ) | 267 | ) |
| 248 | add( | 268 | add( |
| @@ -253,7 +273,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 253 | R.array.rendererAspectRatioNames, | 273 | R.array.rendererAspectRatioNames, |
| 254 | R.array.rendererAspectRatioValues, | 274 | R.array.rendererAspectRatioValues, |
| 255 | IntSetting.RENDERER_ASPECT_RATIO.key, | 275 | IntSetting.RENDERER_ASPECT_RATIO.key, |
| 256 | 0 | 276 | IntSetting.RENDERER_ASPECT_RATIO.defaultValue |
| 257 | ) | 277 | ) |
| 258 | ) | 278 | ) |
| 259 | add( | 279 | add( |
| @@ -262,7 +282,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 262 | R.string.use_disk_shader_cache, | 282 | R.string.use_disk_shader_cache, |
| 263 | R.string.use_disk_shader_cache_description, | 283 | R.string.use_disk_shader_cache_description, |
| 264 | IntSetting.RENDERER_USE_DISK_SHADER_CACHE.key, | 284 | IntSetting.RENDERER_USE_DISK_SHADER_CACHE.key, |
| 265 | true | 285 | IntSetting.RENDERER_USE_DISK_SHADER_CACHE.defaultValue |
| 266 | ) | 286 | ) |
| 267 | ) | 287 | ) |
| 268 | add( | 288 | add( |
| @@ -271,7 +291,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 271 | R.string.renderer_force_max_clock, | 291 | R.string.renderer_force_max_clock, |
| 272 | R.string.renderer_force_max_clock_description, | 292 | R.string.renderer_force_max_clock_description, |
| 273 | IntSetting.RENDERER_FORCE_MAX_CLOCK.key, | 293 | IntSetting.RENDERER_FORCE_MAX_CLOCK.key, |
| 274 | true | 294 | IntSetting.RENDERER_FORCE_MAX_CLOCK.defaultValue |
| 275 | ) | 295 | ) |
| 276 | ) | 296 | ) |
| 277 | add( | 297 | add( |
| @@ -280,7 +300,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 280 | R.string.renderer_asynchronous_shaders, | 300 | R.string.renderer_asynchronous_shaders, |
| 281 | R.string.renderer_asynchronous_shaders_description, | 301 | R.string.renderer_asynchronous_shaders_description, |
| 282 | IntSetting.RENDERER_ASYNCHRONOUS_SHADERS.key, | 302 | IntSetting.RENDERER_ASYNCHRONOUS_SHADERS.key, |
| 283 | false | 303 | IntSetting.RENDERER_ASYNCHRONOUS_SHADERS.defaultValue |
| 284 | ) | 304 | ) |
| 285 | ) | 305 | ) |
| 286 | add( | 306 | add( |
| @@ -289,7 +309,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 289 | R.string.renderer_debug, | 309 | R.string.renderer_debug, |
| 290 | R.string.renderer_debug_description, | 310 | R.string.renderer_debug_description, |
| 291 | IntSetting.RENDERER_DEBUG.key, | 311 | IntSetting.RENDERER_DEBUG.key, |
| 292 | false | 312 | IntSetting.RENDERER_DEBUG.defaultValue |
| 293 | ) | 313 | ) |
| 294 | ) | 314 | ) |
| 295 | } | 315 | } |
| @@ -306,7 +326,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 306 | 100, | 326 | 100, |
| 307 | "%", | 327 | "%", |
| 308 | IntSetting.AUDIO_VOLUME.key, | 328 | IntSetting.AUDIO_VOLUME.key, |
| 309 | 100 | 329 | IntSetting.AUDIO_VOLUME.defaultValue |
| 310 | ) | 330 | ) |
| 311 | ) | 331 | ) |
| 312 | } | 332 | } |
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 fb0c6c9e5..b101a790d 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 | |||
| @@ -5,10 +5,14 @@ package org.yuzu.yuzu_emu.features.settings.ui.viewholder | |||
| 5 | 5 | ||
| 6 | import android.view.View | 6 | import android.view.View |
| 7 | import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding | 7 | import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding |
| 8 | import org.yuzu.yuzu_emu.features.settings.model.AbstractStringSetting | ||
| 9 | import org.yuzu.yuzu_emu.features.settings.model.view.DateTimeSetting | 8 | import org.yuzu.yuzu_emu.features.settings.model.view.DateTimeSetting |
| 10 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem | 9 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem |
| 11 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter | 10 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter |
| 11 | import java.time.Instant | ||
| 12 | import java.time.ZoneId | ||
| 13 | import java.time.ZonedDateTime | ||
| 14 | import java.time.format.DateTimeFormatter | ||
| 15 | import java.time.format.FormatStyle | ||
| 12 | 16 | ||
| 13 | class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : | 17 | class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : |
| 14 | SettingViewHolder(binding.root, adapter) { | 18 | SettingViewHolder(binding.root, adapter) { |
| @@ -21,7 +25,11 @@ class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA | |||
| 21 | binding.textSettingDescription.setText(item.descriptionId) | 25 | binding.textSettingDescription.setText(item.descriptionId) |
| 22 | binding.textSettingDescription.visibility = View.VISIBLE | 26 | binding.textSettingDescription.visibility = View.VISIBLE |
| 23 | } else { | 27 | } else { |
| 24 | binding.textSettingDescription.visibility = View.GONE | 28 | val epochTime = setting.value.toLong() |
| 29 | val instant = Instant.ofEpochMilli(epochTime * 1000) | ||
| 30 | val zonedTime = ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")) | ||
| 31 | val dateFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) | ||
| 32 | binding.textSettingDescription.text = dateFormatter.format(zonedTime) | ||
| 25 | } | 33 | } |
| 26 | } | 34 | } |
| 27 | 35 | ||
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt index 9c6515a54..4027df838 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt | |||
| @@ -209,6 +209,13 @@ object SettingsFile { | |||
| 209 | floatSetting.float = value.toFloat() | 209 | floatSetting.float = value.toFloat() |
| 210 | return floatSetting | 210 | return floatSetting |
| 211 | } | 211 | } |
| 212 | |||
| 213 | val stringSetting = StringSetting.from(key) | ||
| 214 | if (stringSetting != null) { | ||
| 215 | stringSetting.string = value | ||
| 216 | return stringSetting | ||
| 217 | } | ||
| 218 | |||
| 212 | return StringSetting.from(key) | 219 | return StringSetting.from(key) |
| 213 | } | 220 | } |
| 214 | 221 | ||
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index f6d742206..cd93bfc38 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml | |||
| @@ -114,6 +114,9 @@ | |||
| 114 | <string name="emulated_language">Emulated language</string> | 114 | <string name="emulated_language">Emulated language</string> |
| 115 | <string name="select_rtc_date">Select RTC Date</string> | 115 | <string name="select_rtc_date">Select RTC Date</string> |
| 116 | <string name="select_rtc_time">Select RTC Time</string> | 116 | <string name="select_rtc_time">Select RTC Time</string> |
| 117 | <string name="use_custom_rtc">Enable Custom RTC</string> | ||
| 118 | <string name="use_custom_rtc_description">This setting allows you to set a custom real time clock separate from your current system time</string> | ||
| 119 | <string name="set_custom_rtc">Set Custom RTC</string> | ||
| 117 | 120 | ||
| 118 | <!-- Graphics settings strings --> | 121 | <!-- Graphics settings strings --> |
| 119 | <string name="renderer_api">API</string> | 122 | <string name="renderer_api">API</string> |