Add keyboard control (WIP, broken)

This commit is contained in:
Christian Basler
2025-12-19 22:57:25 +01:00
parent e80ae7f722
commit 25d4da4582
20 changed files with 450 additions and 418 deletions

View File

@@ -1,6 +1,5 @@
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
@@ -17,12 +16,12 @@ 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
import androidx.compose.ui.window.WindowState
import ch.dissem.yaep.ui.common.focus.FocusFollowingSelectionManager
import ch.dissem.yaep.ui.common.theme.AppTheme
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.resources.stringResource
@@ -43,7 +42,7 @@ import yaep.desktop.generated.resources.Res as DRes
@Composable
fun WindowScope.DesktopWindow(
useDarkMode: Boolean,
selectionManager: SelectionManager,
selectionManager: FocusFollowingSelectionManager,
topBar: @Composable () -> Unit,
content: @Composable (PaddingValues) -> Unit
) {

View File

@@ -1,13 +1,11 @@
package ch.dissem.yaep.ui.desktop
import SelectionManager
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.getValue
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
@@ -20,6 +18,7 @@ import androidx.compose.ui.window.application
import androidx.compose.ui.window.rememberWindowState
import ch.dissem.yaep.domain.generateGame
import ch.dissem.yaep.ui.common.App
import ch.dissem.yaep.ui.common.focus.FocusFollowingSelectionManager
import ch.dissem.yaep.ui.common.theme.emojiFontFamily
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.resources.stringResource
@@ -49,12 +48,12 @@ fun main(): Unit = application {
state = windowState,
icon = painterResource(DRes.drawable.ic_launcher)
) {
val selectionManager = remember { SelectionManager(Key.Tab).apply { isActive = true } }
val rootSelectionManager = FocusFollowingSelectionManager
var useDarkMode by remember { mutableStateOf(true) }
var resetCluesBeacon by remember { mutableStateOf(Any()) }
DesktopWindow(
useDarkMode = useDarkMode,
selectionManager = selectionManager,
selectionManager = rootSelectionManager,
topBar = {
AppBar(
useDarkMode = useDarkMode,
@@ -71,9 +70,8 @@ fun main(): Unit = application {
) {
App(
modifier = Modifier.padding(it),
selectionManager = selectionManager,
rootSelectionManager = rootSelectionManager,
spacing = 8.dp,
selectDirectly = true,
game = game,
onNewGame = { game = generateGame() },
resetCluesBeacon = resetCluesBeacon