refactor: improve accessibility for previous/next buttons in player

This commit is contained in:
Antoine Jaury
2026-10-12 14:29:59 +02:00
parent 8dc1e8e71e
commit 8339ee128b
3 changed files with 30 additions and 2 deletions
@@ -52,6 +52,8 @@
<string name="player_back_action_label">revenir à la liste des contenus</string> <string name="player_back_action_label">revenir à la liste des contenus</string>
<string name="player_previous_sentence">Phrase précédente</string> <string name="player_previous_sentence">Phrase précédente</string>
<string name="player_next_sentence">Phrase suivante</string> <string name="player_next_sentence">Phrase suivante</string>
<string name="player_previous_sentence_action_label">passer à la phrase précédente</string>
<string name="player_next_sentence_action_label">passer à la phrase suivante</string>
<string name="player_play">Lire</string> <string name="player_play">Lire</string>
<string name="player_pause">Pause</string> <string name="player_pause">Pause</string>
<string name="player_replay">Rejouer</string> <string name="player_replay">Rejouer</string>
@@ -8,10 +8,13 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.onClick
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import bzh.ajaury.chombev.resources.generated.resources.Res import bzh.ajaury.chombev.resources.generated.resources.Res
import bzh.ajaury.chombev.resources.generated.resources.player_next_sentence import bzh.ajaury.chombev.resources.generated.resources.player_next_sentence
import bzh.ajaury.chombev.resources.generated.resources.player_next_sentence_action_label
import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.stringResource
@Composable @Composable
@@ -20,8 +23,18 @@ fun NextButton(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
onNextSentenceClicked: () -> Unit = {}, onNextSentenceClicked: () -> Unit = {},
) { ) {
val actionLabel = stringResource(Res.string.player_next_sentence_action_label)
IconButton( IconButton(
modifier = modifier.size(60.dp), modifier = modifier
.size(60.dp)
.semantics {
if (canGoToNextSentence) {
onClick(label = actionLabel) {
onNextSentenceClicked()
true
}
}
},
enabled = canGoToNextSentence, enabled = canGoToNextSentence,
onClick = onNextSentenceClicked, onClick = onNextSentenceClicked,
) { ) {
@@ -8,10 +8,13 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.onClick
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import bzh.ajaury.chombev.resources.generated.resources.Res import bzh.ajaury.chombev.resources.generated.resources.Res
import bzh.ajaury.chombev.resources.generated.resources.player_previous_sentence import bzh.ajaury.chombev.resources.generated.resources.player_previous_sentence
import bzh.ajaury.chombev.resources.generated.resources.player_previous_sentence_action_label
import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.stringResource
@Composable @Composable
@@ -20,8 +23,18 @@ fun PreviousButton(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
onPreviousSentenceClicked: () -> Unit = {}, onPreviousSentenceClicked: () -> Unit = {},
) { ) {
val actionLabel = stringResource(Res.string.player_previous_sentence_action_label)
IconButton( IconButton(
modifier = modifier.size(60.dp), modifier = modifier
.size(60.dp)
.semantics {
if (canGoToPreviousSentence) {
onClick(label = actionLabel) {
onPreviousSentenceClicked()
true
}
}
},
enabled = canGoToPreviousSentence, enabled = canGoToPreviousSentence,
onClick = onPreviousSentenceClicked, onClick = onPreviousSentenceClicked,
) { ) {