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(
 | 
			
		||||
                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
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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(),
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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) },
 | 
			
		||||
                                )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue