Skip to content

Commit

Permalink
refactor(MyKSuiteChip): Use image with background instead of material…
Browse files Browse the repository at this point in the history
… Chip
  • Loading branch information
FabianDevel committed Feb 4, 2025
1 parent 9231feb commit c4d040d
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Original file line number Diff line number Diff line change
Expand Up @@ -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)

0 comments on commit c4d040d

Please sign in to comment.