From 388e2d9a35a2f96658c343484b8c644ed0a18ffc Mon Sep 17 00:00:00 2001 From: Rahul Patel Date: Mon, 15 Jul 2024 01:16:07 +0530 Subject: [PATCH] Improve fliters & chip styles -- Removed filter apply & close, filter is saved on dismiss --- .../view/ui/search/SearchResultsFragment.kt | 22 ++-- .../store/view/ui/sheets/FilterSheet.kt | 36 ++---- .../main/res/layout-land/fragment_account.xml | 86 ++++++------- app/src/main/res/layout/fragment_account.xml | 8 +- .../res/layout/fragment_details_review.xml | 16 +-- app/src/main/res/layout/fragment_splash.xml | 2 - .../main/res/layout/fragment_top_chart.xml | 8 +- app/src/main/res/layout/sheet_app_peek.xml | 16 +-- app/src/main/res/layout/sheet_filter.xml | 115 ++++++------------ app/src/main/res/values/arrays.xml | 30 ++--- app/src/main/res/values/styles_widget.xml | 46 ------- app/src/main/res/values/themes.xml | 6 +- 12 files changed, 145 insertions(+), 246 deletions(-) diff --git a/app/src/main/java/com/aurora/store/view/ui/search/SearchResultsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/search/SearchResultsFragment.kt index 0def58553..4f162b222 100644 --- a/app/src/main/java/com/aurora/store/view/ui/search/SearchResultsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/search/SearchResultsFragment.kt @@ -247,22 +247,22 @@ class SearchResultsFragment : BaseFragment(), viewModel.observeSearchResults(query) } - private fun filter(appList: MutableList): List { - val tempList:MutableList = mutableListOf() - tempList.addAll(appList) - + private fun filter(appList: List): List { val filter = viewModel.filterProvider.getSavedFilter() - return tempList + return appList .asSequence() - .filter { it.displayName.isNotEmpty() } // Some of the apps may not have metadata - .filter { if (!filter.paidApps) it.isFree else true } - .filter { if (!filter.appsWithAds) !it.containsAds else true } - .filter { if (!filter.gsfDependentApps) it.dependencies.dependentPackages.isEmpty() else true } - .filter { if (filter.rating > 0) it.rating.average >= filter.rating else true } - .filter { if (filter.downloads > 0) it.installs >= filter.downloads else true } + .filter { app -> + app.displayName.isNotEmpty() && + (filter.paidApps || app.isFree) && + (filter.appsWithAds || !app.containsAds) && + (filter.gsfDependentApps || app.dependencies.dependentPackages.isEmpty()) && + (filter.rating <= 0 || app.rating.average >= filter.rating) && + (filter.downloads <= 0 || app.installs >= filter.downloads) + } .toList() } + override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { if (key == PREFERENCE_FILTER) query?.let { queryViewModel(it) } } diff --git a/app/src/main/java/com/aurora/store/view/ui/sheets/FilterSheet.kt b/app/src/main/java/com/aurora/store/view/ui/sheets/FilterSheet.kt index 44bed992c..54ee28be7 100644 --- a/app/src/main/java/com/aurora/store/view/ui/sheets/FilterSheet.kt +++ b/app/src/main/java/com/aurora/store/view/ui/sheets/FilterSheet.kt @@ -19,6 +19,7 @@ package com.aurora.store.view.ui.sheets +import android.content.DialogInterface import android.os.Bundle import android.view.View import com.aurora.store.R @@ -43,18 +44,11 @@ class FilterSheet : BaseDialogSheet() { attachSingleChips() attachMultipleChips() - attachActions() } - private fun attachActions() { - binding.btnPositive.setOnClickListener { - filterProvider.saveFilter(filter) - dismissAllowingStateLoss() - } - - binding.btnNegative.setOnClickListener { - dismissAllowingStateLoss() - } + override fun onDismiss(dialog: DialogInterface) { + super.onDismiss(dialog) + filterProvider.saveFilter(filter) } private fun attachSingleChips() { @@ -88,29 +82,25 @@ class FilterSheet : BaseDialogSheet() { val downloadValues = resources.getStringArray(R.array.filterDownloadsValues) val ratingLabels = resources.getStringArray(R.array.filterRatingLabels) val ratingValues = resources.getStringArray(R.array.filterRatingValues) - var i = 0 - for (downloadLabel in downloadLabels) { + downloadLabels.forEachIndexed { index, value -> val chip = Chip(requireContext()) - chip.id = i - chip.text = downloadLabel - chip.isChecked = filter.downloads == downloadValues[i].toInt() + chip.id = index + chip.text = value + chip.isChecked = filter.downloads == downloadValues[index].toInt() binding.downloadChips.addView(chip) - i++ } binding.downloadChips.setOnCheckedStateChangeListener { _, checkedIds -> filter = filter.copy(downloads = downloadValues[checkedIds[0]].toInt()) } - i = 0 - for (ratingLabel in ratingLabels) { - val chip = Chip(requireContext()) - chip.id = i - chip.text = ratingLabel - chip.isChecked = filter.rating == ratingValues[i].toFloat() + ratingLabels.forEachIndexed { index, value -> + val chip = Chip(requireActivity()) + chip.id = index + chip.text = value + chip.isChecked = filter.rating == ratingValues[index].toFloat() binding.ratingChips.addView(chip) - i++ } binding.ratingChips.setOnCheckedStateChangeListener { _, checkedIds -> diff --git a/app/src/main/res/layout-land/fragment_account.xml b/app/src/main/res/layout-land/fragment_account.xml index dfa6e6e7d..019704481 100644 --- a/app/src/main/res/layout-land/fragment_account.xml +++ b/app/src/main/res/layout-land/fragment_account.xml @@ -31,6 +31,45 @@ android:id="@+id/layout_toolbar_action" layout="@layout/view_toolbar_action" /> + + + + + + + + + + + + + - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/fragment_details_review.xml b/app/src/main/res/layout/fragment_details_review.xml index d93c71f81..56077d621 100644 --- a/app/src/main/res/layout/fragment_details_review.xml +++ b/app/src/main/res/layout/fragment_details_review.xml @@ -48,56 +48,56 @@ diff --git a/app/src/main/res/layout/fragment_splash.xml b/app/src/main/res/layout/fragment_splash.xml index fa451be5d..04c106509 100644 --- a/app/src/main/res/layout/fragment_splash.xml +++ b/app/src/main/res/layout/fragment_splash.xml @@ -101,7 +101,6 @@ android:id="@+id/btn_anonymous" android:layout_width="@dimen/width_button" android:layout_height="wrap_content" - android:visibility="gone" app:btnStateIcon="@drawable/ic_anonymous" app:btnStateText="@string/account_anonymous" /> @@ -109,7 +108,6 @@ android:id="@+id/btn_anonymous_insecure" android:layout_width="@dimen/width_button" android:layout_height="wrap_content" - android:visibility="gone" app:btnStateIcon="@drawable/ic_anonymous" app:btnStateText="@string/account_anonymous_insecure" /> diff --git a/app/src/main/res/layout/fragment_top_chart.xml b/app/src/main/res/layout/fragment_top_chart.xml index 39f5aa492..b23743fe9 100644 --- a/app/src/main/res/layout/fragment_top_chart.xml +++ b/app/src/main/res/layout/fragment_top_chart.xml @@ -42,14 +42,14 @@ @@ -57,14 +57,14 @@ diff --git a/app/src/main/res/layout/sheet_app_peek.xml b/app/src/main/res/layout/sheet_app_peek.xml index 8e262e9a2..5d7507048 100644 --- a/app/src/main/res/layout/sheet_app_peek.xml +++ b/app/src/main/res/layout/sheet_app_peek.xml @@ -18,7 +18,6 @@ --> + android:paddingEnd="@dimen/padding_large"> - @@ -119,5 +113,5 @@ android:layout_width="match_parent" android:layout_height="@dimen/height_button" android:layout_margin="@dimen/margin_large" - android:text="Install" /> + android:text="@string/action_install" /> diff --git a/app/src/main/res/layout/sheet_filter.xml b/app/src/main/res/layout/sheet_filter.xml index a7f853026..495382da1 100644 --- a/app/src/main/res/layout/sheet_filter.xml +++ b/app/src/main/res/layout/sheet_filter.xml @@ -37,8 +37,7 @@ @@ -49,47 +48,6 @@ android:orientation="vertical" tools:targetApi="o"> - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 4087ec5fd..1939ecc8e 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -191,12 +191,12 @@ @string/action_filter_all - 1 + - 2 + - 3 + - 4 + - 4.5 + - 4.7 + + 1★ + + 2★ + + 3★ + + 4★ + + 4.5★ + + 4.7★ + @@ -214,15 +214,15 @@ @string/action_filter_all - > 100 - > 1 K - > 10 K - > 50 K - > 100 K - > 1 M - > 10 M - > 50 M - > 100 M + 100 + + 1K + + 10K + + 50K + + 100K + + 1M + + 10M + + 50M + + 100M + diff --git a/app/src/main/res/values/styles_widget.xml b/app/src/main/res/values/styles_widget.xml index 6668f797d..d54a14dca 100644 --- a/app/src/main/res/values/styles_widget.xml +++ b/app/src/main/res/values/styles_widget.xml @@ -18,52 +18,6 @@ --> - - - - - - - - - @@ -60,7 +60,7 @@ @color/colorScrimBlack @color/colorShimmer @color/colorStroke - @style/Widget.Aurora.Chip + @style/Widget.Material3.Chip.Filter @style/AppTheme.PreferenceThemeOverlay @@ -78,7 +78,7 @@ @color/colorScrimBlack @color/colorShimmerDark @color/colorStrokeDark - @style/Widget.Aurora.Chip + @style/Widget.Material3.Chip.Filter @style/AppTheme.PreferenceThemeOverlay