From 2b37dc2529bedd9bea2ef1e48a0c0974ef8abce3 Mon Sep 17 00:00:00 2001 From: "Andres Gomez, Thomas (ITDV RL)" Date: Wed, 19 Mar 2025 10:54:06 +0100 Subject: [PATCH] Refactor on the Keyboard handlers. --- .../lwa/ui/overlay/roll/RollOverlay.kt | 29 +++++++--- .../lwa/ui/screen/campaign/CampaignScreen.kt | 55 +++++++++++-------- .../ui/screen/gamemaster/GameMasterScreen.kt | 2 +- .../lwa/ui/screen/settings/SettingsScreen.kt | 36 ++++++++---- 4 files changed, 78 insertions(+), 44 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/overlay/roll/RollOverlay.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/overlay/roll/RollOverlay.kt index 800e2ee..abf2ea1 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/overlay/roll/RollOverlay.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/overlay/roll/RollOverlay.kt @@ -60,16 +60,11 @@ fun RollOverlay( else -> Box( modifier = Modifier.fillMaxSize() ) { - KeyHandler { - when { - it.type == KeyEventType.KeyUp && it.key == Key.Escape -> { - roll.action(result = viewModel.lastRollResult) - true - } - - else -> false + RollOverlayKeyHandler( + onDismissRequest = { + roll.action(result = viewModel.lastRollResult) } - } + ) RollPage( viewModel = viewModel, @@ -85,4 +80,20 @@ fun RollOverlay( } } } +} + +@Composable +private fun RollOverlayKeyHandler( + onDismissRequest: () -> Unit, +) { + KeyHandler { + when { + it.type == KeyEventType.KeyUp && it.key == Key.Escape -> { + onDismissRequest() + true + } + + else -> false + } + } } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/CampaignScreen.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/CampaignScreen.kt index b249101..dc3fd3b 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/CampaignScreen.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/CampaignScreen.kt @@ -35,14 +35,14 @@ import com.pixelized.desktop.lwa.ui.composable.character.characteristic.Characte import com.pixelized.desktop.lwa.ui.composable.key.KeyHandler import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController import com.pixelized.desktop.lwa.ui.navigation.screen.destination.navigateToLevelScreen -import com.pixelized.desktop.lwa.ui.screen.campaign.text.CampaignChat -import com.pixelized.desktop.lwa.ui.screen.campaign.text.CampaignChatViewModel -import com.pixelized.desktop.lwa.ui.screen.campaign.player.ribbon.npc.NpcRibbon import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDetailPanel import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDetailViewModel import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDiminishedViewModel import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.rememberTransitionAnimation +import com.pixelized.desktop.lwa.ui.screen.campaign.player.ribbon.npc.NpcRibbon import com.pixelized.desktop.lwa.ui.screen.campaign.player.ribbon.player.PlayerRibbon +import com.pixelized.desktop.lwa.ui.screen.campaign.text.CampaignChat +import com.pixelized.desktop.lwa.ui.screen.campaign.text.CampaignChatViewModel import com.pixelized.desktop.lwa.ui.screen.campaign.toolbar.CampaignToolbar import com.pixelized.desktop.lwa.ui.screen.campaign.toolbar.CampaignToolbarViewModel import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog.DiminishedStatDialog @@ -66,18 +66,6 @@ fun CampaignScreen( val blurController = rememberBlurContentController() val scope = rememberCoroutineScope() - KeyHandler { - when { - it.type == KeyEventType.KeyUp && it.key == Key.Escape -> { - playerDetailViewModel.hideCharacter() - npcDetailViewModel.hideCharacter() - true - } - - else -> false - } - } - Surface( modifier = Modifier.fillMaxSize(), ) { @@ -191,6 +179,13 @@ fun CampaignScreen( }, ) } + + CampaignKeyHandler( + onDismissRequest = { + playerDetailViewModel.hideCharacter() + npcDetailViewModel.hideCharacter() + } + ) } @Composable @@ -280,6 +275,29 @@ private fun CampaignLayout( } } +@Composable +private fun CampaignKeyHandler( + onDismissRequest: () -> Unit, +) { + KeyHandler { + when { + it.type == KeyEventType.KeyUp && it.key == Key.Escape -> { + onDismissRequest() + true + } + + else -> false + } + } +} + +private fun IntSize.toDp(density: Density) = with(density) { + DpSize( + width = width.toDp(), + height = height.toDp(), + ) +} + @Stable data class CampaignLayoutScope( val leftOverlay: State, @@ -288,10 +306,3 @@ data class CampaignLayoutScope( val rightPanel: State, val chatOverlay: State, ) - -private fun IntSize.toDp(density: Density) = with(density) { - DpSize( - width = width.toDp(), - height = height.toDp(), - ) -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/gamemaster/GameMasterScreen.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/gamemaster/GameMasterScreen.kt index 77080ec..1706779 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/gamemaster/GameMasterScreen.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/gamemaster/GameMasterScreen.kt @@ -202,7 +202,7 @@ private fun GameMasterContent( items = tags.value, ) { tag -> GMTag( - style = MaterialTheme.lwa.typography.base.body1, + style = MaterialTheme.lwa.typography.base.caption, tag = tag, onTag = { onTag(tag.id) }, ) diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/settings/SettingsScreen.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/settings/SettingsScreen.kt index 44a9cad..ce63a65 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/settings/SettingsScreen.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/settings/SettingsScreen.kt @@ -53,17 +53,6 @@ fun SettingsScreen( ) { val screen = LocalScreenController.current - KeyHandler { - when { - it.type == KeyEventType.KeyUp && it.key == Key.Escape -> { - screen.navigateBack() - true - } - - else -> false - } - } - Surface { SettingsContent( modifier = Modifier.fillMaxSize(), @@ -74,6 +63,12 @@ fun SettingsScreen( onReset = viewModel::onReset ) } + + SettingsKeyHandler( + onDismissRequest = { + screen.navigateBack() + } + ) } @Composable @@ -114,8 +109,9 @@ private fun SettingsContent( content = { paddingValues -> Column( modifier = Modifier + .verticalScroll(state = state) .padding(paddingValues = paddingValues) - .verticalScroll(state = state), + .padding(bottom = spacing), verticalArrangement = Arrangement.spacedBy(space = spacing), ) { items.forEach { @@ -130,6 +126,22 @@ private fun SettingsContent( ) } +@Composable +private fun SettingsKeyHandler( + onDismissRequest: () -> Unit, +) { + KeyHandler { + when { + it.type == KeyEventType.KeyUp && it.key == Key.Escape -> { + onDismissRequest() + true + } + + else -> false + } + } +} + private fun NavHostController.navigateBack() = popBackStack( route = SettingsDestination.baseRoute(), inclusive = true,