From 66ea72e5b30a3e5ce567a34ec01f009f3edd2645 Mon Sep 17 00:00:00 2001 From: DaneEvans Date: Wed, 13 Aug 2025 08:03:00 +1000 Subject: [PATCH] add access. labels to node chips (#2688) --- .../geeksville/mesh/ui/contact/ContactItem.kt | 7 ++- .../mesh/ui/node/components/NodeChip.kt | 51 +++++++++---------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/contact/ContactItem.kt b/app/src/main/java/com/geeksville/mesh/ui/contact/ContactItem.kt index 07548fff3..65ffa28fb 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/contact/ContactItem.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/contact/ContactItem.kt @@ -42,6 +42,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.contentDescription +import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow @@ -70,7 +72,8 @@ fun ContactItem( .combinedClickable(onClick = onClick, onLongClick = onLongClick) .background(color = if (selected) Color.Gray else MaterialTheme.colorScheme.background) .fillMaxWidth() - .padding(horizontal = 8.dp, vertical = 6.dp), + .padding(horizontal = 8.dp, vertical = 6.dp) + .semantics { contentDescription = shortName }, shape = RoundedCornerShape(12.dp), ) { val colors = @@ -86,7 +89,7 @@ fun ContactItem( Row(modifier = Modifier.fillMaxWidth().padding(8.dp), verticalAlignment = Alignment.CenterVertically) { AssistChip( onClick = onNodeChipClick, - modifier = Modifier.padding(end = 8.dp).width(72.dp), + modifier = Modifier.padding(end = 8.dp).width(72.dp).semantics { contentDescription = shortName }, label = { Text( text = shortName, diff --git a/app/src/main/java/com/geeksville/mesh/ui/node/components/NodeChip.kt b/app/src/main/java/com/geeksville/mesh/ui/node/components/NodeChip.kt index a129e39de..fd903c917 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/node/components/NodeChip.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/node/components/NodeChip.kt @@ -35,6 +35,8 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.semantics.contentDescription +import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.tooling.preview.Preview @@ -58,18 +60,19 @@ fun NodeChip( val inputChipInteractionSource = remember { MutableInteractionSource() } Box { ElevatedAssistChip( - modifier = modifier - .width(IntrinsicSize.Min) - .defaultMinSize(minWidth = 72.dp), + modifier = + modifier.width(IntrinsicSize.Min).defaultMinSize(minWidth = 72.dp).semantics { + contentDescription = node.user.shortName.ifEmpty { "Node" } + }, elevation = AssistChipDefaults.elevatedAssistChipElevation(), - colors = AssistChipDefaults.elevatedAssistChipColors( + colors = + AssistChipDefaults.elevatedAssistChipColors( containerColor = Color(nodeColor), labelColor = Color(textColor), ), label = { Text( - modifier = Modifier - .fillMaxWidth(), + modifier = Modifier.fillMaxWidth(), text = node.user.shortName.ifEmpty { "???" }, fontSize = MaterialTheme.typography.labelLarge.fontSize, textDecoration = TextDecoration.LineThrough.takeIf { isIgnored }, @@ -81,14 +84,15 @@ fun NodeChip( interactionSource = inputChipInteractionSource, ) Box( - modifier = Modifier - .matchParentSize() + modifier = + Modifier.matchParentSize() .combinedClickable( onClick = { onAction(NodeMenuAction.MoreDetails(node)) }, onLongClick = { menuExpanded = true }, interactionSource = inputChipInteractionSource, indication = null, ) + .semantics { contentDescription = node.user.shortName.ifEmpty { "Node" } }, ) } NodeMenu( @@ -99,7 +103,7 @@ fun NodeChip( onAction = { menuExpanded = false onAction(it) - } + }, ) } @@ -107,22 +111,15 @@ fun NodeChip( @Preview @Composable fun NodeChipPreview() { - val user = MeshProtos.User.newBuilder() - .setShortName("\uD83E\uDEE0") - .setLongName("John Doe") - .build() - val node = Node( - num = 13444, - user = user, - isIgnored = false, - paxcounter = PaxcountProtos.Paxcount.newBuilder().setBle(10).setWifi(5).build(), - environmentMetrics = TelemetryProtos.EnvironmentMetrics.newBuilder().setTemperature(25f) - .setRelativeHumidity(60f).build() - ) - NodeChip( - node = node, - isThisNode = false, - isConnected = true, - onAction = {} - ) + val user = MeshProtos.User.newBuilder().setShortName("\uD83E\uDEE0").setLongName("John Doe").build() + val node = + Node( + num = 13444, + user = user, + isIgnored = false, + paxcounter = PaxcountProtos.Paxcount.newBuilder().setBle(10).setWifi(5).build(), + environmentMetrics = + TelemetryProtos.EnvironmentMetrics.newBuilder().setTemperature(25f).setRelativeHumidity(60f).build(), + ) + NodeChip(node = node, isThisNode = false, isConnected = true, onAction = {}) }