From 33b0360507b801c1518bac6833dbcd7229fa37c2 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Fri, 6 Sep 2024 21:52:10 +0200 Subject: [PATCH] bring back embeded config --- .../newplayer/model/VideoPlayerViewModel.kt | 4 ++-- .../model/VideoPlayerViewModelImpl.kt | 8 ++++++-- .../model/ViewoPlayerViewModelDummy.kt | 6 +++--- .../net/newpipe/newplayer/ui/VideoPlayerUI.kt | 1 + .../newplayer/ui/videoplayer/BottomUI.kt | 4 +++- .../newpipe/newplayer/ui/videoplayer/TopUI.kt | 8 +++++--- .../gesture_ui/EmbeddedGestureUI.kt | 9 +++++++-- .../java/net/newpipe/newplayer/utils/utils.kt | 19 +++++++++++++++++++ 8 files changed, 46 insertions(+), 13 deletions(-) diff --git a/new-player/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModel.kt b/new-player/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModel.kt index 2611c34..fecb119 100644 --- a/new-player/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModel.kt +++ b/new-player/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModel.kt @@ -42,7 +42,7 @@ interface VideoPlayerViewModel { fun pause() fun prevStream() fun nextStream() - fun switchToFullscreen() + fun switchToFullscreen(embeddedUiConfig: EmbeddedUiConfig) fun switchToEmbeddedView() fun onBackPressed() fun showUi() @@ -54,7 +54,7 @@ interface VideoPlayerViewModel { fun finishFastSeek() fun brightnessChange(changeRate: Float, systemBrightness: Float) fun volumeChange(changeRate: Float) - fun openStreamSelection(selectChapter: Boolean) + fun openStreamSelection(selectChapter: Boolean, embeddedUiConfig: EmbeddedUiConfig) fun closeStreamSelection() fun chapterSelected(chapterId: Int) fun streamSelected(streamId: Int) diff --git a/new-player/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModelImpl.kt b/new-player/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModelImpl.kt index 23d6ef5..1613fb3 100644 --- a/new-player/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModelImpl.kt +++ b/new-player/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModelImpl.kt @@ -438,8 +438,11 @@ class VideoPlayerViewModelImpl @Inject constructor( } } - override fun openStreamSelection(selectChapter: Boolean) { + override fun openStreamSelection(selectChapter: Boolean, embeddedUiConfig: EmbeddedUiConfig) { uiVisibilityJob?.cancel() + if (!uiState.value.uiMode.fullscreen) { + this.embeddedUiConfig = embeddedUiConfig + } updateUiMode( if (selectChapter) uiState.value.uiMode.getChapterSelectUiState() else uiState.value.uiMode.getStreamSelectUiState() @@ -472,10 +475,11 @@ class VideoPlayerViewModelImpl @Inject constructor( } } - override fun switchToFullscreen() { + override fun switchToFullscreen(embeddedUiConfig: EmbeddedUiConfig) { uiVisibilityJob?.cancel() finishFastSeek() + this.embeddedUiConfig = embeddedUiConfig updateUiMode(UIModeState.FULLSCREEN_VIDEO) } diff --git a/new-player/src/main/java/net/newpipe/newplayer/model/ViewoPlayerViewModelDummy.kt b/new-player/src/main/java/net/newpipe/newplayer/model/ViewoPlayerViewModelDummy.kt index 561477a..1e1ee49 100644 --- a/new-player/src/main/java/net/newpipe/newplayer/model/ViewoPlayerViewModelDummy.kt +++ b/new-player/src/main/java/net/newpipe/newplayer/model/ViewoPlayerViewModelDummy.kt @@ -36,7 +36,7 @@ open class VideoPlayerViewModelDummy : VideoPlayerViewModel { println("dummy impl") } - override fun switchToFullscreen() { + override fun switchToFullscreen(embeddedUiConfig: EmbeddedUiConfig) { println("dummy impl") } @@ -61,7 +61,7 @@ open class VideoPlayerViewModelDummy : VideoPlayerViewModel { } override fun fastSeek(steps: Int) { - println("dummy impl, steps: $steps") + println("dummy impl: steps: $steps") } override fun finishFastSeek() { @@ -76,7 +76,7 @@ open class VideoPlayerViewModelDummy : VideoPlayerViewModel { println("dummy impl") } - override fun openStreamSelection(selectChapter: Boolean) { + override fun openStreamSelection(selectChapter: Boolean, embeddedUiConfig: EmbeddedUiConfig) { println("dummy impl") } diff --git a/new-player/src/main/java/net/newpipe/newplayer/ui/VideoPlayerUI.kt b/new-player/src/main/java/net/newpipe/newplayer/ui/VideoPlayerUI.kt index 2598ae8..db543b5 100644 --- a/new-player/src/main/java/net/newpipe/newplayer/ui/VideoPlayerUI.kt +++ b/new-player/src/main/java/net/newpipe/newplayer/ui/VideoPlayerUI.kt @@ -95,6 +95,7 @@ fun VideoPlayerUI( // Setup fullscreen + LaunchedEffect(uiState.uiMode.fullscreen) { if (uiState.uiMode.fullscreen) { WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = diff --git a/new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/BottomUI.kt b/new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/BottomUI.kt index d0213cc..0fa1581 100644 --- a/new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/BottomUI.kt +++ b/new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/BottomUI.kt @@ -57,6 +57,7 @@ import net.newpipe.newplayer.ui.seeker.Seeker import net.newpipe.newplayer.ui.seeker.SeekerColors import net.newpipe.newplayer.ui.seeker.Segment import net.newpipe.newplayer.ui.theme.VideoPlayerTheme +import net.newpipe.newplayer.utils.getEmbeddedUiConfig import net.newpipe.newplayer.utils.getLocale import net.newpipe.newplayer.utils.getTimeStringFromMs @@ -86,11 +87,12 @@ fun BottomUI( Text(getTimeStringFromMs(uiState.durationInMs, getLocale() ?: locale)) + val embeddedUiConfig = getEmbeddedUiConfig(LocalContext.current as Activity) IconButton( onClick = if (uiState.uiMode.fullscreen) viewModel::switchToEmbeddedView else { { // <- head of lambda ... yea kotlin is weird - viewModel.switchToFullscreen() + viewModel.switchToFullscreen(embeddedUiConfig) } } ) { diff --git a/new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/TopUI.kt b/new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/TopUI.kt index cdb8223..1650e68 100644 --- a/new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/TopUI.kt +++ b/new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/TopUI.kt @@ -53,12 +53,13 @@ import net.newpipe.newplayer.model.VideoPlayerViewModel import net.newpipe.newplayer.model.VideoPlayerViewModelDummy import net.newpipe.newplayer.ui.theme.VideoPlayerTheme import net.newpipe.newplayer.ui.theme.video_player_onSurface +import net.newpipe.newplayer.utils.getEmbeddedUiConfig @Composable fun TopUI( modifier: Modifier, viewModel: VideoPlayerViewModel, uiState: VideoPlayerUIState ) { - + val embeddedUiConfig = getEmbeddedUiConfig(activity = LocalContext.current as Activity) Row( modifier = modifier, verticalAlignment = Alignment.CenterVertically, @@ -99,7 +100,7 @@ fun TopUI( } AnimatedVisibility(visible = uiState.chapters.isNotEmpty()) { IconButton( - onClick = { viewModel.openStreamSelection(selectChapter = true) }, + onClick = { viewModel.openStreamSelection(selectChapter = true, embeddedUiConfig) }, ) { Icon( imageVector = Icons.AutoMirrored.Filled.MenuBook, @@ -111,7 +112,8 @@ fun TopUI( IconButton( onClick = { viewModel.openStreamSelection( - selectChapter = false + selectChapter = false, + embeddedUiConfig ) }, ) { diff --git a/new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/gesture_ui/EmbeddedGestureUI.kt b/new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/gesture_ui/EmbeddedGestureUI.kt index c329960..957bef6 100644 --- a/new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/gesture_ui/EmbeddedGestureUI.kt +++ b/new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/gesture_ui/EmbeddedGestureUI.kt @@ -21,7 +21,8 @@ package net.newpipe.newplayer.ui.videoplayer.gesture_ui - import android.util.Log +import android.app.Activity +import android.util.Log import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize @@ -35,11 +36,13 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview import net.newpipe.newplayer.model.VideoPlayerUIState import net.newpipe.newplayer.model.VideoPlayerViewModel import net.newpipe.newplayer.model.VideoPlayerViewModelDummy import net.newpipe.newplayer.ui.theme.VideoPlayerTheme +import net.newpipe.newplayer.utils.getEmbeddedUiConfig private const val TAG = "EmbeddedGestureUI" @@ -52,6 +55,8 @@ fun EmbeddedGestureUI( mutableStateOf(false) } + val embeddedUiConfig = getEmbeddedUiConfig(LocalContext.current as Activity) + val handleMovement = { movement: TouchedPosition -> Log.d(TAG, "${movement.x}:${movement.y}") if (0 < movement.y) { @@ -61,7 +66,7 @@ fun EmbeddedGestureUI( // this check is there to allow a temporary move up in the downward gesture if (downwardMovementMode == false) { - viewModel.switchToFullscreen() + viewModel.switchToFullscreen(embeddedUiConfig) } else { viewModel.embeddedDraggedDown(movement.y) } diff --git a/new-player/src/main/java/net/newpipe/newplayer/utils/utils.kt b/new-player/src/main/java/net/newpipe/newplayer/utils/utils.kt index 7196f94..2d09bd2 100644 --- a/new-player/src/main/java/net/newpipe/newplayer/utils/utils.kt +++ b/new-player/src/main/java/net/newpipe/newplayer/utils/utils.kt @@ -89,6 +89,25 @@ fun getLocale(): Locale? { return ConfigurationCompat.getLocales(configuration).get(0) } +@Composable +@ReadOnlyComposable +fun getEmbeddedUiConfig(activity: Activity): EmbeddedUiConfig { + val window = activity.window + val view = LocalView.current + + val isLightStatusBar = WindowCompat.getInsetsController( + window, + view + ).isAppearanceLightStatusBars + val screenOrientation = activity.requestedOrientation + val defaultBrightness = getDefaultBrightness(activity) + return EmbeddedUiConfig( + systemBarInLightMode = isLightStatusBar, + brightness = defaultBrightness, + screenOrientation = screenOrientation + ) +} + @Composable fun getInsets() = WindowInsets.systemBars.union(WindowInsets.displayCutout).union(WindowInsets.waterfall)