android: Only use Boolean value type for SwitchSettings (#821)

* android: Only use `Boolean` value type for `SwitchSetting`s

* SwitchSetting.kt: Updated license header
This commit is contained in:
OpenSauce 2025-05-28 18:00:48 +00:00 committed by GitHub
parent f771952e62
commit f3c63abd30
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 86 additions and 108 deletions

View File

@ -27,7 +27,25 @@ enum class BooleanSetting(
OVERLAY_BACKGROUND("overlay_background", Settings.SECTION_LAYOUT, false),
DELAY_START_LLE_MODULES("delay_start_for_lle_modules", Settings.SECTION_DEBUG, true),
DETERMINISTIC_ASYNC_OPERATIONS("deterministic_async_operations", Settings.SECTION_DEBUG, false),
REQUIRED_ONLINE_LLE_MODULES("enable_required_online_lle_modules", Settings.SECTION_SYSTEM, false);
REQUIRED_ONLINE_LLE_MODULES("enable_required_online_lle_modules", Settings.SECTION_SYSTEM, false),
LLE_APPLETS("lle_applets", Settings.SECTION_SYSTEM, false),
NEW_3DS("is_new_3ds", Settings.SECTION_SYSTEM, true),
LINEAR_FILTERING("filter_mode", Settings.SECTION_RENDERER, true),
SHADERS_ACCURATE_MUL("shaders_accurate_mul", Settings.SECTION_RENDERER, false),
DISK_SHADER_CACHE("use_disk_shader_cache", Settings.SECTION_RENDERER, true),
DUMP_TEXTURES("dump_textures", Settings.SECTION_UTILITY, false),
CUSTOM_TEXTURES("custom_textures", Settings.SECTION_UTILITY, false),
ASYNC_CUSTOM_LOADING("async_custom_loading", Settings.SECTION_UTILITY, true),
PRELOAD_TEXTURES("preload_textures", Settings.SECTION_UTILITY, false),
ENABLE_AUDIO_STRETCHING("enable_audio_stretching", Settings.SECTION_AUDIO, true),
ENABLE_REALTIME_AUDIO("enable_realtime_audio", Settings.SECTION_AUDIO, false),
CPU_JIT("use_cpu_jit", Settings.SECTION_CORE, true),
HW_SHADER("use_hw_shader", Settings.SECTION_RENDERER, true),
VSYNC("use_vsync_new", Settings.SECTION_RENDERER, true),
USE_FRAME_LIMIT("use_frame_limit", Settings.SECTION_RENDERER, true),
DEBUG_RENDERER("renderer_debug", Settings.SECTION_DEBUG, false),
DISABLE_RIGHT_EYE_RENDER("disable_right_eye_render", Settings.SECTION_RENDERER, false),
USE_ARTIC_BASE_CONTROLLER("use_artic_base_controller", Settings.SECTION_CONTROLS, false);
override var boolean: Boolean = defaultValue
@ -52,6 +70,14 @@ enum class BooleanSetting(
DELAY_START_LLE_MODULES,
DETERMINISTIC_ASYNC_OPERATIONS,
REQUIRED_ONLINE_LLE_MODULES,
NEW_3DS,
LLE_APPLETS,
VSYNC,
DEBUG_RENDERER,
CPU_JIT,
ASYNC_CUSTOM_LOADING,
SHADERS_ACCURATE_MUL,
USE_ARTIC_BASE_CONTROLLER
)
fun from(key: String): BooleanSetting? =

View File

@ -44,29 +44,12 @@ enum class IntSetting(
PORTRAIT_BOTTOM_WIDTH("custom_portrait_bottom_width",Settings.SECTION_LAYOUT,640),
PORTRAIT_BOTTOM_HEIGHT("custom_portrait_bottom_height",Settings.SECTION_LAYOUT,480),
AUDIO_INPUT_TYPE("input_type", Settings.SECTION_AUDIO, 0),
NEW_3DS("is_new_3ds", Settings.SECTION_SYSTEM, 1),
LLE_APPLETS("lle_applets", Settings.SECTION_SYSTEM, 1),
CPU_CLOCK_SPEED("cpu_clock_percentage", Settings.SECTION_CORE, 100),
LINEAR_FILTERING("filter_mode", Settings.SECTION_RENDERER, 1),
SHADERS_ACCURATE_MUL("shaders_accurate_mul", Settings.SECTION_RENDERER, 0),
DISK_SHADER_CACHE("use_disk_shader_cache", Settings.SECTION_RENDERER, 1),
DUMP_TEXTURES("dump_textures", Settings.SECTION_UTILITY, 0),
CUSTOM_TEXTURES("custom_textures", Settings.SECTION_UTILITY, 0),
ASYNC_CUSTOM_LOADING("async_custom_loading", Settings.SECTION_UTILITY, 1),
PRELOAD_TEXTURES("preload_textures", Settings.SECTION_UTILITY, 0),
ENABLE_AUDIO_STRETCHING("enable_audio_stretching", Settings.SECTION_AUDIO, 1),
ENABLE_REALTIME_AUDIO("enable_realtime_audio", Settings.SECTION_AUDIO, 0),
CPU_JIT("use_cpu_jit", Settings.SECTION_CORE, 1),
HW_SHADER("use_hw_shader", Settings.SECTION_RENDERER, 1),
VSYNC("use_vsync_new", Settings.SECTION_RENDERER, 1),
DEBUG_RENDERER("renderer_debug", Settings.SECTION_DEBUG, 0),
TEXTURE_FILTER("texture_filter", Settings.SECTION_RENDERER, 0),
TEXTURE_SAMPLING("texture_sampling", Settings.SECTION_RENDERER, 0),
USE_FRAME_LIMIT("use_frame_limit", Settings.SECTION_RENDERER, 1),
DELAY_RENDER_THREAD_US("delay_game_render_thread_us", Settings.SECTION_RENDERER, 0),
USE_ARTIC_BASE_CONTROLLER("use_artic_base_controller", Settings.SECTION_CONTROLS, 0),
ORIENTATION_OPTION("screen_orientation", Settings.SECTION_LAYOUT, 2),
DISABLE_RIGHT_EYE_RENDER("disable_right_eye_render", Settings.SECTION_RENDERER, 0),
TURBO_LIMIT("turbo_limit", Settings.SECTION_CORE, 200),
PERFORMANCE_OVERLAY_POSITION("performance_overlay_position", Settings.SECTION_LAYOUT, 0),
ASPECT_RATIO("aspect_ratio", Settings.SECTION_LAYOUT, 0);
@ -90,16 +73,8 @@ enum class IntSetting(
private val NOT_RUNTIME_EDITABLE = listOf(
EMULATED_REGION,
INIT_CLOCK,
NEW_3DS,
LLE_APPLETS,
GRAPHICS_API,
VSYNC,
DEBUG_RENDERER,
CPU_JIT,
ASYNC_CUSTOM_LOADING,
AUDIO_INPUT_TYPE,
USE_ARTIC_BASE_CONTROLLER,
SHADERS_ACCURATE_MUL
)
fun from(key: String): IntSetting? = IntSetting.values().firstOrNull { it.key == key }

View File

@ -1,4 +1,4 @@
// Copyright 2023 Citra Emulator Project
// Copyright Citra Emulator Project / Azahar Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
@ -9,11 +9,11 @@ import org.citra.citra_emu.features.settings.model.AbstractIntSetting
import org.citra.citra_emu.features.settings.model.AbstractSetting
class SwitchSetting(
setting: AbstractSetting,
setting: AbstractBooleanSetting,
titleId: Int,
descriptionId: Int,
val key: String? = null,
val defaultValue: Any? = null,
val defaultValue: Boolean = false,
override var isEnabled: Boolean = true
) : SettingsItem(setting, titleId, descriptionId) {
override val type = TYPE_SWITCH
@ -21,42 +21,19 @@ class SwitchSetting(
val isChecked: Boolean
get() {
if (setting == null) {
return defaultValue as Boolean
return defaultValue
}
// 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
val setting = setting as AbstractBooleanSetting
return setting.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.
* Write a value to the backing boolean.
*
* @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.int = if (checked) 1 else 0
return setting
} catch (_: ClassCastException) {
}
// Try boolean setting
fun setChecked(checked: Boolean): AbstractBooleanSetting {
val setting = setting as AbstractBooleanSetting
setting.boolean = checked
return setting

View File

@ -220,11 +220,11 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
sl.apply {
add(
SwitchSetting(
IntSetting.USE_FRAME_LIMIT,
BooleanSetting.USE_FRAME_LIMIT,
R.string.frame_limit_enable,
R.string.frame_limit_enable_description,
IntSetting.USE_FRAME_LIMIT.key,
IntSetting.USE_FRAME_LIMIT.defaultValue
BooleanSetting.USE_FRAME_LIMIT.key,
BooleanSetting.USE_FRAME_LIMIT.defaultValue
)
)
add(
@ -295,20 +295,20 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
add(HeaderSetting(R.string.emulation_settings))
add(
SwitchSetting(
IntSetting.NEW_3DS,
BooleanSetting.NEW_3DS,
R.string.new_3ds,
0,
IntSetting.NEW_3DS.key,
IntSetting.NEW_3DS.defaultValue
BooleanSetting.NEW_3DS.key,
BooleanSetting.NEW_3DS.defaultValue
)
)
add(
SwitchSetting(
IntSetting.LLE_APPLETS,
BooleanSetting.LLE_APPLETS,
R.string.lle_applets,
0,
IntSetting.LLE_APPLETS.key,
IntSetting.LLE_APPLETS.defaultValue
BooleanSetting.LLE_APPLETS.key,
BooleanSetting.LLE_APPLETS.defaultValue
)
)
add(
@ -788,11 +788,11 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
add(HeaderSetting(R.string.miscellaneous))
add(
SwitchSetting(
IntSetting.USE_ARTIC_BASE_CONTROLLER,
BooleanSetting.USE_ARTIC_BASE_CONTROLLER,
R.string.use_artic_base_controller,
R.string.use_artic_base_controller_description,
IntSetting.USE_ARTIC_BASE_CONTROLLER.key,
IntSetting.USE_ARTIC_BASE_CONTROLLER.defaultValue
BooleanSetting.USE_ARTIC_BASE_CONTROLLER.key,
BooleanSetting.USE_ARTIC_BASE_CONTROLLER.defaultValue
)
)
}
@ -861,29 +861,29 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
)
add(
SwitchSetting(
IntSetting.LINEAR_FILTERING,
BooleanSetting.LINEAR_FILTERING,
R.string.linear_filtering,
R.string.linear_filtering_description,
IntSetting.LINEAR_FILTERING.key,
IntSetting.LINEAR_FILTERING.defaultValue
BooleanSetting.LINEAR_FILTERING.key,
BooleanSetting.LINEAR_FILTERING.defaultValue
)
)
add(
SwitchSetting(
IntSetting.SHADERS_ACCURATE_MUL,
BooleanSetting.ASYNC_SHADERS,
R.string.shaders_accurate_mul,
R.string.shaders_accurate_mul_description,
IntSetting.SHADERS_ACCURATE_MUL.key,
IntSetting.SHADERS_ACCURATE_MUL.defaultValue
BooleanSetting.SHADERS_ACCURATE_MUL.key,
BooleanSetting.SHADERS_ACCURATE_MUL.defaultValue
)
)
add(
SwitchSetting(
IntSetting.DISK_SHADER_CACHE,
BooleanSetting.DISK_SHADER_CACHE,
R.string.use_disk_shader_cache,
R.string.use_disk_shader_cache_description,
IntSetting.DISK_SHADER_CACHE.key,
IntSetting.DISK_SHADER_CACHE.defaultValue
BooleanSetting.DISK_SHADER_CACHE.key,
BooleanSetting.DISK_SHADER_CACHE.defaultValue
)
)
add(
@ -936,11 +936,11 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
)
add(
SwitchSetting(
IntSetting.DISABLE_RIGHT_EYE_RENDER,
BooleanSetting.DISABLE_RIGHT_EYE_RENDER,
R.string.disable_right_eye_render,
R.string.disable_right_eye_render_description,
IntSetting.DISABLE_RIGHT_EYE_RENDER.key,
IntSetting.DISABLE_RIGHT_EYE_RENDER.defaultValue
BooleanSetting.DISABLE_RIGHT_EYE_RENDER.key,
BooleanSetting.DISABLE_RIGHT_EYE_RENDER.defaultValue
)
)
@ -985,29 +985,29 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
add(HeaderSetting(R.string.utility))
add(
SwitchSetting(
IntSetting.DUMP_TEXTURES,
BooleanSetting.DUMP_TEXTURES,
R.string.dump_textures,
R.string.dump_textures_description,
IntSetting.DUMP_TEXTURES.key,
IntSetting.DUMP_TEXTURES.defaultValue
BooleanSetting.DUMP_TEXTURES.key,
BooleanSetting.DUMP_TEXTURES.defaultValue
)
)
add(
SwitchSetting(
IntSetting.CUSTOM_TEXTURES,
BooleanSetting.CUSTOM_TEXTURES,
R.string.custom_textures,
R.string.custom_textures_description,
IntSetting.CUSTOM_TEXTURES.key,
IntSetting.CUSTOM_TEXTURES.defaultValue
BooleanSetting.CUSTOM_TEXTURES.key,
BooleanSetting.CUSTOM_TEXTURES.defaultValue
)
)
add(
SwitchSetting(
IntSetting.ASYNC_CUSTOM_LOADING,
BooleanSetting.ASYNC_CUSTOM_LOADING,
R.string.async_custom_loading,
R.string.async_custom_loading_description,
IntSetting.ASYNC_CUSTOM_LOADING.key,
IntSetting.ASYNC_CUSTOM_LOADING.defaultValue
BooleanSetting.ASYNC_CUSTOM_LOADING.key,
BooleanSetting.ASYNC_CUSTOM_LOADING.defaultValue
)
)
@ -1494,20 +1494,20 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
)
add(
SwitchSetting(
IntSetting.ENABLE_AUDIO_STRETCHING,
BooleanSetting.ENABLE_AUDIO_STRETCHING,
R.string.audio_stretch,
R.string.audio_stretch_description,
IntSetting.ENABLE_AUDIO_STRETCHING.key,
IntSetting.ENABLE_AUDIO_STRETCHING.defaultValue
BooleanSetting.ENABLE_AUDIO_STRETCHING.key,
BooleanSetting.ENABLE_AUDIO_STRETCHING.defaultValue
)
)
add(
SwitchSetting(
IntSetting.ENABLE_REALTIME_AUDIO,
BooleanSetting.ENABLE_REALTIME_AUDIO,
R.string.realtime_audio,
R.string.realtime_audio_description,
IntSetting.ENABLE_REALTIME_AUDIO.key,
IntSetting.ENABLE_REALTIME_AUDIO.defaultValue
BooleanSetting.ENABLE_REALTIME_AUDIO.key,
BooleanSetting.ENABLE_REALTIME_AUDIO.defaultValue
)
)
add(
@ -1562,38 +1562,38 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
)
add(
SwitchSetting(
IntSetting.CPU_JIT,
BooleanSetting.CPU_JIT,
R.string.cpu_jit,
R.string.cpu_jit_description,
IntSetting.CPU_JIT.key,
IntSetting.CPU_JIT.defaultValue
BooleanSetting.CPU_JIT.key,
BooleanSetting.CPU_JIT.defaultValue
)
)
add(
SwitchSetting(
IntSetting.HW_SHADER,
BooleanSetting.HW_SHADER,
R.string.hw_shaders,
R.string.hw_shaders_description,
IntSetting.HW_SHADER.key,
IntSetting.HW_SHADER.defaultValue
BooleanSetting.HW_SHADER.key,
BooleanSetting.HW_SHADER.defaultValue
)
)
add(
SwitchSetting(
IntSetting.VSYNC,
BooleanSetting.VSYNC,
R.string.vsync,
R.string.vsync_description,
IntSetting.VSYNC.key,
IntSetting.VSYNC.defaultValue
BooleanSetting.VSYNC.key,
BooleanSetting.VSYNC.defaultValue
)
)
add(
SwitchSetting(
IntSetting.DEBUG_RENDERER,
BooleanSetting.DEBUG_RENDERER,
R.string.renderer_debug,
R.string.renderer_debug_description,
IntSetting.DEBUG_RENDERER.key,
IntSetting.DEBUG_RENDERER.defaultValue
BooleanSetting.DEBUG_RENDERER.key,
BooleanSetting.DEBUG_RENDERER.defaultValue
)
)
add(