Rename Preference.enabled to visible to correctly reflect usage

This commit is contained in:
AntsyLich
2026-10-02 10:23:07 +06:00
parent 9409740d7e
commit 9abc830769
10 changed files with 39 additions and 39 deletions
@@ -11,7 +11,7 @@ import tachiyomi.core.common.preference.Preference as PreferenceData
sealed class Preference {
abstract val title: String
abstract val enabled: Boolean
abstract val visible: Boolean
sealed class PreferenceItem<T, R> : Preference() {
abstract val subtitle: String?
@@ -24,7 +24,7 @@ sealed class Preference {
data class TextPreference(
override val title: String,
override val subtitle: String? = null,
override val enabled: Boolean = true,
override val visible: Boolean = true,
val widget: @Composable (() -> Unit)? = null,
val onClick: (() -> Unit)? = null,
) : PreferenceItem<String, Unit>() {
@@ -39,7 +39,7 @@ sealed class Preference {
val preference: PreferenceData<Boolean>,
override val title: String,
override val subtitle: String? = null,
override val enabled: Boolean = true,
override val visible: Boolean = true,
override val onValueChanged: suspend (value: Boolean) -> Boolean = { true },
) : PreferenceItem<Boolean, Boolean>() {
override val icon: ImageVector? = null
@@ -55,7 +55,7 @@ sealed class Preference {
val valueText: @Composable (Int) -> String = { it.toString() },
val valueRange: IntProgression = 0..1,
@IntRange(from = 0) val steps: Int = with(valueRange) { ((last - first) / step) - 1 },
override val enabled: Boolean = true,
override val visible: Boolean = true,
override val onValueChanged: suspend (value: Int) -> Boolean = { true },
) : PreferenceItem<Int, Boolean>() {
override val icon: ImageVector? = null
@@ -73,7 +73,7 @@ sealed class Preference {
val subtitleProvider: @Composable (value: T, entries: Map<T, String>) -> String? =
{ v, e -> subtitle?.format(e[v]) },
override val icon: ImageVector? = null,
override val enabled: Boolean = true,
override val visible: Boolean = true,
override val onValueChanged: suspend (value: T) -> Boolean = { true },
) : PreferenceItem<T, Boolean>() {
internal fun internalSet(value: Any) = preference.set(value as T)
@@ -95,7 +95,7 @@ sealed class Preference {
val subtitleProvider: @Composable (value: String, entries: Map<String, String>) -> String? =
{ v, e -> subtitle?.format(e[v]) },
override val icon: ImageVector? = null,
override val enabled: Boolean = true,
override val visible: Boolean = true,
override val onValueChanged: suspend (value: String) -> Unit = {},
) : PreferenceItem<String, Unit>()
@@ -120,7 +120,7 @@ sealed class Preference {
subtitle?.format(combined)
},
override val icon: ImageVector? = null,
override val enabled: Boolean = true,
override val visible: Boolean = true,
override val onValueChanged: suspend (value: Set<T>) -> Boolean = { true },
) : PreferenceItem<Set<T>, Boolean>() {
internal fun internalSet(value: Set<Any?>) = preference.set(value as Set<T>)
@@ -138,7 +138,7 @@ sealed class Preference {
val preference: PreferenceData<String>,
override val title: String,
override val subtitle: String? = "%s",
override val enabled: Boolean = true,
override val visible: Boolean = true,
override val onValueChanged: suspend (value: String) -> Boolean = { true },
) : PreferenceItem<String, Boolean>() {
override val icon: ImageVector? = null
@@ -153,7 +153,7 @@ sealed class Preference {
val logout: () -> Unit,
) : PreferenceItem<String, Unit>() {
override val title: String = ""
override val enabled: Boolean = true
override val visible: Boolean = true
override val subtitle: String? = null
override val icon: ImageVector? = null
override val onValueChanged: suspend (value: String) -> Unit = {}
@@ -162,7 +162,7 @@ sealed class Preference {
data class InfoPreference(
override val title: String,
) : PreferenceItem<String, Unit>() {
override val enabled: Boolean = true
override val visible: Boolean = true
override val subtitle: String? = null
override val icon: ImageVector? = null
override val onValueChanged: suspend (value: String) -> Unit = {}
@@ -172,7 +172,7 @@ sealed class Preference {
override val title: String,
val content: @Composable () -> Unit,
) : PreferenceItem<Unit, Unit>() {
override val enabled: Boolean = true
override val visible: Boolean = true
override val subtitle: String? = null
override val icon: ImageVector? = null
override val onValueChanged: suspend (value: Unit) -> Unit = {}
@@ -181,7 +181,7 @@ sealed class Preference {
data class PreferenceGroup(
override val title: String,
override val enabled: Boolean = true,
override val visible: Boolean = true,
val preferenceItems: List<PreferenceItem<out Any, out Any>>,
) : Preference()
@@ -45,7 +45,7 @@ fun StatusWrapper(
highlightKey: String?,
content: @Composable () -> Unit,
) {
val enabled = item.enabled
val enabled = item.visible
val highlighted = item.title == highlightKey
AnimatedVisibility(
visible = enabled,
@@ -50,7 +50,7 @@ fun PreferenceScreen(
when (preference) {
// Create Preference Group
is Preference.PreferenceGroup -> {
if (!preference.enabled) return@fastForEachIndexed
if (!preference.visible) return@fastForEachIndexed
item {
Column {
@@ -267,7 +267,7 @@ object SettingsAdvancedScreen : SearchableSettings {
),
Preference.PreferenceItem.TextPreference(
title = stringResource(MR.strings.pref_reset_user_agent_string),
enabled = remember(userAgent) { userAgent != userAgentPref.defaultValue() },
visible = remember(userAgent) { userAgent != userAgentPref.defaultValue() },
onClick = {
userAgentPref.delete()
context.toast(MR.strings.requires_app_restart)
@@ -85,7 +85,7 @@ object SettingsAppearanceScreen : SearchableSettings {
Preference.PreferenceItem.SwitchPreference(
preference = amoledPref,
title = stringResource(MR.strings.pref_dark_theme_pure_black),
enabled = themeMode != ThemeMode.LIGHT,
visible = themeMode != ThemeMode.LIGHT,
onValueChanged = {
(context as? Activity)?.let { ActivityCompat.recreate(it) }
true
@@ -162,7 +162,7 @@ object SettingsDownloadScreen : SearchableSettings {
Preference.PreferenceItem.SwitchPreference(
preference = downloadNewUnreadChaptersOnlyPref,
title = stringResource(MR.strings.pref_download_new_unread_chapters_only),
enabled = downloadNewChapters,
visible = downloadNewChapters,
),
Preference.PreferenceItem.TextPreference(
title = stringResource(MR.strings.categories),
@@ -171,7 +171,7 @@ object SettingsDownloadScreen : SearchableSettings {
included = included,
excluded = excluded,
),
enabled = downloadNewChapters,
visible = downloadNewChapters,
onClick = { showDialog = true },
),
),
@@ -168,7 +168,7 @@ object SettingsLibraryScreen : SearchableSettings {
),
title = stringResource(MR.strings.pref_library_update_restriction),
subtitle = stringResource(MR.strings.restrictions),
enabled = autoUpdateInterval > 0,
visible = autoUpdateInterval > 0,
onValueChanged = {
// Post to event looper to allow the preference to be updated.
ContextCompat.getMainExecutor(context).execute {
@@ -98,7 +98,7 @@ object SettingsReaderScreen : SearchableSettings {
Preference.PreferenceItem.SwitchPreference(
preference = readerPreferences.drawUnderCutout,
title = stringResource(MR.strings.pref_cutout_short),
enabled = LocalView.current.hasDisplayCutout() && fullscreen,
visible = LocalView.current.hasDisplayCutout() && fullscreen,
),
Preference.PreferenceItem.SwitchPreference(
preference = readerPreferences.keepScreenOn,
@@ -131,14 +131,14 @@ object SettingsReaderScreen : SearchableSettings {
valueRange = ReaderPreferences.MILLI_CONVERSION.let { it..it * 15 step it },
title = stringResource(MR.strings.pref_flash_duration),
valueText = { stringResource(MR.strings.pref_flash_duration_summary, it) },
enabled = flashPageState,
visible = flashPageState,
),
Preference.PreferenceItem.SliderPreference(
preference = readerPreferences.flashPageInterval,
valueRange = 1..10,
title = stringResource(MR.strings.pref_flash_page_interval),
valueText = { pluralStringResource(MR.plurals.pref_pages, it, it) },
enabled = flashPageState,
visible = flashPageState,
),
Preference.PreferenceItem.ListPreference(
preference = flashColorPref,
@@ -149,7 +149,7 @@ object SettingsReaderScreen : SearchableSettings {
to stringResource(MR.strings.pref_flash_style_white_black),
),
title = stringResource(MR.strings.pref_flash_with),
enabled = flashPageState,
visible = flashPageState,
),
),
)
@@ -212,7 +212,7 @@ object SettingsReaderScreen : SearchableSettings {
)
.associateWith { stringResource(it.titleRes) },
title = stringResource(MR.strings.pref_read_with_tapping_inverted),
enabled = navMode != 5,
visible = navMode != 5,
),
Preference.PreferenceItem.ListPreference(
preference = imageScaleTypePref,
@@ -235,12 +235,12 @@ object SettingsReaderScreen : SearchableSettings {
Preference.PreferenceItem.SwitchPreference(
preference = readerPreferences.landscapeZoom,
title = stringResource(MR.strings.pref_landscape_zoom),
enabled = imageScaleType == 1,
visible = imageScaleType == 1,
),
Preference.PreferenceItem.SwitchPreference(
preference = readerPreferences.navigateToPan,
title = stringResource(MR.strings.pref_navigate_pan),
enabled = navMode != 5,
visible = navMode != 5,
),
Preference.PreferenceItem.SwitchPreference(
preference = dualPageSplitPref,
@@ -254,7 +254,7 @@ object SettingsReaderScreen : SearchableSettings {
preference = readerPreferences.dualPageInvertPaged,
title = stringResource(MR.strings.pref_dual_page_invert),
subtitle = stringResource(MR.strings.pref_dual_page_invert_summary),
enabled = dualPageSplit,
visible = dualPageSplit,
),
Preference.PreferenceItem.SwitchPreference(
preference = rotateToFitPref,
@@ -267,7 +267,7 @@ object SettingsReaderScreen : SearchableSettings {
Preference.PreferenceItem.SwitchPreference(
preference = readerPreferences.dualPageRotateToFitInvert,
title = stringResource(MR.strings.pref_page_rotate_invert),
enabled = rotateToFit,
visible = rotateToFit,
),
),
)
@@ -305,7 +305,7 @@ object SettingsReaderScreen : SearchableSettings {
)
.associateWith { stringResource(it.titleRes) },
title = stringResource(MR.strings.pref_read_with_tapping_inverted),
enabled = navMode != 5,
visible = navMode != 5,
),
Preference.PreferenceItem.SliderPreference(
preference = readerPreferences.webtoonSidePadding,
@@ -341,7 +341,7 @@ object SettingsReaderScreen : SearchableSettings {
preference = readerPreferences.dualPageInvertWebtoon,
title = stringResource(MR.strings.pref_dual_page_invert),
subtitle = stringResource(MR.strings.pref_dual_page_invert_summary),
enabled = dualPageSplit,
visible = dualPageSplit,
),
Preference.PreferenceItem.SwitchPreference(
preference = rotateToFitPref,
@@ -354,7 +354,7 @@ object SettingsReaderScreen : SearchableSettings {
Preference.PreferenceItem.SwitchPreference(
preference = readerPreferences.dualPageRotateToFitInvertWebtoon,
title = stringResource(MR.strings.pref_page_rotate_invert),
enabled = rotateToFit,
visible = rotateToFit,
),
Preference.PreferenceItem.SwitchPreference(
preference = readerPreferences.webtoonDoubleTapZoomEnabled,
@@ -385,7 +385,7 @@ object SettingsReaderScreen : SearchableSettings {
Preference.PreferenceItem.SwitchPreference(
preference = readerPreferences.readWithVolumeKeysInverted,
title = stringResource(MR.strings.pref_read_with_volume_keys_inverted),
enabled = readWithVolumeKeys,
visible = readWithVolumeKeys,
),
Preference.PreferenceItem.MultiSelectListPreference(
preference = readerPreferences.verticalNavigator,
@@ -396,14 +396,14 @@ object SettingsReaderScreen : SearchableSettings {
Preference.PreferenceItem.SwitchPreference(
preference = readerPreferences.verticalNavigatorOnLeft,
title = stringResource(MR.strings.pref_webtoon_vertical_navigator_on_left),
enabled = verticalNavigator.isNotEmpty(),
visible = verticalNavigator.isNotEmpty(),
),
Preference.PreferenceItem.SliderPreference(
preference = readerPreferences.verticalNavigatorHeight,
valueRange = 65..100,
steps = 6,
title = stringResource(MR.strings.pref_vertical_navigator_height),
enabled = verticalNavigator.isNotEmpty(),
visible = verticalNavigator.isNotEmpty(),
),
),
)
@@ -170,14 +170,14 @@ private fun SearchResult(
.flatMap { settingsData ->
settingsData.contents.asSequence()
// Only search from enabled prefs and one with valid title
.filter { it.enabled && it.title.isNotBlank() }
.filter { it.visible && it.title.isNotBlank() }
// Flatten items contained inside *enabled* PreferenceGroup
.flatMap { p ->
when (p) {
is Preference.PreferenceGroup -> {
if (p.enabled) {
if (p.visible) {
p.preferenceItems.asSequence()
.filter { it.enabled && it.title.isNotBlank() }
.filter { it.visible && it.title.isNotBlank() }
.map { p.title to it }
} else {
emptySequence()
@@ -52,7 +52,7 @@ object SettingsSecurityScreen : SearchableSettings {
Preference.PreferenceItem.SwitchPreference(
preference = useAuthPref,
title = stringResource(MR.strings.lock_with_biometrics),
enabled = authSupported,
visible = authSupported,
onValueChanged = {
(context as FragmentActivity).authenticate(
title = context.stringResource(MR.strings.lock_with_biometrics),
@@ -70,7 +70,7 @@ object SettingsSecurityScreen : SearchableSettings {
}
},
title = stringResource(MR.strings.lock_when_idle),
enabled = authSupported && useAuth,
visible = authSupported && useAuth,
onValueChanged = {
(context as FragmentActivity).authenticate(
title = context.stringResource(MR.strings.lock_when_idle),