From 2d164b265e6610a61e834d855098b9f4b4b1559c Mon Sep 17 00:00:00 2001 From: "Andres Gomez, Thomas (ITDV RL)" Date: Wed, 19 Mar 2025 12:53:58 +0100 Subject: [PATCH] Change some theming stuff --- .../composeResources/values/strings.xml | 1 + .../ui/composable/textfield/LwaTextField.kt | 16 +++------- .../edit/composable/LevelUpField.kt | 2 ++ .../ui/screen/gamemaster/GameMasterScreen.kt | 29 ++++++++++++------- .../screen/gamemaster/GameMasterViewModel.kt | 5 ++-- .../desktop/lwa/ui/theme/color/LwaColors.kt | 12 -------- .../color/component/LwaCheckboxColors.kt | 17 +++++++++++ .../lwa/ui/theme/color/component/LwaSwitch.kt | 14 --------- .../theme/color/component/LwaSwitchColors.kt | 16 ++++++++++ .../color/component/LwaTextFieldColors.kt | 20 +++++++++++++ 10 files changed, 81 insertions(+), 51 deletions(-) create mode 100644 composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaCheckboxColors.kt delete mode 100644 composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaSwitch.kt create mode 100644 composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaSwitchColors.kt create mode 100644 composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaTextFieldColors.kt diff --git a/composeApp/src/commonMain/composeResources/values/strings.xml b/composeApp/src/commonMain/composeResources/values/strings.xml index 077b5ae..fd9b1bf 100644 --- a/composeApp/src/commonMain/composeResources/values/strings.xml +++ b/composeApp/src/commonMain/composeResources/values/strings.xml @@ -212,6 +212,7 @@ Admin GameMaster + Filtrer par nom : niv: %1$d Joueur Joueur-%1$d diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/textfield/LwaTextField.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/textfield/LwaTextField.kt index 5bf6b5b..ed234b8 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/textfield/LwaTextField.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/textfield/LwaTextField.kt @@ -1,19 +1,18 @@ package com.pixelized.desktop.lwa.ui.composable.textfield import androidx.compose.foundation.layout.height -import androidx.compose.material.MaterialTheme import androidx.compose.material.Text import androidx.compose.material.TextField -import androidx.compose.material.TextFieldDefaults +import androidx.compose.material.TextFieldColors import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.runtime.collectAsState -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusDirection import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.pixelized.desktop.lwa.ui.theme.color.component.LwaTextFieldColors import com.pixelized.desktop.lwa.utils.rememberKeyboardActions import kotlinx.coroutines.flow.StateFlow @@ -29,13 +28,13 @@ data class LwaTextFieldUio( @Composable fun LwaTextField( modifier: Modifier = Modifier, + colors: TextFieldColors = LwaTextFieldColors(), leadingIcon: @Composable (() -> Unit)? = null, trailingIcon: @Composable (() -> Unit)? = null, singleLine: Boolean = true, field: LwaTextFieldUio, ) { val focus = LocalFocusManager.current - val colorScheme = MaterialTheme.colors val localModifier = if (singleLine) { Modifier.height(height = 56.dp) @@ -49,14 +48,7 @@ fun LwaTextField( TextField( modifier = localModifier.then(other = modifier), - colors = TextFieldDefaults.textFieldColors( - backgroundColor = remember(field.enable) { - when (field.enable) { - true -> colorScheme.onSurface.copy(alpha = 0.03f) - else -> colorScheme.surface - } - }, - ), + colors = colors, keyboardActions = rememberKeyboardActions { focus.moveFocus(FocusDirection.Next) }, diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/LevelUpField.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/LevelUpField.kt index cd5eb2e..534eb6a 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/LevelUpField.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/LevelUpField.kt @@ -9,6 +9,7 @@ import androidx.compose.runtime.Stable import androidx.compose.runtime.State import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import com.pixelized.desktop.lwa.ui.theme.color.component.LwaCheckboxColors import com.pixelized.desktop.lwa.ui.theme.lwa @Stable @@ -32,6 +33,7 @@ fun LevelUpField( text = field.label, ) Checkbox( + colors = LwaCheckboxColors(), checked = field.checked.value, onCheckedChange = field.onCheck, ) diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/gamemaster/GameMasterScreen.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/gamemaster/GameMasterScreen.kt index 1706779..274c406 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/gamemaster/GameMasterScreen.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/gamemaster/GameMasterScreen.kt @@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding @@ -30,7 +29,9 @@ import androidx.compose.material.MaterialTheme import androidx.compose.material.Scaffold import androidx.compose.material.Surface import androidx.compose.material.Switch +import androidx.compose.material.SwitchColors import androidx.compose.material.Text +import androidx.compose.material.TextFieldDefaults import androidx.compose.material.TopAppBar import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add @@ -42,6 +43,8 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.pixelized.desktop.lwa.LocalWindowController import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextField @@ -51,6 +54,7 @@ import com.pixelized.desktop.lwa.ui.screen.gamemaster.items.GMCharacter import com.pixelized.desktop.lwa.ui.screen.gamemaster.items.GMCharacterUio import com.pixelized.desktop.lwa.ui.screen.gamemaster.items.GMTag import com.pixelized.desktop.lwa.ui.screen.gamemaster.items.GMTagUio +import com.pixelized.desktop.lwa.ui.theme.color.component.LwaSwitchColors import com.pixelized.desktop.lwa.ui.theme.lwa import kotlinx.coroutines.launch import lwacharactersheet.composeapp.generated.resources.Res @@ -110,6 +114,8 @@ fun GameMasterScreen( @Composable private fun GameMasterContent( modifier: Modifier = Modifier, + padding: Dp = 16.dp, + spacing: Dp = 8.dp, filterChipsState: LazyListState = rememberLazyListState(), filter: LwaTextFieldUio, tags: State>, @@ -147,8 +153,8 @@ private fun GameMasterContent( text = stringResource(Res.string.game_master__action), ) Switch( + colors = LwaSwitchColors(), checked = gameMaster.value, - colors = MaterialTheme.lwa.colorScheme.component.switch, onCheckedChange = null, ) } @@ -195,8 +201,10 @@ private fun GameMasterContent( }, ), state = filterChipsState, - contentPadding = remember { PaddingValues(all = 8.dp) }, - horizontalArrangement = Arrangement.spacedBy(space = 8.dp), + contentPadding = remember(padding, spacing) { + PaddingValues(horizontal = padding, vertical = spacing) + }, + horizontalArrangement = Arrangement.spacedBy(space = spacing), ) { items( items = tags.value, @@ -217,13 +225,13 @@ private fun GameMasterContent( modifier = Modifier.matchParentSize(), contentPadding = remember { PaddingValues( - start = 8.dp, - top = 8.dp, - end = 8.dp, - bottom = 8.dp + 48.dp + 8.dp, + start = padding, + top = padding, + end = padding, + bottom = padding + 48.dp + padding, ) }, - verticalArrangement = Arrangement.spacedBy(space = 8.dp), + verticalArrangement = Arrangement.spacedBy(space = spacing), ) { items( items = characters.value, @@ -243,11 +251,10 @@ private fun GameMasterContent( ) } } - IconButton( modifier = Modifier .align(alignment = Alignment.BottomEnd) - .padding(all = 8.dp) + .padding(all = padding) .background( color = MaterialTheme.lwa.colorScheme.base.primary, shape = CircleShape, diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/gamemaster/GameMasterViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/gamemaster/GameMasterViewModel.kt index 53825ed..8e9e986 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/gamemaster/GameMasterViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/gamemaster/GameMasterViewModel.kt @@ -13,10 +13,11 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking import lwacharactersheet.composeapp.generated.resources.Res +import lwacharactersheet.composeapp.generated.resources.game_master__character__filter import lwacharactersheet.composeapp.generated.resources.game_master__character_tag__character_search import lwacharactersheet.composeapp.generated.resources.game_master__character_tag__npc_search import org.jetbrains.compose.resources.getString @@ -32,7 +33,7 @@ class GameMasterViewModel( private val _filter = MutableStateFlow("") val filter = LwaTextFieldUio( enable = true, - labelFlow = MutableStateFlow("Filtre"), + labelFlow = MutableStateFlow(runBlocking { getString(Res.string.game_master__character__filter) }), valueFlow = _filter, placeHolderFlow = MutableStateFlow(null), onValueChange = { _filter.value = it }, diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/LwaColors.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/LwaColors.kt index 3095c03..d1b1a24 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/LwaColors.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/LwaColors.kt @@ -1,7 +1,6 @@ package com.pixelized.desktop.lwa.ui.theme.color import androidx.compose.material.Colors -import androidx.compose.material.SwitchColors import androidx.compose.material.darkColors import androidx.compose.runtime.Composable import androidx.compose.runtime.ReadOnlyComposable @@ -11,23 +10,16 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.compositeOver import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.ui.theme.color.component.lwaSwitch import kotlin.math.ln @Stable data class LwaColors( val base: Colors, - val component: Component, val elevated: Elevated, val portrait: Portrait, val portraitBackgroundBrush: Brush, val chat: Chat, ) { - @Stable - data class Component( - val switch: SwitchColors, - ) - @Stable data class Elevated( val base1dp: Color, @@ -80,9 +72,6 @@ fun darkLwaColorTheme( elevation = 4.dp, ), ), - component: LwaColors.Component = LwaColors.Component( - switch = lwaSwitch(base = base), - ), portraitBackgroundBrush: Brush = Brush.verticalGradient( listOf( elevated.base1dp.copy(alpha = 0.0f), @@ -107,7 +96,6 @@ fun darkLwaColorTheme( ), ): LwaColors = LwaColors( base = base, - component = component, elevated = elevated, portrait = portrait, portraitBackgroundBrush = portraitBackgroundBrush, diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaCheckboxColors.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaCheckboxColors.kt new file mode 100644 index 0000000..1c45066 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaCheckboxColors.kt @@ -0,0 +1,17 @@ +package com.pixelized.desktop.lwa.ui.theme.color.component + +import androidx.compose.material.CheckboxColors +import androidx.compose.material.CheckboxDefaults +import androidx.compose.material.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable +import com.pixelized.desktop.lwa.ui.theme.color.LwaColors +import com.pixelized.desktop.lwa.ui.theme.lwa + +@Composable +@Stable +fun LwaCheckboxColors( + colors: LwaColors = MaterialTheme.lwa.colorScheme, +): CheckboxColors = CheckboxDefaults.colors( + checkedColor = colors.base.primary, +) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaSwitch.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaSwitch.kt deleted file mode 100644 index 418b92e..0000000 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaSwitch.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.pixelized.desktop.lwa.ui.theme.color.component - -import androidx.compose.material.Colors -import androidx.compose.material.SwitchDefaults -import androidx.compose.runtime.Composable -import androidx.compose.runtime.Stable - -@Composable -@Stable -fun lwaSwitch( - base: Colors -) = SwitchDefaults.colors( - checkedThumbColor = base.primary, -) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaSwitchColors.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaSwitchColors.kt new file mode 100644 index 0000000..a3f6a88 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaSwitchColors.kt @@ -0,0 +1,16 @@ +package com.pixelized.desktop.lwa.ui.theme.color.component + +import androidx.compose.material.MaterialTheme +import androidx.compose.material.SwitchDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable +import com.pixelized.desktop.lwa.ui.theme.color.LwaColors +import com.pixelized.desktop.lwa.ui.theme.lwa + +@Composable +@Stable +fun LwaSwitchColors( + colors: LwaColors = MaterialTheme.lwa.colorScheme, +) = SwitchDefaults.colors( + checkedThumbColor = colors.base.primary, +) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaTextFieldColors.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaTextFieldColors.kt new file mode 100644 index 0000000..1267ee9 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/component/LwaTextFieldColors.kt @@ -0,0 +1,20 @@ +package com.pixelized.desktop.lwa.ui.theme.color.component + +import androidx.compose.material.MaterialTheme +import androidx.compose.material.TextFieldColors +import androidx.compose.material.TextFieldDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable +import androidx.compose.ui.graphics.Color +import com.pixelized.desktop.lwa.ui.theme.color.LwaColors +import com.pixelized.desktop.lwa.ui.theme.lwa + +@Composable +@Stable +fun LwaTextFieldColors( + colors: LwaColors = MaterialTheme.lwa.colorScheme, +): TextFieldColors = TextFieldDefaults.textFieldColors( + backgroundColor = colors.elevated.base1dp, + disabledIndicatorColor = Color.Transparent, + unfocusedIndicatorColor = Color.Transparent, +) \ No newline at end of file