From 660fce4bb7af4c87626305a2d095be7565f1ec62 Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Wed, 5 Nov 2025 20:15:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E9=A1=BA=E5=BA=8F=20#222?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/constant/PreferKey.kt | 1 + .../app/ui/replace/ReplaceRuleActivity.kt | 29 ++++++++++++++++--- .../app/ui/replace/ReplaceRuleViewModel.kt | 6 +++- app/src/main/res/menu/replace_rule.xml | 21 +++++++++++--- 4 files changed, 48 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/io/legado/app/constant/PreferKey.kt b/app/src/main/java/io/legado/app/constant/PreferKey.kt index 4d4d3adef..f4744a6ce 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -210,4 +210,5 @@ object PreferKey { const val bookshelfRefreshingLimit = "bookshelfRefreshingLimit" const val systemMediaControlCompatibilityChange = "systemMediaControlCompatibilityChange" const val isPredictiveBackEnabled = "isPredictiveBackEnabled" + const val replaceSortMode = "desc" } diff --git a/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt b/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt index 7bb16a08a..e608dfe5a 100644 --- a/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt +++ b/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt @@ -145,9 +145,18 @@ class ReplaceRuleActivity : VMBaseActivity menu.findItem(R.id.sort_order_asc)?.isChecked = true + "desc" -> menu.findItem(R.id.sort_order_desc)?.isChecked = true + "name_asc" -> menu.findItem(R.id.sort_name_asc)?.isChecked = true + "name_desc" -> menu.findItem(R.id.sort_name_desc)?.isChecked = true + } return super.onPrepareOptionsMenu(menu) } + private fun initRecyclerView() { //binding.recyclerView.setEdgeEffectColor(primaryColor) binding.recyclerView.layoutManager = LinearLayoutManager(this) @@ -231,10 +240,22 @@ class ReplaceRuleActivity : VMBaseActivity { searchView.setQuery(getString(R.string.no_group), true) } - R.id.sort_order_asc -> viewModel.setSortMode("asc") - R.id.sort_order_desc -> viewModel.setSortMode("desc") - R.id.sort_name_asc -> viewModel.setSortMode("name_asc") - R.id.sort_name_desc -> viewModel.setSortMode("name_desc") + R.id.sort_order_asc -> { + viewModel.setSortMode("asc") + item.isChecked = true + } + R.id.sort_order_desc -> { + viewModel.setSortMode("desc") + item.isChecked = true + } + R.id.sort_name_asc -> { + viewModel.setSortMode("name_asc") + item.isChecked = true + } + R.id.sort_name_desc -> { + viewModel.setSortMode("name_desc") + item.isChecked = true + } else -> if (item.groupId == R.id.replace_group) { searchView.setQuery("group:${item.title}", true) viewModel.setSearchKey("group:${item.title}") diff --git a/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleViewModel.kt b/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleViewModel.kt index b28b7143e..63a3cbb1c 100644 --- a/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleViewModel.kt @@ -5,8 +5,11 @@ import android.text.TextUtils import io.legado.app.R import io.legado.app.base.BaseViewModel import io.legado.app.constant.AppLog +import io.legado.app.constant.PreferKey import io.legado.app.data.appDb import io.legado.app.data.entities.ReplaceRule +import io.legado.app.utils.getPrefString +import io.legado.app.utils.putPrefString import io.legado.app.utils.splitNotBlank import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -26,7 +29,7 @@ import splitties.init.appCtx */ class ReplaceRuleViewModel(application: Application) : BaseViewModel(application) { - private val _sortMode = MutableStateFlow("desc") + private val _sortMode = MutableStateFlow(context.getPrefString(PreferKey.replaceSortMode, "desc") ?: "desc") private val _searchKey = MutableStateFlow(null) val sortMode: StateFlow = _sortMode @@ -34,6 +37,7 @@ class ReplaceRuleViewModel(application: Application) : BaseViewModel(application fun setSortMode(mode: String) { _sortMode.value = mode + context.putPrefString(PreferKey.replaceSortMode, mode) } fun setSearchKey(key: String?) { diff --git a/app/src/main/res/menu/replace_rule.xml b/app/src/main/res/menu/replace_rule.xml index 82388ed29..20148bc85 100644 --- a/app/src/main/res/menu/replace_rule.xml +++ b/app/src/main/res/menu/replace_rule.xml @@ -34,14 +34,27 @@ android:icon="@drawable/ic_sort" app:showAsAction="always"> - + - + - + - + + + +