summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
author Matt Casey <mrcasey@google.com> 2024-05-22 17:46:27 +0000
committer Matt Casey <mrcasey@google.com> 2024-05-22 17:57:19 +0000
commit5129b5fe7cee819811d0fd166176e54ca139cd82 (patch)
tree865b8a087a3f92294a2a6a6c7c64ec32694523b8 /java/src
parent25c04565081fd8643e04f88e004fc09ac1c73ff3 (diff)
Content description fixes for shareousel
- Remove hard-coded descriptions. - Describe items based upon content type. - Switch from clickable to toggleable to get accessibility state descriptions. Bug: 328791503 Test: Manual testing with talkback. Flag: android.service.chooser.chooser_payload_toggling Change-Id: Ia5fe1b08015a1f7a9bd0a386b5318f871dde33be
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt4
-rw-r--r--java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt17
2 files changed, 17 insertions, 4 deletions
diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt
index f33558c7..0efaa3bb 100644
--- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt
+++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt
@@ -58,7 +58,7 @@ fun ShareouselCard(
private fun AnimationIcon(modifier: Modifier = Modifier) {
Icon(
painterResource(id = R.drawable.ic_play_circle_filled_24px),
- "animating",
+ contentDescription = null, // Video attribute described at a higher level.
tint = Color.White,
modifier = Modifier.size(20.dp).then(modifier)
)
@@ -71,7 +71,7 @@ private fun SelectionIcon(selected: Boolean, modifier: Modifier = Modifier) {
Icon(
painter = painterResource(id = R.drawable.checkbox),
tint = Color.White,
- contentDescription = "selected",
+ contentDescription = null,
modifier =
Modifier.shadow(
elevation = 50.dp,
diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt
index 85ad6ab3..32aa7eee 100644
--- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt
+++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt
@@ -18,7 +18,6 @@ package com.android.intentresolver.contentpreview.payloadtoggle.ui.composable
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border
-import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@@ -34,6 +33,7 @@ import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.lazy.rememberLazyListState
+import androidx.compose.foundation.selection.toggleable
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.AssistChip
import androidx.compose.material3.AssistChipDefaults
@@ -49,6 +49,9 @@ import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.dimensionResource
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.semantics.contentDescription
+import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.intentresolver.R
@@ -113,6 +116,12 @@ private fun ShareouselCard(viewModel: ShareouselPreviewViewModel) {
viewModel.contentType.collectAsStateWithLifecycle(initialValue = ContentType.Image)
val borderColor = MaterialTheme.colorScheme.primary
val scope = rememberCoroutineScope()
+ val contentDescription =
+ when (contentType) {
+ ContentType.Image -> stringResource(R.string.selectable_image)
+ ContentType.Video -> stringResource(R.string.selectable_video)
+ else -> stringResource(R.string.selectable_item)
+ }
ShareouselCard(
image = {
// TODO: max ratio is actually equal to the viewport ratio
@@ -140,8 +149,12 @@ private fun ShareouselCard(viewModel: ShareouselPreviewViewModel) {
shape = RoundedCornerShape(size = 12.dp),
)
}
+ .semantics { this.contentDescription = contentDescription }
.clip(RoundedCornerShape(size = 12.dp))
- .clickable { scope.launch { viewModel.setSelected(!selected) } },
+ .toggleable(
+ value = selected,
+ onValueChange = { scope.launch { viewModel.setSelected(it) } },
+ )
)
}