From 6ab84777018b8382bb37533422761258d57fb7e4 Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Fri, 13 Oct 2023 13:10:45 +0300 Subject: [PATCH] Update style selectors --- .../{ColorCheckbox.kt => ColorSelector.kt} | 18 ++++++++++++++---- .../{MonetCheckbox.kt => MonetModeSelector.kt} | 13 ++++++++++++- .../feature/settings/display/DisplayScreen.kt | 2 +- 3 files changed, 27 insertions(+), 6 deletions(-) rename feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/{ColorCheckbox.kt => ColorSelector.kt} (89%) rename feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/{MonetCheckbox.kt => MonetModeSelector.kt} (92%) diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorCheckbox.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorSelector.kt similarity index 89% rename from feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorCheckbox.kt rename to feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorSelector.kt index 73daf62e..5d4b9df4 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorCheckbox.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorSelector.kt @@ -34,6 +34,7 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons @@ -42,6 +43,7 @@ import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -54,11 +56,19 @@ internal fun ColorSelector( modifier: Modifier = Modifier, selected: Color, onItemClick: (Color) -> Unit, - colorSchemes: List, - defaultColor: Color + colors: List, + defaultColor: Color, ) { + val listState = rememberLazyListState() + + LaunchedEffect(Unit) { + val index = colors.indexOf(selected) + if (index >= 0) listState.scrollToItem(index) + } + LazyRow( modifier = modifier, + state = listState, horizontalArrangement = Arrangement.spacedBy(8.dp) ) { // Default, Unitto colors @@ -70,7 +80,7 @@ internal fun ColorSelector( ) } - colorSchemes.forEach { + colors.forEach { item(it.value.toLong()) { ColorCheckbox( color = it, @@ -103,7 +113,7 @@ private fun ColorCheckbox( .padding(8.dp) .clip(CircleShape) .background(color) - .border(1.dp, Color.Black.copy(0.5f), CircleShape), + .border(1.dp, MaterialTheme.colorScheme.outline, CircleShape), ) AnimatedVisibility( visible = selected, diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetCheckbox.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetModeSelector.kt similarity index 92% rename from feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetCheckbox.kt rename to feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetModeSelector.kt index b8d7e5bd..bfd418ff 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetCheckbox.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetModeSelector.kt @@ -37,6 +37,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons @@ -47,6 +48,7 @@ import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -67,8 +69,16 @@ internal fun MonetModeSelector( customColor: Color, themingMode: ThemingMode, ) { + val listState = rememberLazyListState() + + LaunchedEffect(Unit) { + val index = monetModes.indexOf(selected) + if (index >= 0) listState.scrollToItem(index) + } + LazyRow( modifier = modifier, + state = listState, horizontalArrangement = Arrangement.spacedBy(8.dp) ) { items(monetModes) { monetMode -> @@ -114,7 +124,8 @@ private fun MonetModeCheckbox( .padding(8.dp) .clip(CircleShape) .background(MaterialTheme.colorScheme.secondary) - .border(1.dp, Color.Black.copy(0.5f), CircleShape), + .border(1.dp, MaterialTheme.colorScheme.outline, CircleShape), + contentAlignment = Alignment.BottomStart ) { // Is this bad? Yes. Does it work? Also yes. Box(modifier = Modifier diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayScreen.kt index 55558398..3bd86c4f 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayScreen.kt @@ -229,7 +229,7 @@ private fun DisplayScreen( modifier = Modifier.padding(top = 12.dp), selected = selectedColor, onItemClick = onColorChange, - colorSchemes = colorSchemes, + colors = colorSchemes, defaultColor = Color(0xFF186c31) ) },