feat: add focus management for play button in Movie and Episode screens

This commit is contained in:
2026-02-27 21:07:55 +01:00
parent 36002e513e
commit 0f82ed4603
2 changed files with 22 additions and 8 deletions

View File

@@ -1,11 +1,11 @@
package hu.bbara.purefin.app.content.episode
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
@@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.sizeIn
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Add
@@ -23,7 +22,10 @@ import androidx.compose.material3.VerticalDivider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
@@ -79,6 +81,11 @@ private fun EpisodeScreenInternal(
) {
val scheme = MaterialTheme.colorScheme
val hPad = Modifier.padding(horizontal = 16.dp)
val playFocusRequester = remember { FocusRequester() }
LaunchedEffect(Unit) {
playFocusRequester.requestFocus()
}
LazyColumn(
modifier = modifier
@@ -143,7 +150,7 @@ private fun EpisodeScreenInternal(
text = if (episode.progress == null) "Play" else "Resume",
progress = episode.progress?.div(100)?.toFloat() ?: 0f,
onClick = onPlay,
modifier = Modifier.sizeIn(maxWidth = 200.dp)
modifier = Modifier.sizeIn(maxWidth = 200.dp).focusRequester(playFocusRequester)
)
VerticalDivider(
color = scheme.secondary,

View File

@@ -1,11 +1,11 @@
package hu.bbara.purefin.app.content.movie
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
@@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.sizeIn
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Add
@@ -23,7 +22,10 @@ import androidx.compose.material3.VerticalDivider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
@@ -72,6 +74,11 @@ private fun MovieScreenInternal(
) {
val scheme = MaterialTheme.colorScheme
val hPad = Modifier.padding(horizontal = 16.dp)
val playFocusRequester = remember { FocusRequester() }
LaunchedEffect(Unit) {
playFocusRequester.requestFocus()
}
LazyColumn(
modifier = modifier
@@ -129,7 +136,7 @@ private fun MovieScreenInternal(
text = if (movie.progress == null) "Play" else "Resume",
progress = movie.progress?.div(100)?.toFloat() ?: 0f,
onClick = onPlay,
modifier = Modifier.sizeIn(maxWidth = 200.dp)
modifier = Modifier.sizeIn(maxWidth = 200.dp).focusRequester(playFocusRequester)
)
VerticalDivider(
color = scheme.secondary,