Address filter sheet color issue

This commit is contained in:
Rahul Patel
2024-08-13 02:43:49 +05:30
committed by Aayush Gupta
parent a5c7a23547
commit 2f30d53312
4 changed files with 52 additions and 7 deletions

View File

@@ -20,8 +20,12 @@
package com.aurora.store.view.ui.sheets
import android.content.DialogInterface
import android.content.res.ColorStateList
import android.os.Bundle
import android.view.View
import com.aurora.extensions.accentColor
import com.aurora.extensions.backgroundColor
import com.aurora.extensions.contrastingColor
import com.aurora.store.R
import com.aurora.store.data.model.Filter
import com.aurora.store.data.providers.FilterProvider
@@ -53,6 +57,7 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
private fun attachSingleChips() {
binding.filterGfs.apply {
applyColors()
isChecked = filter.gsfDependentApps
setOnCheckedChangeListener { _, checked ->
isChecked = checked
@@ -61,6 +66,7 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
}
binding.filterPaid.apply {
applyColors()
isChecked = filter.paidApps
setOnCheckedChangeListener { _, checked ->
isChecked = checked
@@ -69,6 +75,7 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
}
binding.filterAds.apply {
applyColors()
isChecked = filter.appsWithAds
setOnCheckedChangeListener { _, checked ->
isChecked = checked
@@ -87,6 +94,8 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
val chip = Chip(requireContext())
chip.id = index
chip.text = value
chip.textColors
chip.applyColors()
chip.isChecked = filter.downloads == downloadValues[index].toInt()
binding.downloadChips.addView(chip)
}
@@ -96,9 +105,10 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
}
ratingLabels.forEachIndexed { index, value ->
val chip = Chip(requireActivity())
val chip = Chip(requireContext())
chip.id = index
chip.text = value
chip.applyColors()
chip.isChecked = filter.rating == ratingValues[index].toFloat()
binding.ratingChips.addView(chip)
}
@@ -107,4 +117,21 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
filter = filter.copy(rating = ratingValues[checkedIds[0]].toFloat())
}
}
private fun Chip.applyColors() {
setTextColor(
ColorStateList(
arrayOf(
intArrayOf(android.R.attr.state_checked),
intArrayOf()
),
intArrayOf(
contrastingColor(requireContext().accentColor()),
contrastingColor(requireContext().backgroundColor())
)
)
)
checkedIconTint = ColorStateList.valueOf(contrastingColor(requireContext().accentColor()))
}
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Disabled -->
<item android:color="@android:color/transparent" android:state_enabled="false"/>
<!-- Selected -->
<item android:color="?attr/colorControlActivated" android:state_selected="true"/>
<item android:color="?attr/colorControlHighlight" android:state_checked="true"/>
<!-- Not selected -->
<item android:color="?android:colorBackground" />
</selector>

View File

@@ -108,21 +108,21 @@
<com.google.android.material.chip.Chip
android:id="@+id/filter_gfs"
style="@style/Widget.Material3.Chip.Filter"
style="@style/AppTheme.FilterChip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/action_filter_gsf_dependent_apps" />
<com.google.android.material.chip.Chip
android:id="@+id/filter_paid"
style="@style/Widget.Material3.Chip.Filter"
style="@style/AppTheme.FilterChip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/action_filter_paid_apps" />
<com.google.android.material.chip.Chip
android:id="@+id/filter_ads"
style="@style/Widget.Material3.Chip.Filter"
style="@style/AppTheme.FilterChip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/action_filter_apps_with_ads" />

View File

@@ -30,7 +30,7 @@
<item name="scrimBlack">@color/colorScrimBlack</item>
<item name="colorShimmer">@color/colorShimmer</item>
<item name="colorStroke">@color/colorStroke</item>
<item name="chipStyle">@style/Widget.Material3.Chip.Filter</item>
<item name="chipStyle">@style/AppTheme.FilterChip</item>
<item name="preferenceTheme">@style/AppTheme.PreferenceThemeOverlay</item>
</style>
@@ -60,7 +60,7 @@
<item name="scrimBlack">@color/colorScrimBlack</item>
<item name="colorShimmer">@color/colorShimmer</item>
<item name="colorStroke">@color/colorStroke</item>
<item name="chipStyle">@style/Widget.Material3.Chip.Filter</item>
<item name="chipStyle">@style/AppTheme.FilterChip</item>
<item name="preferenceTheme">@style/AppTheme.PreferenceThemeOverlay</item>
</style>
@@ -78,7 +78,7 @@
<item name="scrimBlack">@color/colorScrimBlack</item>
<item name="colorShimmer">@color/colorShimmerDark</item>
<item name="colorStroke">@color/colorStrokeDark</item>
<item name="chipStyle">@style/Widget.Material3.Chip.Filter</item>
<item name="chipStyle">@style/AppTheme.FilterChip</item>
<item name="preferenceTheme">@style/AppTheme.PreferenceThemeOverlay</item>
</style>
@@ -120,4 +120,10 @@
<style name="AppTheme.SwitchPreference" parent="@style/Preference.SwitchPreferenceCompat.Material">
<item name="widgetLayout">@layout/preference_material_switch</item>
</style>
<style name="AppTheme.FilterChip" parent="@style/Widget.Material3.Chip.Filter">
<item name="chipBackgroundColor">@drawable/filter_chip_background</item>
<item name="chipStrokeColor">?colorControlHighlight</item>
<item name="chipCornerRadius">32dp</item>
</style>
</resources>