HapeLee před 1 rokem
rodič
revize
660fce4bb7

+ 1 - 0
app/src/main/java/io/legado/app/constant/PreferKey.kt

@@ -210,4 +210,5 @@ object PreferKey {
     const val bookshelfRefreshingLimit = "bookshelfRefreshingLimit"
     const val bookshelfRefreshingLimit = "bookshelfRefreshingLimit"
     const val systemMediaControlCompatibilityChange = "systemMediaControlCompatibilityChange"
     const val systemMediaControlCompatibilityChange = "systemMediaControlCompatibilityChange"
     const val isPredictiveBackEnabled = "isPredictiveBackEnabled"
     const val isPredictiveBackEnabled = "isPredictiveBackEnabled"
+    const val replaceSortMode = "desc"
 }
 }

+ 25 - 4
app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt

@@ -145,9 +145,18 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
     override fun onPrepareOptionsMenu(menu: Menu): Boolean {
     override fun onPrepareOptionsMenu(menu: Menu): Boolean {
         groupMenu = menu.findItem(R.id.menu_group)?.subMenu
         groupMenu = menu.findItem(R.id.menu_group)?.subMenu
         upGroupMenu()
         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)
         return super.onPrepareOptionsMenu(menu)
     }
     }
 
 
+
     private fun initRecyclerView() {
     private fun initRecyclerView() {
         //binding.recyclerView.setEdgeEffectColor(primaryColor)
         //binding.recyclerView.setEdgeEffectColor(primaryColor)
         binding.recyclerView.layoutManager = LinearLayoutManager(this)
         binding.recyclerView.layoutManager = LinearLayoutManager(this)
@@ -231,10 +240,22 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
             R.id.menu_group_null -> {
             R.id.menu_group_null -> {
                 searchView.setQuery(getString(R.string.no_group), true)
                 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) {
             else -> if (item.groupId == R.id.replace_group) {
                 searchView.setQuery("group:${item.title}", true)
                 searchView.setQuery("group:${item.title}", true)
                 viewModel.setSearchKey("group:${item.title}")
                 viewModel.setSearchKey("group:${item.title}")

+ 5 - 1
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.R
 import io.legado.app.base.BaseViewModel
 import io.legado.app.base.BaseViewModel
 import io.legado.app.constant.AppLog
 import io.legado.app.constant.AppLog
+import io.legado.app.constant.PreferKey
 import io.legado.app.data.appDb
 import io.legado.app.data.appDb
 import io.legado.app.data.entities.ReplaceRule
 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 io.legado.app.utils.splitNotBlank
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -26,7 +29,7 @@ import splitties.init.appCtx
  */
  */
 class ReplaceRuleViewModel(application: Application) : BaseViewModel(application) {
 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)
     private val _searchKey = MutableStateFlow<String?>(null)
 
 
     val sortMode: StateFlow<String> = _sortMode
     val sortMode: StateFlow<String> = _sortMode
@@ -34,6 +37,7 @@ class ReplaceRuleViewModel(application: Application) : BaseViewModel(application
 
 
     fun setSortMode(mode: String) {
     fun setSortMode(mode: String) {
         _sortMode.value = mode
         _sortMode.value = mode
+        context.putPrefString(PreferKey.replaceSortMode, mode)
     }
     }
 
 
     fun setSearchKey(key: String?) {
     fun setSearchKey(key: String?) {

+ 17 - 4
app/src/main/res/menu/replace_rule.xml

@@ -34,14 +34,27 @@
         android:icon="@drawable/ic_sort"
         android:icon="@drawable/ic_sort"
         app:showAsAction="always">
         app:showAsAction="always">
         <menu>
         <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>
         </menu>
     </item>
     </item>