From 28ffdd53a09603536d1dc53ab98f80c0f7190952 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Sat, 6 May 2023 18:25:19 -0400 Subject: [PATCH] Improve subtitle handling --- .../more/settings/PreferenceItem.kt | 8 -- .../more/settings/PreferenceModel.kt | 25 ++---- .../settings/screen/SettingsAdvancedScreen.kt | 4 +- .../settings/widget/SwitchPreferenceWidget.kt | 2 +- .../settings/widget/TextPreferenceWidget.kt | 77 ++++++------------- 5 files changed, 31 insertions(+), 85 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/PreferenceItem.kt b/app/src/main/java/eu/kanade/presentation/more/settings/PreferenceItem.kt index c346c06e0..0cd040c12 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/PreferenceItem.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/PreferenceItem.kt @@ -201,14 +201,6 @@ internal fun PreferenceItem( }, ) } - is Preference.PreferenceItem.AnnotatedTextPreference -> { - TextPreferenceWidget( - title = item.title, - subtitle = item.annotatedSubtitle, - icon = item.icon, - onPreferenceClick = item.onClick, - ) - } // SY <-- } } diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/PreferenceModel.kt b/app/src/main/java/eu/kanade/presentation/more/settings/PreferenceModel.kt index ce5f98e64..8f35aba0f 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/PreferenceModel.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/PreferenceModel.kt @@ -4,7 +4,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.AnnotatedString import eu.kanade.domain.ui.model.AppTheme import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.track.TrackService @@ -15,7 +14,10 @@ sealed class Preference { abstract val enabled: Boolean sealed class PreferenceItem : Preference() { - abstract val subtitle: String? + // SY --> + abstract val subtitle: CharSequence? + + // SY <-- abstract val icon: ImageVector? abstract val onValueChanged: suspend (newValue: T) -> Boolean @@ -24,7 +26,7 @@ sealed class Preference { */ data class TextPreference( override val title: String, - override val subtitle: String? = null, + override val subtitle: CharSequence? = null, override val icon: ImageVector? = null, override val enabled: Boolean = true, override val onValueChanged: suspend (newValue: String) -> Boolean = { true }, @@ -38,7 +40,7 @@ sealed class Preference { data class SwitchPreference( val pref: PreferenceData, override val title: String, - override val subtitle: String? = null, + override val subtitle: CharSequence? = null, override val icon: ImageVector? = null, override val enabled: Boolean = true, override val onValueChanged: suspend (newValue: Boolean) -> Boolean = { true }, @@ -171,21 +173,6 @@ sealed class Preference { override val icon: ImageVector? = null override val onValueChanged: suspend (newValue: String) -> Boolean = { true } } - - /** - * A basic [PreferenceItem] that only displays texts. - */ - data class AnnotatedTextPreference( - override val title: String, - val annotatedSubtitle: AnnotatedString, - override val icon: ImageVector? = null, - override val enabled: Boolean = true, - override val onValueChanged: suspend (newValue: String) -> Boolean = { true }, - - val onClick: (() -> Unit)? = null, - ) : PreferenceItem() { - override val subtitle: String = annotatedSubtitle.text - } // SY <-- } diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt index 1609661ae..c8d5a2add 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt @@ -723,9 +723,9 @@ object SettingsAdvancedScreen : SearchableSettings { stringResource(R.string.app_name), ), ), - Preference.PreferenceItem.AnnotatedTextPreference( + Preference.PreferenceItem.TextPreference( title = stringResource(R.string.open_debug_menu), - annotatedSubtitle = remember { + subtitle = remember { HtmlCompat.fromHtml(context.getString(R.string.open_debug_menu_summary), HtmlCompat.FROM_HTML_MODE_COMPACT) .toAnnotatedString() }, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/widget/SwitchPreferenceWidget.kt b/app/src/main/java/eu/kanade/presentation/more/settings/widget/SwitchPreferenceWidget.kt index 7de5c68d3..ea493d9ba 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/widget/SwitchPreferenceWidget.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/widget/SwitchPreferenceWidget.kt @@ -16,7 +16,7 @@ import tachiyomi.presentation.core.util.ThemePreviews fun SwitchPreferenceWidget( modifier: Modifier = Modifier, title: String, - subtitle: String? = null, + subtitle: CharSequence? = null, icon: ImageVector? = null, checked: Boolean = false, onCheckedChanged: (Boolean) -> Unit, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/widget/TextPreferenceWidget.kt b/app/src/main/java/eu/kanade/presentation/more/settings/widget/TextPreferenceWidget.kt index cf1ad09bb..04dcbe5ce 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/widget/TextPreferenceWidget.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/widget/TextPreferenceWidget.kt @@ -16,7 +16,6 @@ import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.withStyle -import androidx.compose.ui.tooling.preview.Preview import eu.kanade.presentation.theme.TachiyomiTheme import tachiyomi.presentation.core.util.ThemePreviews import tachiyomi.presentation.core.util.secondaryItemAlpha @@ -25,7 +24,7 @@ import tachiyomi.presentation.core.util.secondaryItemAlpha fun TextPreferenceWidget( modifier: Modifier = Modifier, title: String? = null, - subtitle: String? = null, + subtitle: CharSequence? = null, icon: ImageVector? = null, iconTint: Color = MaterialTheme.colorScheme.primary, widget: @Composable (() -> Unit)? = null, @@ -36,14 +35,27 @@ fun TextPreferenceWidget( title = title, subcomponent = if (!subtitle.isNullOrBlank()) { { - Text( - text = subtitle, - modifier = Modifier - .padding(horizontal = PrefsHorizontalPadding) - .secondaryItemAlpha(), - style = MaterialTheme.typography.bodySmall, - maxLines = 10, - ) + // SY --> + if (subtitle is AnnotatedString) { + Text( + text = subtitle, + modifier = Modifier + .padding(horizontal = PrefsHorizontalPadding) + .secondaryItemAlpha(), + style = MaterialTheme.typography.bodySmall, + maxLines = 10, + ) + } else { + // SY <-- + Text( + text = subtitle.toString(), + modifier = Modifier + .padding(horizontal = PrefsHorizontalPadding) + .secondaryItemAlpha(), + style = MaterialTheme.typography.bodySmall, + maxLines = 10, + ) + } } } else { null @@ -64,51 +76,6 @@ fun TextPreferenceWidget( ) } -// SY --> -@Composable -fun TextPreferenceWidget( - modifier: Modifier = Modifier, - title: String? = null, - subtitle: AnnotatedString?, - icon: ImageVector? = null, - iconTint: Color = MaterialTheme.colorScheme.primary, - widget: @Composable (() -> Unit)? = null, - onPreferenceClick: (() -> Unit)? = null, -) { - BasePreferenceWidget( - modifier = modifier, - title = title, - subcomponent = if (!subtitle.isNullOrBlank()) { - { - Text( - text = subtitle, - modifier = Modifier - .padding(horizontal = PrefsHorizontalPadding) - .secondaryItemAlpha(), - style = MaterialTheme.typography.bodySmall, - maxLines = 10, - ) - } - } else { - null - }, - icon = if (icon != null) { - { - Icon( - imageVector = icon, - tint = iconTint, - contentDescription = null, - ) - } - } else { - null - }, - onClick = onPreferenceClick, - widget = widget, - ) -} -// SY <-- - @ThemePreviews @Composable private fun TextPreferenceWidgetPreview() {