Refactor on the Keyboard handlers.

This commit is contained in:
Andres Gomez, Thomas (ITDV RL) 2025-03-19 10:54:06 +01:00
parent edbb508f6a
commit 2b37dc2529
4 changed files with 78 additions and 44 deletions

View file

@ -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
}
}
}

View file

@ -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<DpSize>,
@ -288,10 +306,3 @@ data class CampaignLayoutScope(
val rightPanel: State<DpSize>,
val chatOverlay: State<DpSize>,
)
private fun IntSize.toDp(density: Density) = with(density) {
DpSize(
width = width.toDp(),
height = height.toDp(),
)
}

View file

@ -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) },
)

View file

@ -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,