Refactor on the Keyboard handlers.
This commit is contained in:
parent
edbb508f6a
commit
2b37dc2529
4 changed files with 78 additions and 44 deletions
|
|
@ -60,16 +60,11 @@ fun RollOverlay(
|
||||||
else -> Box(
|
else -> Box(
|
||||||
modifier = Modifier.fillMaxSize()
|
modifier = Modifier.fillMaxSize()
|
||||||
) {
|
) {
|
||||||
KeyHandler {
|
RollOverlayKeyHandler(
|
||||||
when {
|
onDismissRequest = {
|
||||||
it.type == KeyEventType.KeyUp && it.key == Key.Escape -> {
|
roll.action(result = viewModel.lastRollResult)
|
||||||
roll.action(result = viewModel.lastRollResult)
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> false
|
|
||||||
}
|
}
|
||||||
}
|
)
|
||||||
|
|
||||||
RollPage(
|
RollPage(
|
||||||
viewModel = viewModel,
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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.composable.key.KeyHandler
|
||||||
import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController
|
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.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.CharacterDetailPanel
|
||||||
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDetailViewModel
|
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.CharacterDiminishedViewModel
|
||||||
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.rememberTransitionAnimation
|
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.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.CampaignToolbar
|
||||||
import com.pixelized.desktop.lwa.ui.screen.campaign.toolbar.CampaignToolbarViewModel
|
import com.pixelized.desktop.lwa.ui.screen.campaign.toolbar.CampaignToolbarViewModel
|
||||||
import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog.DiminishedStatDialog
|
import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog.DiminishedStatDialog
|
||||||
|
|
@ -66,18 +66,6 @@ fun CampaignScreen(
|
||||||
val blurController = rememberBlurContentController()
|
val blurController = rememberBlurContentController()
|
||||||
val scope = rememberCoroutineScope()
|
val scope = rememberCoroutineScope()
|
||||||
|
|
||||||
KeyHandler {
|
|
||||||
when {
|
|
||||||
it.type == KeyEventType.KeyUp && it.key == Key.Escape -> {
|
|
||||||
playerDetailViewModel.hideCharacter()
|
|
||||||
npcDetailViewModel.hideCharacter()
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Surface(
|
Surface(
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
) {
|
) {
|
||||||
|
|
@ -191,6 +179,13 @@ fun CampaignScreen(
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CampaignKeyHandler(
|
||||||
|
onDismissRequest = {
|
||||||
|
playerDetailViewModel.hideCharacter()
|
||||||
|
npcDetailViewModel.hideCharacter()
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@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
|
@Stable
|
||||||
data class CampaignLayoutScope(
|
data class CampaignLayoutScope(
|
||||||
val leftOverlay: State<DpSize>,
|
val leftOverlay: State<DpSize>,
|
||||||
|
|
@ -288,10 +306,3 @@ data class CampaignLayoutScope(
|
||||||
val rightPanel: State<DpSize>,
|
val rightPanel: State<DpSize>,
|
||||||
val chatOverlay: State<DpSize>,
|
val chatOverlay: State<DpSize>,
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun IntSize.toDp(density: Density) = with(density) {
|
|
||||||
DpSize(
|
|
||||||
width = width.toDp(),
|
|
||||||
height = height.toDp(),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
@ -202,7 +202,7 @@ private fun GameMasterContent(
|
||||||
items = tags.value,
|
items = tags.value,
|
||||||
) { tag ->
|
) { tag ->
|
||||||
GMTag(
|
GMTag(
|
||||||
style = MaterialTheme.lwa.typography.base.body1,
|
style = MaterialTheme.lwa.typography.base.caption,
|
||||||
tag = tag,
|
tag = tag,
|
||||||
onTag = { onTag(tag.id) },
|
onTag = { onTag(tag.id) },
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -53,17 +53,6 @@ fun SettingsScreen(
|
||||||
) {
|
) {
|
||||||
val screen = LocalScreenController.current
|
val screen = LocalScreenController.current
|
||||||
|
|
||||||
KeyHandler {
|
|
||||||
when {
|
|
||||||
it.type == KeyEventType.KeyUp && it.key == Key.Escape -> {
|
|
||||||
screen.navigateBack()
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Surface {
|
Surface {
|
||||||
SettingsContent(
|
SettingsContent(
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
|
|
@ -74,6 +63,12 @@ fun SettingsScreen(
|
||||||
onReset = viewModel::onReset
|
onReset = viewModel::onReset
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SettingsKeyHandler(
|
||||||
|
onDismissRequest = {
|
||||||
|
screen.navigateBack()
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -114,8 +109,9 @@ private fun SettingsContent(
|
||||||
content = { paddingValues ->
|
content = { paddingValues ->
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
.verticalScroll(state = state)
|
||||||
.padding(paddingValues = paddingValues)
|
.padding(paddingValues = paddingValues)
|
||||||
.verticalScroll(state = state),
|
.padding(bottom = spacing),
|
||||||
verticalArrangement = Arrangement.spacedBy(space = spacing),
|
verticalArrangement = Arrangement.spacedBy(space = spacing),
|
||||||
) {
|
) {
|
||||||
items.forEach {
|
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(
|
private fun NavHostController.navigateBack() = popBackStack(
|
||||||
route = SettingsDestination.baseRoute(),
|
route = SettingsDestination.baseRoute(),
|
||||||
inclusive = true,
|
inclusive = true,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue