Skip to content

Commit 5d81a02

Browse files
committed
[a11y] Add long click label
1 parent ef8d57d commit 5d81a02

File tree

12 files changed

+66
-15
lines changed

12 files changed

+66
-15
lines changed

features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/RoomSummaryRow.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ private fun RoomSummaryScaffoldRow(
173173
val clickModifier = Modifier.combinedClickable(
174174
onClick = { onClick(room) },
175175
onLongClick = { onLongClick(room) },
176+
onLongClickLabel = stringResource(CommonStrings.action_open_context_menu),
176177
indication = ripple(),
177178
interactionSource = remember { MutableInteractionSource() }
178179
)

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessageStateEventContainer.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ import androidx.compose.runtime.remember
1717
import androidx.compose.ui.Modifier
1818
import androidx.compose.ui.draw.clip
1919
import androidx.compose.ui.graphics.Color
20+
import androidx.compose.ui.res.stringResource
2021
import androidx.compose.ui.unit.dp
2122
import io.element.android.libraries.designsystem.preview.ElementPreview
2223
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
2324
import io.element.android.libraries.designsystem.theme.components.Surface
25+
import io.element.android.libraries.ui.strings.CommonStrings
2426

2527
private val CORNER_RADIUS = 8.dp
2628

@@ -41,6 +43,7 @@ fun MessageStateEventContainer(
4143
.combinedClickable(
4244
onClick = onClick,
4345
onLongClick = onLongClick,
46+
onLongClickLabel = stringResource(CommonStrings.action_open_context_menu),
4447
indication = ripple(),
4548
interactionSource = interactionSource
4649
),

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import io.element.android.libraries.designsystem.theme.components.Surface
5151
import io.element.android.libraries.designsystem.theme.components.Text
5252
import io.element.android.libraries.matrix.api.media.MediaSource
5353
import io.element.android.libraries.matrix.ui.media.MediaRequestData
54+
import io.element.android.libraries.ui.strings.CommonStrings
5455

5556
@Composable
5657
@Suppress("ModifierClickableOrder") // This is needed to display the right ripple shape
@@ -103,6 +104,7 @@ fun MessagesReactionButton(
103104
userAlreadyReacted = content.isHighlighted
104105
)
105106
},
107+
onLongClickLabel = stringResource(CommonStrings.action_open_context_menu),
106108
onLongClick = onLongClick
107109
)
108110
// Inner border, to highlight when selected

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemCallNotifyView.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,12 @@ internal fun TimelineItemCallNotifyView(
5151
modifier = modifier
5252
.fillMaxWidth()
5353
.border(1.dp, ElementTheme.colors.borderInteractiveSecondary, RoundedCornerShape(8.dp))
54-
.combinedClickable(enabled = true, onClick = {}, onLongClick = { onLongClick(event) })
54+
.combinedClickable(
55+
enabled = true,
56+
onClick = {},
57+
onLongClick = { onLongClick(event) },
58+
onLongClickLabel = stringResource(CommonStrings.action_open_context_menu),
59+
)
5560
.padding(12.dp),
5661
horizontalArrangement = Arrangement.spacedBy(12.dp),
5762
verticalAlignment = Alignment.CenterVertically,

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,15 @@ internal fun TimelineItemRow(
145145
// Custom clickable that applies over the whole item for accessibility
146146
.then(
147147
if (isTalkbackActive()) {
148-
Modifier.combinedClickable(
149-
onClick = { onContentClick(timelineItem) },
150-
onLongClick = { onLongClick(timelineItem) }
151-
)
152-
} else {
153-
Modifier
154-
}
155-
),
148+
Modifier.combinedClickable(
149+
onClick = { onContentClick(timelineItem) },
150+
onLongClick = { onLongClick(timelineItem) },
151+
onLongClickLabel = stringResource(CommonStrings.action_open_context_menu),
152+
)
153+
} else {
154+
Modifier
155+
}
156+
),
156157
event = timelineItem,
157158
timelineRoomInfo = timelineRoomInfo,
158159
renderReadReceipts = renderReadReceipts,

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemStickerView.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,17 @@ fun TimelineItemStickerView(
6666
modifier = Modifier
6767
.fillMaxSize()
6868
.then(if (isLoaded) Modifier.background(Color.White) else Modifier)
69-
.then(if (onContentClick != null) Modifier.combinedClickable(onClick = onContentClick, onLongClick = onLongClick) else Modifier),
69+
.then(
70+
if (onContentClick != null) {
71+
Modifier
72+
.combinedClickable(
73+
onClick = onContentClick,
74+
onLongClick = onLongClick,
75+
onLongClickLabel = stringResource(CommonStrings.action_open_context_menu), )
76+
} else {
77+
Modifier
78+
}
79+
),
7080
model = MediaRequestData(
7181
source = content.preferredMediaSource,
7282
kind = MediaRequestData.Kind.File(

libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/AudioItemView.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import androidx.compose.runtime.Composable
2323
import androidx.compose.ui.Alignment
2424
import androidx.compose.ui.Modifier
2525
import androidx.compose.ui.draw.clip
26+
import androidx.compose.ui.res.stringResource
2627
import androidx.compose.ui.text.style.TextOverflow
2728
import androidx.compose.ui.tooling.preview.PreviewParameter
2829
import androidx.compose.ui.unit.dp
@@ -35,6 +36,7 @@ import io.element.android.libraries.designsystem.theme.components.HorizontalDivi
3536
import io.element.android.libraries.designsystem.theme.components.Icon
3637
import io.element.android.libraries.designsystem.theme.components.Text
3738
import io.element.android.libraries.mediaviewer.impl.model.MediaItem
39+
import io.element.android.libraries.ui.strings.CommonStrings
3840

3941
@Composable
4042
fun AudioItemView(
@@ -77,7 +79,11 @@ private fun FilenameRow(
7779
color = ElementTheme.colors.bgSubtleSecondary,
7880
shape = RoundedCornerShape(12.dp),
7981
)
80-
.combinedClickable(onClick = onClick, onLongClick = onLongClick)
82+
.combinedClickable(
83+
onClick = onClick,
84+
onLongClick = onLongClick,
85+
onLongClickLabel = stringResource(CommonStrings.action_open_context_menu),
86+
)
8187
.fillMaxWidth()
8288
.padding(start = 12.dp, end = 36.dp, top = 8.dp, bottom = 8.dp),
8389
verticalAlignment = Alignment.CenterVertically,

libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/FileItemView.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import androidx.compose.runtime.Composable
2323
import androidx.compose.ui.Alignment
2424
import androidx.compose.ui.Modifier
2525
import androidx.compose.ui.draw.clip
26+
import androidx.compose.ui.res.stringResource
2627
import androidx.compose.ui.text.style.TextOverflow
2728
import androidx.compose.ui.tooling.preview.PreviewParameter
2829
import androidx.compose.ui.unit.dp
@@ -35,6 +36,7 @@ import io.element.android.libraries.designsystem.theme.components.HorizontalDivi
3536
import io.element.android.libraries.designsystem.theme.components.Icon
3637
import io.element.android.libraries.designsystem.theme.components.Text
3738
import io.element.android.libraries.mediaviewer.impl.model.MediaItem
39+
import io.element.android.libraries.ui.strings.CommonStrings
3840

3941
@Composable
4042
fun FileItemView(
@@ -77,7 +79,11 @@ private fun FilenameRow(
7779
color = ElementTheme.colors.bgSubtleSecondary,
7880
shape = RoundedCornerShape(12.dp),
7981
)
80-
.combinedClickable(onClick = onClick, onLongClick = onLongClick)
82+
.combinedClickable(
83+
onClick = onClick,
84+
onLongClick = onLongClick,
85+
onLongClickLabel = stringResource(CommonStrings.action_open_context_menu),
86+
)
8187
.fillMaxWidth()
8288
.padding(start = 12.dp, end = 36.dp, top = 8.dp, bottom = 8.dp),
8389
verticalAlignment = Alignment.CenterVertically,

libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/ImageItemView.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@ import androidx.compose.ui.Alignment
2121
import androidx.compose.ui.Modifier
2222
import androidx.compose.ui.graphics.Color
2323
import androidx.compose.ui.layout.ContentScale
24+
import androidx.compose.ui.res.stringResource
2425
import coil3.compose.AsyncImage
2526
import coil3.compose.AsyncImagePainter
2627
import io.element.android.libraries.designsystem.preview.ElementPreview
2728
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
2829
import io.element.android.libraries.mediaviewer.impl.model.MediaItem
2930
import io.element.android.libraries.mediaviewer.impl.model.aMediaItemImage
31+
import io.element.android.libraries.ui.strings.CommonStrings
3032

3133
@Composable
3234
fun ImageItemView(
@@ -38,7 +40,11 @@ fun ImageItemView(
3840
Box(
3941
modifier = modifier
4042
.aspectRatio(1f)
41-
.combinedClickable(onClick = onClick, onLongClick = onLongClick),
43+
.combinedClickable(
44+
onClick = onClick,
45+
onLongClick = onLongClick,
46+
onLongClickLabel = stringResource(CommonStrings.action_open_context_menu),
47+
),
4248
) {
4349
var isLoaded by remember { mutableStateOf(false) }
4450
AsyncImage(

libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/VideoItemView.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import androidx.compose.ui.Modifier
2626
import androidx.compose.ui.graphics.Brush
2727
import androidx.compose.ui.graphics.Color
2828
import androidx.compose.ui.layout.ContentScale
29+
import androidx.compose.ui.res.stringResource
2930
import androidx.compose.ui.tooling.preview.PreviewParameter
3031
import androidx.compose.ui.unit.dp
3132
import coil3.compose.AsyncImage
@@ -37,6 +38,7 @@ import io.element.android.libraries.designsystem.preview.PreviewsDayNight
3738
import io.element.android.libraries.designsystem.theme.components.Icon
3839
import io.element.android.libraries.designsystem.theme.components.Text
3940
import io.element.android.libraries.mediaviewer.impl.model.MediaItem
41+
import io.element.android.libraries.ui.strings.CommonStrings
4042

4143
@Composable
4244
fun VideoItemView(
@@ -48,7 +50,11 @@ fun VideoItemView(
4850
Box(
4951
modifier = modifier
5052
.aspectRatio(1f)
51-
.combinedClickable(onClick = onClick, onLongClick = onLongClick),
53+
.combinedClickable(
54+
onClick = onClick,
55+
onLongClick = onLongClick,
56+
onLongClickLabel = stringResource(CommonStrings.action_open_context_menu),
57+
),
5258
) {
5359
var isLoaded by remember { mutableStateOf(false) }
5460
AsyncImage(

0 commit comments

Comments
 (0)