From c4d040d456457f1bb5ad225c2db935ce05e4aaf8 Mon Sep 17 00:00:00 2001 From: Fabian DEVEL Date: Fri, 31 Jan 2025 08:22:11 +0100 Subject: [PATCH] refactor(MyKSuiteChip): Use image with background instead of material Chip --- .../myksuite/ui/components/MyKSuiteChips.kt | 52 +++++++------------ .../ui/screens/MyKSuiteDashboardScreen.kt | 4 +- .../myksuite/ui/views/BaseMyKSuiteChipView.kt | 13 ++--- .../lib/myksuite/ui/views/MyKSuiteChipView.kt | 7 +-- .../myksuite/ui/views/MyKSuitePlusChipView.kt | 7 +-- 5 files changed, 27 insertions(+), 56 deletions(-) diff --git a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/components/MyKSuiteChips.kt b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/components/MyKSuiteChips.kt index 85da5267..0f5fa46b 100644 --- a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/components/MyKSuiteChips.kt +++ b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/components/MyKSuiteChips.kt @@ -18,62 +18,48 @@ package com.infomaniak.lib.myksuite.ui.components import android.content.res.Configuration +import androidx.annotation.DrawableRes import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.SuggestionChip -import androidx.compose.material3.SuggestionChipDefaults import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.tooling.preview.Preview import com.infomaniak.lib.myksuite.R import com.infomaniak.lib.myksuite.ui.theme.Dimens +import com.infomaniak.lib.myksuite.ui.theme.Margin import com.infomaniak.lib.myksuite.ui.theme.MyKSuiteTheme @Composable -fun MyKSuitePlusChip(modifier: Modifier = Modifier, onClick: () -> Unit = {}) { - ThemedChip( - modifier = modifier, - label = { Image(ImageVector.vectorResource(R.drawable.ic_logo_my_ksuite_plus), contentDescription = "My kSuite +") }, - onClick = onClick, +fun MyKSuiteChip(modifier: Modifier = Modifier, @DrawableRes imageRes: Int) { + Image( + modifier = modifier + .background( + color = MyKSuiteTheme.colors.chipBackground, + shape = RoundedCornerShape(Dimens.largeCornerRadius), + ) + .padding(horizontal = Margin.Mini, vertical = Margin.Micro), + imageVector = ImageVector.vectorResource(imageRes), + contentDescription = stringResource(R.string.myKSuiteName), ) } -@Composable -fun MyKSuiteChip(modifier: Modifier = Modifier, onClick: () -> Unit = {}) { - ThemedChip( - modifier = modifier, - label = { Image(ImageVector.vectorResource(R.drawable.ic_logo_my_ksuite), contentDescription = "My kSuite") }, - onClick = onClick, - ) -} - -@Composable -private fun ThemedChip(modifier: Modifier = Modifier, label: @Composable () -> Unit, onClick: () -> Unit = {}) { - MyKSuiteTheme { - SuggestionChip( - modifier = modifier, - onClick = onClick, - label = label, - border = null, - shape = RoundedCornerShape(Dimens.largeCornerRadius), - colors = SuggestionChipDefaults.suggestionChipColors(containerColor = MyKSuiteTheme.colors.chipBackground), - ) - } -} - @Preview(name = "(1) Light") @Preview(name = "(2) Dark", uiMode = Configuration.UI_MODE_NIGHT_YES or Configuration.UI_MODE_TYPE_NORMAL) @Composable private fun Preview() { MyKSuiteTheme { Surface { - Column { - MyKSuitePlusChip {} - MyKSuiteChip {} + Column(verticalArrangement = Arrangement.spacedBy(Margin.Micro)) { + MyKSuiteChip(imageRes = R.drawable.ic_logo_my_ksuite) + MyKSuiteChip(imageRes = R.drawable.ic_logo_my_ksuite_plus) } } } diff --git a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/screens/MyKSuiteDashboardScreen.kt b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/screens/MyKSuiteDashboardScreen.kt index 7dd97fa6..d886fee0 100644 --- a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/screens/MyKSuiteDashboardScreen.kt +++ b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/screens/MyKSuiteDashboardScreen.kt @@ -135,7 +135,7 @@ private fun SubscriptionInfoCard( maxLines = 1, overflow = TextOverflow.Ellipsis, ) - MyKSuiteChip() + MyKSuiteChip(imageRes = R.drawable.ic_logo_my_ksuite) } PaddedDivider(paddedModifier) AppStorageQuotas(paddedModifier) @@ -173,7 +173,7 @@ private fun MyKSuitePlusPromotionCard(modifier: Modifier = Modifier, onButtonCli modifier = Modifier.width(88.dp), contentScale = ContentScale.FillWidth, imageVector = ImageVector.vectorResource(R.drawable.ic_logo_my_ksuite_plus), - contentDescription = "My kSuite +", + contentDescription = stringResource(R.string.myKSuitePlusName), ) WeightOneSpacer(minWidth = Margin.Large) Text( diff --git a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/BaseMyKSuiteChipView.kt b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/BaseMyKSuiteChipView.kt index 5de2d421..2f3b4df3 100644 --- a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/BaseMyKSuiteChipView.kt +++ b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/BaseMyKSuiteChipView.kt @@ -21,23 +21,18 @@ import android.content.Context import android.util.AttributeSet import androidx.compose.runtime.Composable import androidx.compose.ui.platform.AbstractComposeView +import com.infomaniak.lib.myksuite.R +import com.infomaniak.lib.myksuite.ui.components.MyKSuiteChip abstract class BaseMyKSuiteChipView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, + val isMyKSuitePlus: Boolean, ) : AbstractComposeView(context, attrs, defStyleAttr) { - protected var onClick: OnClickListener? = null - protected abstract val chipContent: @Composable () -> Unit - @Composable override fun Content() { - chipContent() - } - - override fun setOnClickListener(listerner: OnClickListener?) { - super.setOnClickListener(listerner) - onClick = listerner + MyKSuiteChip(imageRes = if (isMyKSuitePlus) R.drawable.ic_logo_my_ksuite_plus else R.drawable.ic_logo_my_ksuite) } } diff --git a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuiteChipView.kt b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuiteChipView.kt index ddcbcfb0..3c259e4a 100644 --- a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuiteChipView.kt +++ b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuiteChipView.kt @@ -19,14 +19,9 @@ package com.infomaniak.lib.myksuite.ui.views import android.content.Context import android.util.AttributeSet -import androidx.compose.runtime.Composable -import com.infomaniak.lib.myksuite.ui.components.MyKSuiteChip class MyKSuiteChipView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, -) : BaseMyKSuiteChipView(context, attrs, defStyleAttr) { - - override val chipContent = @Composable { MyKSuiteChip { onClick?.onClick(this) } } -} +) : BaseMyKSuiteChipView(context, attrs, defStyleAttr, isMyKSuitePlus = false) diff --git a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuitePlusChipView.kt b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuitePlusChipView.kt index b030b730..2d59958f 100644 --- a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuitePlusChipView.kt +++ b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuitePlusChipView.kt @@ -19,14 +19,9 @@ package com.infomaniak.lib.myksuite.ui.views import android.content.Context import android.util.AttributeSet -import androidx.compose.runtime.Composable -import com.infomaniak.lib.myksuite.ui.components.MyKSuitePlusChip class MyKSuitePlusChipView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, -) : BaseMyKSuiteChipView(context, attrs, defStyleAttr) { - - override val chipContent = @Composable { MyKSuitePlusChip { onClick?.onClick(this) } } -} +) : BaseMyKSuiteChipView(context, attrs, defStyleAttr, isMyKSuitePlus = true)