替换顺序 #222

This commit is contained in:
HapeLee
2025-11-05 20:15:20 +08:00
parent 4e4f566fb5
commit 660fce4bb7
4 changed files with 48 additions and 9 deletions
@@ -210,4 +210,5 @@ object PreferKey {
const val bookshelfRefreshingLimit = "bookshelfRefreshingLimit"
const val systemMediaControlCompatibilityChange = "systemMediaControlCompatibilityChange"
const val isPredictiveBackEnabled = "isPredictiveBackEnabled"
const val replaceSortMode = "desc"
}
@@ -145,9 +145,18 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
groupMenu = menu.findItem(R.id.menu_group)?.subMenu
upGroupMenu()
// 标记当前选中的排序方式
when (viewModel.sortMode.value) {
"asc" -> 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<ActivityReplaceRuleBinding, ReplaceRu
R.id.menu_group_null -> {
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}")
@@ -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<String?>(null)
val sortMode: StateFlow<String> = _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?) {
+17 -4
View File
@@ -34,14 +34,27 @@
android:icon="@drawable/ic_sort"
app:showAsAction="always">
<menu>
<item android:id="@+id/sort_order_asc" android:title="@string/sort_old_to_new" />
<group
android:id="@+id/group_sort"
android:checkableBehavior="single">
<item android:id="@+id/sort_order_desc" android:title="@string/sort_new_to_old" />
<item
android:id="@+id/sort_order_asc"
android:title="@string/sort_old_to_new" />
<item android:id="@+id/sort_name_asc" android:title="@string/sort_name_asc" />
<item
android:id="@+id/sort_order_desc"
android:title="@string/sort_new_to_old" />
<item android:id="@+id/sort_name_desc" android:title="@string/sort_name_desc" />
<item
android:id="@+id/sort_name_asc"
android:title="@string/sort_name_asc" />
<item
android:id="@+id/sort_name_desc"
android:title="@string/sort_name_desc" />
</group>
</menu>
</item>