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 package com.aurora.store.view.ui.sheets
import android.content.DialogInterface import android.content.DialogInterface
import android.content.res.ColorStateList
import android.os.Bundle import android.os.Bundle
import android.view.View 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.R
import com.aurora.store.data.model.Filter import com.aurora.store.data.model.Filter
import com.aurora.store.data.providers.FilterProvider import com.aurora.store.data.providers.FilterProvider
@@ -53,6 +57,7 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
private fun attachSingleChips() { private fun attachSingleChips() {
binding.filterGfs.apply { binding.filterGfs.apply {
applyColors()
isChecked = filter.gsfDependentApps isChecked = filter.gsfDependentApps
setOnCheckedChangeListener { _, checked -> setOnCheckedChangeListener { _, checked ->
isChecked = checked isChecked = checked
@@ -61,6 +66,7 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
} }
binding.filterPaid.apply { binding.filterPaid.apply {
applyColors()
isChecked = filter.paidApps isChecked = filter.paidApps
setOnCheckedChangeListener { _, checked -> setOnCheckedChangeListener { _, checked ->
isChecked = checked isChecked = checked
@@ -69,6 +75,7 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
} }
binding.filterAds.apply { binding.filterAds.apply {
applyColors()
isChecked = filter.appsWithAds isChecked = filter.appsWithAds
setOnCheckedChangeListener { _, checked -> setOnCheckedChangeListener { _, checked ->
isChecked = checked isChecked = checked
@@ -87,6 +94,8 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
val chip = Chip(requireContext()) val chip = Chip(requireContext())
chip.id = index chip.id = index
chip.text = value chip.text = value
chip.textColors
chip.applyColors()
chip.isChecked = filter.downloads == downloadValues[index].toInt() chip.isChecked = filter.downloads == downloadValues[index].toInt()
binding.downloadChips.addView(chip) binding.downloadChips.addView(chip)
} }
@@ -96,9 +105,10 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
} }
ratingLabels.forEachIndexed { index, value -> ratingLabels.forEachIndexed { index, value ->
val chip = Chip(requireActivity()) val chip = Chip(requireContext())
chip.id = index chip.id = index
chip.text = value chip.text = value
chip.applyColors()
chip.isChecked = filter.rating == ratingValues[index].toFloat() chip.isChecked = filter.rating == ratingValues[index].toFloat()
binding.ratingChips.addView(chip) binding.ratingChips.addView(chip)
} }
@@ -107,4 +117,21 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
filter = filter.copy(rating = ratingValues[checkedIds[0]].toFloat()) 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 <com.google.android.material.chip.Chip
android:id="@+id/filter_gfs" android:id="@+id/filter_gfs"
style="@style/Widget.Material3.Chip.Filter" style="@style/AppTheme.FilterChip"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/action_filter_gsf_dependent_apps" /> android:text="@string/action_filter_gsf_dependent_apps" />
<com.google.android.material.chip.Chip <com.google.android.material.chip.Chip
android:id="@+id/filter_paid" android:id="@+id/filter_paid"
style="@style/Widget.Material3.Chip.Filter" style="@style/AppTheme.FilterChip"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/action_filter_paid_apps" /> android:text="@string/action_filter_paid_apps" />
<com.google.android.material.chip.Chip <com.google.android.material.chip.Chip
android:id="@+id/filter_ads" android:id="@+id/filter_ads"
style="@style/Widget.Material3.Chip.Filter" style="@style/AppTheme.FilterChip"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/action_filter_apps_with_ads" /> android:text="@string/action_filter_apps_with_ads" />

View File

@@ -30,7 +30,7 @@
<item name="scrimBlack">@color/colorScrimBlack</item> <item name="scrimBlack">@color/colorScrimBlack</item>
<item name="colorShimmer">@color/colorShimmer</item> <item name="colorShimmer">@color/colorShimmer</item>
<item name="colorStroke">@color/colorStroke</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> <item name="preferenceTheme">@style/AppTheme.PreferenceThemeOverlay</item>
</style> </style>
@@ -60,7 +60,7 @@
<item name="scrimBlack">@color/colorScrimBlack</item> <item name="scrimBlack">@color/colorScrimBlack</item>
<item name="colorShimmer">@color/colorShimmer</item> <item name="colorShimmer">@color/colorShimmer</item>
<item name="colorStroke">@color/colorStroke</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> <item name="preferenceTheme">@style/AppTheme.PreferenceThemeOverlay</item>
</style> </style>
@@ -78,7 +78,7 @@
<item name="scrimBlack">@color/colorScrimBlack</item> <item name="scrimBlack">@color/colorScrimBlack</item>
<item name="colorShimmer">@color/colorShimmerDark</item> <item name="colorShimmer">@color/colorShimmerDark</item>
<item name="colorStroke">@color/colorStrokeDark</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> <item name="preferenceTheme">@style/AppTheme.PreferenceThemeOverlay</item>
</style> </style>
@@ -120,4 +120,10 @@
<style name="AppTheme.SwitchPreference" parent="@style/Preference.SwitchPreferenceCompat.Material"> <style name="AppTheme.SwitchPreference" parent="@style/Preference.SwitchPreferenceCompat.Material">
<item name="widgetLayout">@layout/preference_material_switch</item> <item name="widgetLayout">@layout/preference_material_switch</item>
</style> </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> </resources>