Change some theming stuff
This commit is contained in:
		
							parent
							
								
									2b37dc2529
								
							
						
					
					
						commit
						2d164b265e
					
				
					 10 changed files with 81 additions and 51 deletions
				
			
		| 
						 | 
				
			
			@ -212,6 +212,7 @@
 | 
			
		|||
 | 
			
		||||
    <string name="game_master__title">Admin</string>
 | 
			
		||||
    <string name="game_master__action">GameMaster</string>
 | 
			
		||||
    <string name="game_master__character__filter">Filtrer par nom :</string>
 | 
			
		||||
    <string name="game_master__character_level__label">niv: %1$d</string>
 | 
			
		||||
    <string name="game_master__character_tag__character_search">Joueur</string>
 | 
			
		||||
    <string name="game_master__character_tag__character_label">Joueur-%1$d</string>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
        },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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,
 | 
			
		||||
        )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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<List<GMTagUio>>,
 | 
			
		||||
| 
						 | 
				
			
			@ -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,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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,
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -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,
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -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,
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -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,
 | 
			
		||||
)
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue