diff --git a/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/parts/CatalogTupleRow.kt b/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/parts/CatalogTupleRow.kt index f0cd0c4..c21124d 100644 --- a/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/parts/CatalogTupleRow.kt +++ b/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/parts/CatalogTupleRow.kt @@ -10,7 +10,6 @@ import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi -import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding @@ -18,8 +17,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.SuggestionChip -import androidx.compose.material3.SuggestionChipDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -28,16 +25,16 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.withStyle +import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp +import androidx.core.text.trimmedLength import coil.compose.AsyncImage import coil.request.ImageRequest -import dev.marlonlom.apps.cappajv.R import dev.marlonlom.apps.cappajv.core.database.entities.CatalogItemTuple import dev.marlonlom.apps.cappajv.ui.layout.DevicePosture import dev.marlonlom.apps.cappajv.ui.main.CappajvAppState @@ -60,9 +57,6 @@ internal fun CatalogTupleRow( onCatalogItemTupleClicked: (Long) -> Unit, modifier: Modifier = Modifier, ) { - - val imageSizeDp = getCatalogTupleImageSizeDp(appState) - Card( modifier = modifier.fillMaxWidth(), shape = CardDefaults.outlinedShape, @@ -72,103 +66,133 @@ internal fun CatalogTupleRow( }, ) { Row( - modifier.padding(10.dp), + modifier = modifier.padding(vertical = 10.dp), verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(20.dp) + horizontalArrangement = Arrangement.spacedBy(16.dp) ) { - val imageRequest = ImageRequest.Builder(LocalContext.current) - .data(tuple.picture) - .crossfade(true) - .build() + CatalogTuplePosterImage(tuple, appState) + Column( + modifier = modifier + .fillMaxWidth() + .padding(end = 10.dp) + ) { + CatalogTupleTitle(tuple, appState) + CatalogTupleSamplePunctuationText(tuple) + } + } + } +} - AsyncImage( - model = imageRequest, - contentDescription = tuple.title, - contentScale = ContentScale.Crop, - modifier = Modifier - .border( - width = 2.dp, - color = MaterialTheme.colorScheme.secondary, - shape = MaterialTheme.shapes.medium, - ) - .clip(MaterialTheme.shapes.medium) - .size(imageSizeDp) - .background(Color.White), +/** + * Catalog tuple sample punctuation text composable ui. + * + * @author marlonlom + * + * @param tuple Catalog item. + */ +@Composable +private fun CatalogTupleSamplePunctuationText( + tuple: CatalogItemTuple +) { + val samplePunctuationTxt = buildAnnotatedString { + val textParts = tuple.samplePunctuation.split(":") + withStyle( + SpanStyle( + fontWeight = FontWeight.SemiBold, + color = MaterialTheme.colorScheme.secondary, ) - - Column { - Text( - text = tuple.title, - style = getCatalogTupleTitleStyle(appState), - maxLines = 1, - overflow = TextOverflow.Ellipsis, - fontWeight = FontWeight.SemiBold + ) { + val punctuationTitle = when { + textParts[0].trimmedLength() > 10 -> textParts[0].split(" ")[0].plus(" ...") + else -> textParts[0] + } + append(punctuationTitle) + } + append(": ") + append(textParts[1].trim()) + if (tuple.punctuationsCount > 1) { + append(" ") + withStyle( + SpanStyle( + fontWeight = FontWeight.SemiBold, + color = MaterialTheme.colorScheme.secondary, ) - FlowRow( - horizontalArrangement = Arrangement.spacedBy(10.dp), - ) { - SuggestionChip( - onClick = { }, - colors = SuggestionChipDefaults.suggestionChipColors( - containerColor = MaterialTheme.colorScheme.tertiaryContainer, - labelColor = MaterialTheme.colorScheme.onTertiaryContainer - ), - label = { - val samplePunctuationTxt = buildAnnotatedString { - val textParts = tuple.samplePunctuation.split(":") - withStyle(SpanStyle(fontWeight = FontWeight.SemiBold)) { - append(textParts[0]) - } - append(": ") - append(textParts[1].trim()) - } - Text(text = samplePunctuationTxt) - }, - shape = MaterialTheme.shapes.small, - ) - - if (tuple.punctuationsCount > 1) { - Text( - text = gePunctuationCountText( - appState = appState, - punctuationsCount = tuple.punctuationsCount - 1 - ), - modifier = Modifier.align(Alignment.CenterVertically) - ) - } - } + ) { + append("(+ ${tuple.punctuationsCount - 1})") } } } + Text( + text = samplePunctuationTxt, + style = MaterialTheme.typography.labelMedium, + ) } +/** + * Catalog tuple item title composable text. + * + * @author marlonlom + * + * @param tuple Catalog item tuple data. + * @param appState Application ui state. + */ @Composable -private fun gePunctuationCountText( - appState: CappajvAppState, - punctuationsCount: Int, -) = when { - appState.isCompactWidth.and(appState.isLandscape.not()) - .and(appState.devicePosture is DevicePosture.Separating.TableTop) -> "+$punctuationsCount" +private fun CatalogTupleTitle( + tuple: CatalogItemTuple, appState: CappajvAppState +) { + Text( + text = tuple.title, + style = getCatalogTupleTitleStyle(appState), + color = MaterialTheme.colorScheme.secondary, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + fontWeight = FontWeight.SemiBold + ) +} - else -> stringResource( - R.string.text_catalog_hint_more_punctuations, - punctuationsCount +/** + * Catalog tuple item poster image composable. + * + * @author marlonlom + * + * @param tuple Catalog item tuple data. + * @param appState Application ui state. + */ +@Composable +private fun CatalogTuplePosterImage( + tuple: CatalogItemTuple, appState: CappajvAppState +) { + val imageRequest = ImageRequest.Builder(LocalContext.current).data(tuple.picture).crossfade(true).build() + + AsyncImage( + model = imageRequest, + contentDescription = tuple.title, + contentScale = ContentScale.Crop, + modifier = Modifier + .border( + width = 2.dp, + color = MaterialTheme.colorScheme.secondary, + shape = MaterialTheme.shapes.medium, + ) + .clip(MaterialTheme.shapes.medium) + .size(getCatalogTupleImageSizeDp(appState)) + .background(Color.White), ) } @Composable -private fun getCatalogTupleImageSizeDp(appState: CappajvAppState) = when { +private fun getCatalogTupleImageSizeDp(appState: CappajvAppState): DpSize = when { appState.isCompactWidth.and(appState.isLandscape.not()) - .and(appState.devicePosture is DevicePosture.Separating.TableTop) -> 56.dp + .and(appState.devicePosture is DevicePosture.Separating.TableTop) -> DpSize(48.dp, 56.dp) - else -> 100.dp + else -> DpSize(56.dp, 64.dp) } @Composable private fun getCatalogTupleTitleStyle(appState: CappajvAppState) = when { appState.isCompactWidth.and(appState.isLandscape.not()) - .and(appState.devicePosture is DevicePosture.Separating.TableTop) -> MaterialTheme.typography.titleMedium + .and(appState.devicePosture is DevicePosture.Separating.TableTop) -> MaterialTheme.typography.bodyMedium - else -> MaterialTheme.typography.titleLarge + else -> MaterialTheme.typography.bodyLarge } diff --git a/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/CompactTableTopCatalogListScreen.kt b/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/CompactTableTopCatalogListScreen.kt index c4488c2..7de75bf 100644 --- a/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/CompactTableTopCatalogListScreen.kt +++ b/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/CompactTableTopCatalogListScreen.kt @@ -72,7 +72,6 @@ fun CompactTableTopCatalogListScreen( categories = categories, selectedCategory = selectedCategory, onCategoryChipSelected = { onSelectedCategoryChanged(it) }, - isScrollable = true ) } diff --git a/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/DefaultPortraitCatalogListScreen.kt b/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/DefaultPortraitCatalogListScreen.kt index 7d37d1c..11d07aa 100644 --- a/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/DefaultPortraitCatalogListScreen.kt +++ b/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/DefaultPortraitCatalogListScreen.kt @@ -50,8 +50,8 @@ fun DefaultPortraitCatalogListScreen( ) { Column( modifier = modifier - .fillMaxWidth() - .safeContentPadding(), + .fillMaxWidth() + .safeContentPadding(), horizontalAlignment = Alignment.CenterHorizontally ) { CatalogListHeadline(appState) @@ -60,7 +60,6 @@ fun DefaultPortraitCatalogListScreen( categories = categories, selectedCategory = selectedCategory, onCategoryChipSelected = { onSelectedCategoryChanged(it) }, - isScrollable = true, ) CatalogListTuplesSlot( appState = appState, diff --git a/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/slots/CatalogCategoriesChipGroup.kt b/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/slots/CatalogCategoriesChipGroup.kt index f3d1985..a067d97 100644 --- a/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/slots/CatalogCategoriesChipGroup.kt +++ b/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/slots/CatalogCategoriesChipGroup.kt @@ -7,7 +7,6 @@ package dev.marlonlom.apps.cappajv.features.catalog_list.slots import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.ExperimentalLayoutApi -import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items @@ -33,7 +32,6 @@ import androidx.compose.ui.unit.dp * * @param selectedCategory Selected category. * @param onCategoryChipSelected Action for category changed. - * @param isScrollable True/False if scroll is handled, default to false. */ @ExperimentalLayoutApi @Composable @@ -41,7 +39,6 @@ fun CatalogCategoriesChipGroup( categories: List, selectedCategory: String, onCategoryChipSelected: (String) -> Unit, - isScrollable: Boolean = false, ) { val list = categories.mapIndexed { index, category -> Pair( @@ -74,31 +71,17 @@ fun CatalogCategoriesChipGroup( ) } - if (isScrollable) { - LazyRow( - horizontalArrangement = Arrangement.spacedBy( - space = 10.dp, - alignment = Alignment.Start, - ), - ) { - items( - items = list, - key = { it.first } - ) { category -> - addCategoryFilterChip(category) - } - } - } else { - FlowRow( - horizontalArrangement = Arrangement.spacedBy( - space = 10.dp, - alignment = Alignment.Start, - ), - verticalArrangement = Arrangement.spacedBy(4.dp), - ) { - list.forEach { category -> - addCategoryFilterChip(category) - } + LazyRow( + horizontalArrangement = Arrangement.spacedBy( + space = 10.dp, + alignment = Alignment.Start, + ), + ) { + items( + items = list, + key = { it.first } + ) { category -> + addCategoryFilterChip(category) } } } diff --git a/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/slots/CatalogListBanner.kt b/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/slots/CatalogListBanner.kt index c168639..3db0a7a 100644 --- a/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/slots/CatalogListBanner.kt +++ b/apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/slots/CatalogListBanner.kt @@ -114,7 +114,7 @@ fun CatalogListBanner( private fun BannerCard( pageIndex: Int, pagerState: PagerState, - bannerImage: Painter + bannerImage: Painter, ) { Card( onClick = {}, @@ -164,7 +164,7 @@ fun HorizontalPagerIndicator( modifier: Modifier = Modifier, ) { Row( - Modifier + modifier .wrapContentHeight() .fillMaxWidth() .padding(bottom = 10.dp), @@ -172,7 +172,10 @@ fun HorizontalPagerIndicator( horizontalArrangement = Arrangement.Center ) { repeat(pagerState.pageCount) { iteration -> - val color = if (pagerState.currentPage == iteration) activeColor else Color.LightGray + val color = when (pagerState.currentPage) { + iteration -> activeColor + else -> activeColor.copy(alpha = 0.25f) + } Box( modifier = modifier .padding(2.dp) diff --git a/apps/mobile-app/src/main/res/values-es/strings.xml b/apps/mobile-app/src/main/res/values-es/strings.xml index 5b93824..c487a1d 100644 --- a/apps/mobile-app/src/main/res/values-es/strings.xml +++ b/apps/mobile-app/src/main/res/values-es/strings.xml @@ -10,16 +10,6 @@ Buscar Ajustes Detalle - disfruta - Productos exclusivos - El catálogo se está cargando… - buscar - Productos del catálogo - Buscando en el catálogo… - Puntos - configuraciones de la - Aplicación - Versión de la aplicación Favoritos Bienvenidos @@ -28,7 +18,6 @@ Consigue nuestros premios Nuestros productos - %1$s más Todos Bebidas frías diff --git a/apps/mobile-app/src/main/res/values/colors.xml b/apps/mobile-app/src/main/res/values/colors.xml index fcbc458..4901419 100644 --- a/apps/mobile-app/src/main/res/values/colors.xml +++ b/apps/mobile-app/src/main/res/values/colors.xml @@ -5,40 +5,4 @@ ~ SPDX-License-Identifier: Apache-2.0 --> - - #000000 - #1F1B16 - #2B1700 - #2F1400 - #352F2A - #410002 - #472A00 - #482A00 - #4E2600 - #504539 - #663D00 - #663E00 - #690005 - #6F3800 - #827568 - #865300 - #875200 - #924C00 - #93000A - #9D8E81 - #BA1A1A - #D4C4B5 - #EBE1D9 - #F1E0D0 - #F9EFE7 - #FFB4AB - #FFB781 - #FFB865 - #FFB963 - #FFDAD6 - #FFDCC4 - #FFDDB9 - #FFDDBA - #FFFBFF - #FFFFFF - + diff --git a/apps/mobile-app/src/main/res/values/fonts_certs.xml b/apps/mobile-app/src/main/res/values/fonts_certs.xml index 566bb38..4901419 100644 --- a/apps/mobile-app/src/main/res/values/fonts_certs.xml +++ b/apps/mobile-app/src/main/res/values/fonts_certs.xml @@ -5,19 +5,4 @@ ~ SPDX-License-Identifier: Apache-2.0 --> - - - @array/com_google_android_gms_fonts_certs_dev - @array/com_google_android_gms_fonts_certs_prod - - - - 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 - - - + diff --git a/apps/mobile-app/src/main/res/values/strings.xml b/apps/mobile-app/src/main/res/values/strings.xml index e4484dc..c63d05f 100644 --- a/apps/mobile-app/src/main/res/values/strings.xml +++ b/apps/mobile-app/src/main/res/values/strings.xml @@ -11,16 +11,6 @@ Search Settings Detail - enjoy - Exclusive products - Catalog is loading… - search - Catalog products - Looking in the catalog… - Points - application - Settings - Application version Favorites Welcome @@ -29,7 +19,6 @@ Get our rewards Our products - %1$s more All Cold drinks