From 8c1d83402ceb28e9b46b9ff4eb0bcc0533c84639 Mon Sep 17 00:00:00 2001 From: Thomas Andres Gomez Date: Mon, 11 Dec 2023 17:51:04 +0100 Subject: [PATCH] Add keep on screen feature on the Character Sheet page. --- .../com/pixelized/rplexicon/MainActivity.kt | 5 ++--- .../rplexicon/ui/composable/KeepOnScreen.kt | 17 +++++++++++++++++ .../screens/character/CharacterSheetScreen.kt | 3 +++ 3 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/pixelized/rplexicon/ui/composable/KeepOnScreen.kt diff --git a/app/src/main/java/com/pixelized/rplexicon/MainActivity.kt b/app/src/main/java/com/pixelized/rplexicon/MainActivity.kt index 488940f..97e959a 100644 --- a/app/src/main/java/com/pixelized/rplexicon/MainActivity.kt +++ b/app/src/main/java/com/pixelized/rplexicon/MainActivity.kt @@ -27,7 +27,6 @@ import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.compositionLocalOf import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.remember -import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen @@ -45,10 +44,10 @@ import dagger.hilt.android.AndroidEntryPoint val NO_WINDOW_INSETS = WindowInsets(0, 0, 0, 0) -val LocalActivity = staticCompositionLocalOf { +val LocalActivity = compositionLocalOf { error("Activity not available") } -val LocalSnack = staticCompositionLocalOf { +val LocalSnack = compositionLocalOf { error("SnackbarHostState not available") } val LocalRollOverlay = compositionLocalOf { diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/composable/KeepOnScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/composable/KeepOnScreen.kt new file mode 100644 index 0000000..92af1e8 --- /dev/null +++ b/app/src/main/java/com/pixelized/rplexicon/ui/composable/KeepOnScreen.kt @@ -0,0 +1,17 @@ +package com.pixelized.rplexicon.ui.composable + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.ui.platform.LocalView + +@Composable +fun KeepOnScreen() { + val currentView = LocalView.current + + DisposableEffect(Unit) { + currentView.keepScreenOn = true + onDispose { + currentView.keepScreenOn = false + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt index 2ac73a0..0f146ef 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt @@ -62,6 +62,7 @@ import androidx.hilt.navigation.compose.hiltViewModel import com.pixelized.rplexicon.LocalRollOverlay import com.pixelized.rplexicon.NO_WINDOW_INSETS import com.pixelized.rplexicon.R +import com.pixelized.rplexicon.ui.composable.KeepOnScreen import com.pixelized.rplexicon.ui.composable.Loader import com.pixelized.rplexicon.ui.composable.edit.HandleHitPointEditDialog import com.pixelized.rplexicon.ui.composable.error.HandleFetchError @@ -235,6 +236,8 @@ fun CharacterSheetScreen( BackHandler(enabled = overlay.isOverlayVisible) { overlay.hideOverlay() } + + KeepOnScreen() } }