Add keyboard control (WIP)

This commit is contained in:
2025-06-16 00:23:36 +02:00
parent 651c74e305
commit e0de7be857
4 changed files with 118 additions and 19 deletions

View File

@@ -1,5 +1,6 @@
package ch.dissem.yaep.ui.desktop
import SelectionManager
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
@@ -16,6 +17,8 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.scale
import androidx.compose.ui.input.key.onKeyEvent
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.WindowPlacement
import androidx.compose.ui.window.WindowScope
@@ -40,11 +43,13 @@ import yaep.desktop.generated.resources.Res as DRes
@Composable
fun WindowScope.DesktopWindow(
useDarkMode: Boolean,
selectionManager: SelectionManager,
topBar: @Composable () -> Unit,
content: @Composable (PaddingValues) -> Unit
) {
AppTheme(darkTheme = useDarkMode) {
Scaffold(
modifier = Modifier.onKeyEvent { event -> selectionManager.onKeyEvent(event) },
topBar = {
WindowDraggableArea {
topBar()

View File

@@ -6,6 +6,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.key.Key
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.font.FontWeight
@@ -47,10 +48,12 @@ fun main(): Unit = application {
state = windowState,
icon = painterResource(DRes.drawable.ic_launcher)
) {
val selectionManager = remember { SelectionManager(Key.Tab).apply { isActive = true } }
var useDarkMode by remember { mutableStateOf(true) }
var resetCluesBeacon by remember { mutableStateOf(Any()) }
DesktopWindow(
useDarkMode = useDarkMode,
selectionManager = selectionManager,
topBar = {
AppBar(
useDarkMode = useDarkMode,
@@ -67,6 +70,7 @@ fun main(): Unit = application {
) {
App(
modifier = Modifier.padding(it),
selectionManager = selectionManager,
spacing = 8.dp,
selectDirectly = true,
game = game,