Merge "[Spa] Migrate from deprecated ClickableText" into main
diff --git a/packages/SettingsLib/Spa/build.gradle.kts b/packages/SettingsLib/Spa/build.gradle.kts
index 4147813..e7823df 100644
--- a/packages/SettingsLib/Spa/build.gradle.kts
+++ b/packages/SettingsLib/Spa/build.gradle.kts
@@ -29,7 +29,7 @@
allprojects {
extra["androidTop"] = androidTop
- extra["jetpackComposeVersion"] = "1.7.0-alpha05"
+ extra["jetpackComposeVersion"] = "1.7.0-alpha08"
}
subprojects {
diff --git a/packages/SettingsLib/Spa/spa/build.gradle.kts b/packages/SettingsLib/Spa/spa/build.gradle.kts
index 6344501..4aa57b3 100644
--- a/packages/SettingsLib/Spa/spa/build.gradle.kts
+++ b/packages/SettingsLib/Spa/spa/build.gradle.kts
@@ -53,17 +53,17 @@
dependencies {
api(project(":SettingsLibColor"))
- api("androidx.appcompat:appcompat:1.7.0-alpha03")
+ api("androidx.appcompat:appcompat:1.7.0-beta01")
api("androidx.slice:slice-builders:1.1.0-alpha02")
api("androidx.slice:slice-core:1.1.0-alpha02")
api("androidx.slice:slice-view:1.1.0-alpha02")
- api("androidx.compose.material3:material3:1.3.0-alpha03")
+ api("androidx.compose.material3:material3:1.3.0-alpha06")
api("androidx.compose.material:material-icons-extended:$jetpackComposeVersion")
api("androidx.compose.runtime:runtime-livedata:$jetpackComposeVersion")
api("androidx.compose.ui:ui-tooling-preview:$jetpackComposeVersion")
api("androidx.lifecycle:lifecycle-livedata-ktx")
api("androidx.lifecycle:lifecycle-runtime-compose")
- api("androidx.navigation:navigation-compose:2.8.0-alpha05")
+ api("androidx.navigation:navigation-compose:2.8.0-alpha08")
api("com.github.PhilJay:MPAndroidChart:v3.1.0-alpha")
api("com.google.android.material:material:1.11.0")
debugApi("androidx.compose.ui:ui-tooling:$jetpackComposeVersion")
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/AnnotatedStringResource.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/AnnotatedStringResource.kt
index 88ba4b0..1a10bf0 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/AnnotatedStringResource.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/AnnotatedStringResource.kt
@@ -27,14 +27,13 @@
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.AnnotatedString
+import androidx.compose.ui.text.LinkAnnotation
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextDecoration
-const val URL_SPAN_TAG = "URL_SPAN_TAG"
-
@Composable
fun annotatedStringResource(@StringRes id: Int): AnnotatedString {
val resources = LocalContext.current.resources
@@ -97,12 +96,9 @@
start: Int,
end: Int,
) {
- addStyle(
- SpanStyle(color = urlSpanColor, textDecoration = TextDecoration.Underline),
- start,
- end,
+ val url = LinkAnnotation.Url(
+ url = urlSpan.url,
+ style = SpanStyle(color = urlSpanColor, textDecoration = TextDecoration.Underline),
)
- if (!urlSpan.url.isNullOrEmpty()) {
- addStringAnnotation(URL_SPAN_TAG, urlSpan.url, start, end)
- }
+ addLink(url, start, end)
}
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/AnnotatedText.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/AnnotatedText.kt
index 82ac7e3..f864fa9 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/AnnotatedText.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/AnnotatedText.kt
@@ -17,26 +17,17 @@
package com.android.settingslib.spa.widget.ui
import androidx.annotation.StringRes
-import androidx.compose.foundation.text.ClickableText
import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
-import androidx.compose.ui.platform.LocalUriHandler
-import com.android.settingslib.spa.framework.util.URL_SPAN_TAG
import com.android.settingslib.spa.framework.util.annotatedStringResource
@Composable
fun AnnotatedText(@StringRes id: Int) {
- val uriHandler = LocalUriHandler.current
- val annotatedString = annotatedStringResource(id)
- ClickableText(
- text = annotatedString,
+ Text(
+ text = annotatedStringResource(id),
style = MaterialTheme.typography.bodyMedium.copy(
color = MaterialTheme.colorScheme.onSurfaceVariant,
),
- ) { offset ->
- // Gets the url at the clicked position.
- annotatedString.getStringAnnotations(URL_SPAN_TAG, offset, offset)
- .firstOrNull()
- ?.let { uriHandler.openUri(it.item) }
- }
+ )
}
diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/util/AnnotatedStringResourceTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/util/AnnotatedStringResourceTest.kt
index 9928355..612f9e5 100644
--- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/util/AnnotatedStringResourceTest.kt
+++ b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/util/AnnotatedStringResourceTest.kt
@@ -19,6 +19,7 @@
import androidx.compose.material3.MaterialTheme
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.text.AnnotatedString
+import androidx.compose.ui.text.LinkAnnotation
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.font.FontWeight
@@ -36,18 +37,23 @@
val composeTestRule = createComposeRule()
@Test
- fun testAnnotatedStringResource() {
+ fun annotatedStringResource() {
composeTestRule.setContent {
val annotatedString =
annotatedStringResource(R.string.test_annotated_string_resource)
- val annotations = annotatedString.getStringAnnotations(0, annotatedString.length)
+ val annotations = annotatedString.getLinkAnnotations(0, annotatedString.length)
assertThat(annotations).containsExactly(
AnnotatedString.Range(
- item = "https://www.android.com/",
+ item = LinkAnnotation.Url(
+ url = "https://www.android.com/",
+ style = SpanStyle(
+ color = MaterialTheme.colorScheme.primary,
+ textDecoration = TextDecoration.Underline,
+ ),
+ ),
start = 31,
end = 35,
- tag = URL_SPAN_TAG,
)
)
@@ -57,14 +63,6 @@
start = 22,
end = 26,
),
- AnnotatedString.Range(
- item = SpanStyle(
- color = MaterialTheme.colorScheme.primary,
- textDecoration = TextDecoration.Underline,
- ),
- start = 31,
- end = 35,
- ),
)
}
}