diff --git a/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/theme/Color.kt b/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/theme/Color.kt index d1236ab88..42ba2a6bc 100644 --- a/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/theme/Color.kt +++ b/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/theme/Color.kt @@ -37,7 +37,7 @@ fun ColorScheme.outlineVariant( .compositeOver(onTopOf) @Composable -fun takeColorFromScheme( +inline fun takeColorFromScheme( action: @Composable ColorScheme.(isNightMode: Boolean) -> Color ) = animateColorAsState( MaterialTheme.colorScheme.run { diff --git a/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/widget/controls/selection/ScaleModeSelector.kt b/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/widget/controls/selection/ScaleModeSelector.kt index d20c45e97..f099498c7 100644 --- a/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/widget/controls/selection/ScaleModeSelector.kt +++ b/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/widget/controls/selection/ScaleModeSelector.kt @@ -28,18 +28,19 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.staggeredgrid.LazyHorizontalStaggeredGrid import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridCells import androidx.compose.foundation.lazy.staggeredgrid.items import androidx.compose.foundation.lazy.staggeredgrid.rememberLazyStaggeredGridState -import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.ColorLens import androidx.compose.material3.Badge @@ -70,11 +71,14 @@ import ru.tech.imageresizershrinker.core.domain.image.model.ScaleColorSpace import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSettingsState import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant +import ru.tech.imageresizershrinker.core.ui.theme.takeColorFromScheme import ru.tech.imageresizershrinker.core.ui.utils.confetti.LocalConfettiHostState +import ru.tech.imageresizershrinker.core.ui.utils.provider.SafeLocalContainerColor import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButton import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedChip import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedModalBottomSheet +import ru.tech.imageresizershrinker.core.ui.widget.enhanced.hapticsClickable import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults import ru.tech.imageresizershrinker.core.ui.widget.modifier.animateShape import ru.tech.imageresizershrinker.core.ui.widget.modifier.container @@ -259,26 +263,42 @@ fun ScaleModeSelector( } } - //TODO: Add selection from here, also from anywhere where i have such sheets EnhancedModalBottomSheet( sheetContent = { - Column( - modifier = Modifier - .verticalScroll(rememberScrollState()) - .padding(8.dp), + LazyColumn( + modifier = Modifier.fillMaxSize(), + contentPadding = PaddingValues(8.dp), verticalArrangement = Arrangement.spacedBy(4.dp) ) { - entries.forEachIndexed { index, item -> + itemsIndexed(entries) { index, item -> + val selected by remember(value, item) { + derivedStateOf { + value::class.isInstance(item) + } + } + val containerColor = takeColorFromScheme { + if (selected) secondaryContainer + else SafeLocalContainerColor + } + val contentColor = takeColorFromScheme { + if (selected) onSecondaryContainer + else onSurface + } + Column( - Modifier + modifier = Modifier .fillMaxWidth() .container( + color = containerColor, shape = ContainerShapeDefaults.shapeForIndex( index = index, size = entries.size ), resultPadding = 0.dp ) + .hapticsClickable { + onValueChange(item) + } ) { TitleItem(text = stringResource(id = item.title)) Text( @@ -289,7 +309,8 @@ fun ScaleModeSelector( bottom = 16.dp ), fontSize = 14.sp, - lineHeight = 18.sp + lineHeight = 18.sp, + color = contentColor ) } }