Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 20 additions & 19 deletions app/src/main/kotlin/cz/muni/fi/rpg/ui/WfrpMasterApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -35,34 +35,35 @@ import org.kodein.di.instance
fun WfrpMasterApp() {
ProvideDIContainer {
val settings: SettingsStorage by localDI().instance()
val keepScreenOn = settings.watch(AppSettings.KEEP_SCREEN_ON).collectWithLifecycle(null).value ?: true
val keepScreenOn =
settings.watch(AppSettings.KEEP_SCREEN_ON).collectWithLifecycle(null).value ?: true

if (keepScreenOn) {
KeepScreenOn()
}

Theme {
Startup {
ScreenWithBreakpoints {
Column {
NetworkStatusBanner()
val intent = LocalActivity.current.intent
val drawerState = rememberDrawerState(DrawerValue.Closed)
val coroutineScope = rememberCoroutineScope()
Column {
NetworkStatusBanner()
val intent = LocalActivity.current.intent
val drawerState = rememberDrawerState(DrawerValue.Closed)
val coroutineScope = rememberCoroutineScope()

Navigator(
screens = rememberInitialScreens(intent?.data),
onBackPressed = {
if (drawerState.isOpen) {
coroutineScope.launch { drawerState.close() }
return@Navigator false
}
Navigator(
screens = rememberInitialScreens(intent?.data),
onBackPressed = {
if (drawerState.isOpen) {
coroutineScope.launch { drawerState.close() }
return@Navigator false
}

true
},
) { navigator ->
SnackbarScaffold {
DrawerShell(drawerState) {
true
},
) { navigator ->
SnackbarScaffold {
DrawerShell(drawerState) {
ScreenWithBreakpoints {
SlideTransition(navigator) {
ProvideNavigationTransaction(it) {
it.Content()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
package cz.frantisekmasa.wfrp_master.common.core.ui.dialogs

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.width
import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import androidx.compose.ui.window.DialogWindowProvider
import cz.frantisekmasa.wfrp_master.common.core.ui.responsive.LocalScreenHeight
import cz.frantisekmasa.wfrp_master.common.core.ui.responsive.LocalScreenWidth

@Composable
actual fun FullScreenDialog(
Expand All @@ -12,6 +21,25 @@ actual fun FullScreenDialog(
Dialog(
onDismissRequest = onDismissRequest,
properties = DialogProperties(usePlatformDefaultWidth = false),
content = content,
)
) {
DisableScrim()

// On Pixel, the insets in dialog do not work properly, so we are just limiting the dialog
// size to the screen size
// See https://github.com/fmasa/wfrp-master/issues/429
Box(
Modifier.width(LocalScreenWidth.current)
.height(LocalScreenHeight.current),
) {
content()
}
}
}

@Composable
fun DisableScrim() {
val dialogWindow = (LocalView.current.parent as? DialogWindowProvider)?.window
SideEffect {
dialogWindow?.setDimAmount(0f)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import androidx.compose.ui.unit.dp
import io.github.aakira.napier.Napier

val LocalScreenWidth = compositionLocalOf<Dp> { error("Wrap your screen by ScreenWithBreakpoints") }
val LocalScreenHeight = compositionLocalOf<Dp> { error("Wrap your screen by ScreenWithBreakpoints") }
val LocalBreakpoint = staticCompositionLocalOf<Breakpoint> { error("Wrap your screen by ScreenWithBreakpoints") }
private const val GRID_COLUMNS = 12

Expand All @@ -35,6 +36,7 @@ fun ScreenWithBreakpoints(content: @Composable () -> Unit) {
CompositionLocalProvider(
LocalBreakpoint provides breakpoint,
LocalScreenWidth provides maxWidth,
LocalScreenHeight provides maxHeight,
content = content,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,22 +52,22 @@ fun ApplicationWindow(
Theme {
SnackbarScaffold {
Startup {
ScreenWithBreakpoints {
val drawerState = rememberDrawerState(DrawerValue.Closed)
val coroutineScope = rememberCoroutineScope()
val drawerState = rememberDrawerState(DrawerValue.Closed)
val coroutineScope = rememberCoroutineScope()

Navigator(
screens = listOf(initialScreen),
onBackPressed = {
if (drawerState.isOpen) {
coroutineScope.launch { drawerState.close() }
return@Navigator false
}
Navigator(
screens = listOf(initialScreen),
onBackPressed = {
if (drawerState.isOpen) {
coroutineScope.launch { drawerState.close() }
return@Navigator false
}

true
},
) { navigator ->
DrawerShell(drawerState) {
true
},
) { navigator ->
DrawerShell(drawerState) {
ScreenWithBreakpoints {
val screen = navigator.lastItem

navigator.saveableState("currentScreen") {
Expand Down
Loading