Only adds a border to video controls when in full screen

This commit is contained in:
Vitor Pamplona 2023-10-15 18:07:40 -04:00
parent 1767cc74a9
commit e1e42ed500

View File

@ -43,10 +43,12 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.LayoutCoordinates
import androidx.compose.ui.layout.boundsInWindow
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.isFinite
import androidx.compose.ui.unit.isSpecified
@ -534,7 +536,25 @@ private fun RenderVideoPlayer(
mutableStateOf(false)
}
BoxWithConstraints() {
val parentVideoPlaybackSize = remember {
mutableStateOf<IntSize>(IntSize.Zero)
}
val videoPlaybackSize = remember {
mutableStateOf<IntSize>(IntSize.Zero)
}
BoxWithConstraints(
contentAlignment = Alignment.Center,
modifier = Modifier.fillMaxSize().onSizeChanged {
parentVideoPlaybackSize.value = it
}
) {
BoxWithConstraints(
modifier = Modifier.onSizeChanged {
videoPlaybackSize.value = it
}
) {
val borders = MaterialTheme.colorScheme.imageModifier
val myModifier = remember {
@ -594,16 +614,22 @@ private fun RenderVideoPlayer(
controller.volume < 0.001
}
MuteButton(
controllerVisible,
startingMuteState,
remember {
if (topPaddingForControllers.isSpecified) {
Modifier.padding(top = topPaddingForControllers)
val spaceModifier =
if (topPaddingForControllers.isSpecified && videoPlaybackSize.value.height > 0) {
val space = (abs(parentVideoPlaybackSize.value.height - videoPlaybackSize.value.height) / 2).dp
if (space > topPaddingForControllers) {
Modifier
} else {
Modifier.padding(top = topPaddingForControllers - space)
}
} else {
Modifier
}
}
MuteButton(
controllerVisible,
startingMuteState,
spaceModifier
) { mute: Boolean ->
// makes the new setting the default for new creations.
DefaultMutedSetting.value = mute
@ -621,13 +647,7 @@ private fun RenderVideoPlayer(
KeepPlayingButton(
keepPlaying,
controllerVisible,
remember {
if (topPaddingForControllers.isSpecified) {
Modifier.align(Alignment.TopEnd).padding(top = topPaddingForControllers)
} else {
Modifier.align(Alignment.TopEnd)
}
}
spaceModifier.align(Alignment.TopEnd)
) { newKeepPlaying: Boolean ->
// If something else is playing and the user marks this video to keep playing, stops the other one.
if (newKeepPlaying) {
@ -645,6 +665,7 @@ private fun RenderVideoPlayer(
keepPlaying.value = newKeepPlaying
}
}
}
}
private fun pollCurrentDuration(controller: MediaController) = flow {