Merge pull request #5007 from element-hq/feature/bma/a11y/reportRoom
[a11y] Fix several issues around accessibility
This commit is contained in:
commit
f39304d9d2
10 changed files with 57 additions and 50 deletions
|
|
@ -1,29 +0,0 @@
|
|||
/*
|
||||
* Copyright 2023, 2024 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.androidutils.accessibility
|
||||
|
||||
import android.content.Context
|
||||
import android.view.accessibility.AccessibilityManager
|
||||
import androidx.core.content.getSystemService
|
||||
|
||||
/**
|
||||
* Whether a screen reader is enabled.
|
||||
*
|
||||
* Avoid changing UI or app behavior based on the state of accessibility.
|
||||
* See [AccessibilityManager.isTouchExplorationEnabled] for more details.
|
||||
*
|
||||
* @return true if the screen reader is enabled.
|
||||
*/
|
||||
fun Context.isScreenReaderEnabled(): Boolean {
|
||||
val accessibilityManager = getSystemService<AccessibilityManager>()
|
||||
?: return false
|
||||
|
||||
return accessibilityManager.let {
|
||||
it.isEnabled && it.isTouchExplorationEnabled
|
||||
}
|
||||
}
|
||||
|
|
@ -62,6 +62,7 @@ fun EditableAvatarView(
|
|||
modifier = Modifier
|
||||
.clickable(
|
||||
interactionSource = remember { MutableInteractionSource() },
|
||||
onClickLabel = stringResource(CommonStrings.a11y_edit_avatar),
|
||||
onClick = onAvatarClick,
|
||||
indication = ripple(bounded = false),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -23,6 +23,9 @@ import androidx.compose.ui.Modifier
|
|||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.draw.clipToBounds
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.semantics.clearAndSetSemantics
|
||||
import androidx.compose.ui.semantics.contentDescription
|
||||
import androidx.compose.ui.semantics.onClick
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
|
@ -48,9 +51,24 @@ fun SelectedUser(
|
|||
onUserRemove: (MatrixUser) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
val actionRemove = stringResource(id = CommonStrings.action_remove)
|
||||
Box(
|
||||
modifier = modifier
|
||||
.width(AvatarSize.SelectedUser.dp)
|
||||
.clearAndSetSemantics {
|
||||
contentDescription = matrixUser.getBestName()
|
||||
if (canRemove) {
|
||||
// Note: this does not set the click effect to the whole Box
|
||||
// when talkback is not enabled
|
||||
onClick(
|
||||
label = actionRemove,
|
||||
action = {
|
||||
onUserRemove(matrixUser)
|
||||
true
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
) {
|
||||
Column(
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
|
|
@ -83,6 +101,7 @@ fun SelectedUser(
|
|||
) {
|
||||
Icon(
|
||||
imageVector = CompoundIcons.Close(),
|
||||
// Note: keep the context description for the test
|
||||
contentDescription = stringResource(id = CommonStrings.action_remove),
|
||||
tint = ElementTheme.colors.iconOnSolidPrimary,
|
||||
modifier = Modifier.padding(2.dp)
|
||||
|
|
|
|||
|
|
@ -7,11 +7,16 @@
|
|||
<item quantity="one">"%1$d digit entered"</item>
|
||||
<item quantity="other">"%1$d digits entered"</item>
|
||||
</plurals>
|
||||
<string name="a11y_edit_avatar">"Edit avatar"</string>
|
||||
<string name="a11y_encryption_details">"Encryption details"</string>
|
||||
<string name="a11y_hide_password">"Hide password"</string>
|
||||
<string name="a11y_join_call">"Join call"</string>
|
||||
<string name="a11y_jump_to_bottom">"Jump to bottom"</string>
|
||||
<string name="a11y_notifications_mentions_only">"Mentions only"</string>
|
||||
<string name="a11y_notifications_muted">"Muted"</string>
|
||||
<string name="a11y_notifications_new_mentions">"New mentions"</string>
|
||||
<string name="a11y_notifications_new_messages">"New messages"</string>
|
||||
<string name="a11y_notifications_ongoing_call">"Ongoing call"</string>
|
||||
<string name="a11y_other_user_avatar">"Other user\'s avatar"</string>
|
||||
<string name="a11y_page_n">"Page %1$d"</string>
|
||||
<string name="a11y_pause">"Pause"</string>
|
||||
|
|
@ -35,6 +40,7 @@
|
|||
<string name="a11y_send_files">"Send files"</string>
|
||||
<string name="a11y_show_password">"Show password"</string>
|
||||
<string name="a11y_start_call">"Start a call"</string>
|
||||
<string name="a11y_time_limited_action_required">"Time limited action required"</string>
|
||||
<string name="a11y_user_avatar">"User avatar"</string>
|
||||
<string name="a11y_user_menu">"User menu"</string>
|
||||
<string name="a11y_view_avatar">"View avatar"</string>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue