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__title">Admin</string>
|
||||||
<string name="game_master__action">GameMaster</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_level__label">niv: %1$d</string>
|
||||||
<string name="game_master__character_tag__character_search">Joueur</string>
|
<string name="game_master__character_tag__character_search">Joueur</string>
|
||||||
<string name="game_master__character_tag__character_label">Joueur-%1$d</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
|
package com.pixelized.desktop.lwa.ui.composable.textfield
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.material.MaterialTheme
|
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.TextField
|
import androidx.compose.material.TextField
|
||||||
import androidx.compose.material.TextFieldDefaults
|
import androidx.compose.material.TextFieldColors
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Stable
|
import androidx.compose.runtime.Stable
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.focus.FocusDirection
|
import androidx.compose.ui.focus.FocusDirection
|
||||||
import androidx.compose.ui.platform.LocalFocusManager
|
import androidx.compose.ui.platform.LocalFocusManager
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import com.pixelized.desktop.lwa.ui.theme.color.component.LwaTextFieldColors
|
||||||
import com.pixelized.desktop.lwa.utils.rememberKeyboardActions
|
import com.pixelized.desktop.lwa.utils.rememberKeyboardActions
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
|
||||||
|
|
@ -29,13 +28,13 @@ data class LwaTextFieldUio(
|
||||||
@Composable
|
@Composable
|
||||||
fun LwaTextField(
|
fun LwaTextField(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
|
colors: TextFieldColors = LwaTextFieldColors(),
|
||||||
leadingIcon: @Composable (() -> Unit)? = null,
|
leadingIcon: @Composable (() -> Unit)? = null,
|
||||||
trailingIcon: @Composable (() -> Unit)? = null,
|
trailingIcon: @Composable (() -> Unit)? = null,
|
||||||
singleLine: Boolean = true,
|
singleLine: Boolean = true,
|
||||||
field: LwaTextFieldUio,
|
field: LwaTextFieldUio,
|
||||||
) {
|
) {
|
||||||
val focus = LocalFocusManager.current
|
val focus = LocalFocusManager.current
|
||||||
val colorScheme = MaterialTheme.colors
|
|
||||||
|
|
||||||
val localModifier = if (singleLine) {
|
val localModifier = if (singleLine) {
|
||||||
Modifier.height(height = 56.dp)
|
Modifier.height(height = 56.dp)
|
||||||
|
|
@ -49,14 +48,7 @@ fun LwaTextField(
|
||||||
|
|
||||||
TextField(
|
TextField(
|
||||||
modifier = localModifier.then(other = modifier),
|
modifier = localModifier.then(other = modifier),
|
||||||
colors = TextFieldDefaults.textFieldColors(
|
colors = colors,
|
||||||
backgroundColor = remember(field.enable) {
|
|
||||||
when (field.enable) {
|
|
||||||
true -> colorScheme.onSurface.copy(alpha = 0.03f)
|
|
||||||
else -> colorScheme.surface
|
|
||||||
}
|
|
||||||
},
|
|
||||||
),
|
|
||||||
keyboardActions = rememberKeyboardActions {
|
keyboardActions = rememberKeyboardActions {
|
||||||
focus.moveFocus(FocusDirection.Next)
|
focus.moveFocus(FocusDirection.Next)
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import androidx.compose.runtime.Stable
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import com.pixelized.desktop.lwa.ui.theme.color.component.LwaCheckboxColors
|
||||||
import com.pixelized.desktop.lwa.ui.theme.lwa
|
import com.pixelized.desktop.lwa.ui.theme.lwa
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
|
|
@ -32,6 +33,7 @@ fun LevelUpField(
|
||||||
text = field.label,
|
text = field.label,
|
||||||
)
|
)
|
||||||
Checkbox(
|
Checkbox(
|
||||||
|
colors = LwaCheckboxColors(),
|
||||||
checked = field.checked.value,
|
checked = field.checked.value,
|
||||||
onCheckedChange = field.onCheck,
|
onCheckedChange = field.onCheck,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxHeight
|
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
|
@ -30,7 +29,9 @@ import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.Scaffold
|
import androidx.compose.material.Scaffold
|
||||||
import androidx.compose.material.Surface
|
import androidx.compose.material.Surface
|
||||||
import androidx.compose.material.Switch
|
import androidx.compose.material.Switch
|
||||||
|
import androidx.compose.material.SwitchColors
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
|
import androidx.compose.material.TextFieldDefaults
|
||||||
import androidx.compose.material.TopAppBar
|
import androidx.compose.material.TopAppBar
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.Add
|
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.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.clip
|
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 androidx.compose.ui.unit.dp
|
||||||
import com.pixelized.desktop.lwa.LocalWindowController
|
import com.pixelized.desktop.lwa.LocalWindowController
|
||||||
import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextField
|
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.GMCharacterUio
|
||||||
import com.pixelized.desktop.lwa.ui.screen.gamemaster.items.GMTag
|
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.screen.gamemaster.items.GMTagUio
|
||||||
|
import com.pixelized.desktop.lwa.ui.theme.color.component.LwaSwitchColors
|
||||||
import com.pixelized.desktop.lwa.ui.theme.lwa
|
import com.pixelized.desktop.lwa.ui.theme.lwa
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import lwacharactersheet.composeapp.generated.resources.Res
|
import lwacharactersheet.composeapp.generated.resources.Res
|
||||||
|
|
@ -110,6 +114,8 @@ fun GameMasterScreen(
|
||||||
@Composable
|
@Composable
|
||||||
private fun GameMasterContent(
|
private fun GameMasterContent(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
|
padding: Dp = 16.dp,
|
||||||
|
spacing: Dp = 8.dp,
|
||||||
filterChipsState: LazyListState = rememberLazyListState(),
|
filterChipsState: LazyListState = rememberLazyListState(),
|
||||||
filter: LwaTextFieldUio,
|
filter: LwaTextFieldUio,
|
||||||
tags: State<List<GMTagUio>>,
|
tags: State<List<GMTagUio>>,
|
||||||
|
|
@ -147,8 +153,8 @@ private fun GameMasterContent(
|
||||||
text = stringResource(Res.string.game_master__action),
|
text = stringResource(Res.string.game_master__action),
|
||||||
)
|
)
|
||||||
Switch(
|
Switch(
|
||||||
|
colors = LwaSwitchColors(),
|
||||||
checked = gameMaster.value,
|
checked = gameMaster.value,
|
||||||
colors = MaterialTheme.lwa.colorScheme.component.switch,
|
|
||||||
onCheckedChange = null,
|
onCheckedChange = null,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -195,8 +201,10 @@ private fun GameMasterContent(
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
state = filterChipsState,
|
state = filterChipsState,
|
||||||
contentPadding = remember { PaddingValues(all = 8.dp) },
|
contentPadding = remember(padding, spacing) {
|
||||||
horizontalArrangement = Arrangement.spacedBy(space = 8.dp),
|
PaddingValues(horizontal = padding, vertical = spacing)
|
||||||
|
},
|
||||||
|
horizontalArrangement = Arrangement.spacedBy(space = spacing),
|
||||||
) {
|
) {
|
||||||
items(
|
items(
|
||||||
items = tags.value,
|
items = tags.value,
|
||||||
|
|
@ -217,13 +225,13 @@ private fun GameMasterContent(
|
||||||
modifier = Modifier.matchParentSize(),
|
modifier = Modifier.matchParentSize(),
|
||||||
contentPadding = remember {
|
contentPadding = remember {
|
||||||
PaddingValues(
|
PaddingValues(
|
||||||
start = 8.dp,
|
start = padding,
|
||||||
top = 8.dp,
|
top = padding,
|
||||||
end = 8.dp,
|
end = padding,
|
||||||
bottom = 8.dp + 48.dp + 8.dp,
|
bottom = padding + 48.dp + padding,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
verticalArrangement = Arrangement.spacedBy(space = 8.dp),
|
verticalArrangement = Arrangement.spacedBy(space = spacing),
|
||||||
) {
|
) {
|
||||||
items(
|
items(
|
||||||
items = characters.value,
|
items = characters.value,
|
||||||
|
|
@ -243,11 +251,10 @@ private fun GameMasterContent(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IconButton(
|
IconButton(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.align(alignment = Alignment.BottomEnd)
|
.align(alignment = Alignment.BottomEnd)
|
||||||
.padding(all = 8.dp)
|
.padding(all = padding)
|
||||||
.background(
|
.background(
|
||||||
color = MaterialTheme.lwa.colorScheme.base.primary,
|
color = MaterialTheme.lwa.colorScheme.base.primary,
|
||||||
shape = CircleShape,
|
shape = CircleShape,
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,11 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.SharingStarted
|
import kotlinx.coroutines.flow.SharingStarted
|
||||||
import kotlinx.coroutines.flow.combine
|
import kotlinx.coroutines.flow.combine
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.coroutines.flow.mapLatest
|
|
||||||
import kotlinx.coroutines.flow.stateIn
|
import kotlinx.coroutines.flow.stateIn
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
import lwacharactersheet.composeapp.generated.resources.Res
|
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__character_search
|
||||||
import lwacharactersheet.composeapp.generated.resources.game_master__character_tag__npc_search
|
import lwacharactersheet.composeapp.generated.resources.game_master__character_tag__npc_search
|
||||||
import org.jetbrains.compose.resources.getString
|
import org.jetbrains.compose.resources.getString
|
||||||
|
|
@ -32,7 +33,7 @@ class GameMasterViewModel(
|
||||||
private val _filter = MutableStateFlow("")
|
private val _filter = MutableStateFlow("")
|
||||||
val filter = LwaTextFieldUio(
|
val filter = LwaTextFieldUio(
|
||||||
enable = true,
|
enable = true,
|
||||||
labelFlow = MutableStateFlow("Filtre"),
|
labelFlow = MutableStateFlow(runBlocking { getString(Res.string.game_master__character__filter) }),
|
||||||
valueFlow = _filter,
|
valueFlow = _filter,
|
||||||
placeHolderFlow = MutableStateFlow(null),
|
placeHolderFlow = MutableStateFlow(null),
|
||||||
onValueChange = { _filter.value = it },
|
onValueChange = { _filter.value = it },
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.pixelized.desktop.lwa.ui.theme.color
|
package com.pixelized.desktop.lwa.ui.theme.color
|
||||||
|
|
||||||
import androidx.compose.material.Colors
|
import androidx.compose.material.Colors
|
||||||
import androidx.compose.material.SwitchColors
|
|
||||||
import androidx.compose.material.darkColors
|
import androidx.compose.material.darkColors
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.ReadOnlyComposable
|
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.graphics.compositeOver
|
||||||
import androidx.compose.ui.unit.Dp
|
import androidx.compose.ui.unit.Dp
|
||||||
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
|
import kotlin.math.ln
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class LwaColors(
|
data class LwaColors(
|
||||||
val base: Colors,
|
val base: Colors,
|
||||||
val component: Component,
|
|
||||||
val elevated: Elevated,
|
val elevated: Elevated,
|
||||||
val portrait: Portrait,
|
val portrait: Portrait,
|
||||||
val portraitBackgroundBrush: Brush,
|
val portraitBackgroundBrush: Brush,
|
||||||
val chat: Chat,
|
val chat: Chat,
|
||||||
) {
|
) {
|
||||||
@Stable
|
|
||||||
data class Component(
|
|
||||||
val switch: SwitchColors,
|
|
||||||
)
|
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class Elevated(
|
data class Elevated(
|
||||||
val base1dp: Color,
|
val base1dp: Color,
|
||||||
|
|
@ -80,9 +72,6 @@ fun darkLwaColorTheme(
|
||||||
elevation = 4.dp,
|
elevation = 4.dp,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
component: LwaColors.Component = LwaColors.Component(
|
|
||||||
switch = lwaSwitch(base = base),
|
|
||||||
),
|
|
||||||
portraitBackgroundBrush: Brush = Brush.verticalGradient(
|
portraitBackgroundBrush: Brush = Brush.verticalGradient(
|
||||||
listOf(
|
listOf(
|
||||||
elevated.base1dp.copy(alpha = 0.0f),
|
elevated.base1dp.copy(alpha = 0.0f),
|
||||||
|
|
@ -107,7 +96,6 @@ fun darkLwaColorTheme(
|
||||||
),
|
),
|
||||||
): LwaColors = LwaColors(
|
): LwaColors = LwaColors(
|
||||||
base = base,
|
base = base,
|
||||||
component = component,
|
|
||||||
elevated = elevated,
|
elevated = elevated,
|
||||||
portrait = portrait,
|
portrait = portrait,
|
||||||
portraitBackgroundBrush = portraitBackgroundBrush,
|
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