Add standalone SpannedHelper

This commit is contained in:
tarsin committed 2023-06-04 16:43:01 +08:00
1 parent e25227e39d
commit 4ec58a0f62
2 files changed
+20 -17

No files matched your search

@@ -1,8 +1,6 @@
package com.hippo.ehviewer.ui.settings
import android.text.Html
import android.text.Spanned
import android.text.style.StrikethroughSpan
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
@@ -18,10 +16,6 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.style.TextDecoration
import com.hippo.ehviewer.BuildConfig
import com.hippo.ehviewer.R
import com.hippo.ehviewer.ui.login.LocalNavController
@@ -46,17 +40,6 @@ fun AboutScreen() {
Column(modifier = Modifier.padding(it).nestedScroll(scrollBehavior.nestedScrollConnection)) {
Preference(title = stringResource(id = R.string.settings_about_declaration), summary = stringResource(id = R.string.settings_about_declaration_summary))
val author = stringResource(R.string.settings_about_author_summary).replace('$', '@').let {
fun Spanned.toAnnotatedString(): AnnotatedString = buildAnnotatedString {
val spanned = this@toAnnotatedString
append(spanned.toString())
getSpans(0, spanned.length, Any::class.java).forEach { span ->
val start = getSpanStart(span)
val end = getSpanEnd(span)
when (span) {
is StrikethroughSpan -> addStyle(SpanStyle(textDecoration = TextDecoration.LineThrough), start, end)
}
}
}
remember { Html.fromHtml(it, Html.FROM_HTML_MODE_LEGACY).toAnnotatedString() }
}
HtmlPreference(title = stringResource(id = R.string.settings_about_author), summary = author)
@@ -0,0 +1,20 @@
package com.hippo.ehviewer.ui.settings
import android.text.Spanned
import android.text.style.StrikethroughSpan
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.style.TextDecoration
fun Spanned.toAnnotatedString(): AnnotatedString = buildAnnotatedString {
val spanned = this@toAnnotatedString
append(spanned.toString())
getSpans(0, spanned.length, Any::class.java).forEach { span ->
val start = getSpanStart(span)
val end = getSpanEnd(span)
when (span) {
is StrikethroughSpan -> addStyle(SpanStyle(textDecoration = TextDecoration.LineThrough), start, end)
}
}
}