kunfei 3 лет назад
Родитель
Сommit
fccd5b6805

+ 22 - 24
app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt

@@ -66,7 +66,8 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
     private var sourceFlowJob: Job? = null
     private var sourceFlowJob: Job? = null
     private val groups = linkedSetOf<String>()
     private val groups = linkedSetOf<String>()
     private var groupMenu: SubMenu? = null
     private var groupMenu: SubMenu? = null
-    private var sort = Sort.Default
+    override var sort = BookSourceSort.Default
+        private set
     override var sortAscending = true
     override var sortAscending = true
         private set
         private set
     private var snackBar: Snackbar? = null
     private var snackBar: Snackbar? = null
@@ -157,43 +158,43 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
 
 
             R.id.menu_sort_manual -> {
             R.id.menu_sort_manual -> {
                 item.isChecked = true
                 item.isChecked = true
-                sort = Sort.Default
+                sort = BookSourceSort.Default
                 upBookSource(searchView.query?.toString())
                 upBookSource(searchView.query?.toString())
             }
             }
 
 
             R.id.menu_sort_auto -> {
             R.id.menu_sort_auto -> {
                 item.isChecked = true
                 item.isChecked = true
-                sort = Sort.Weight
+                sort = BookSourceSort.Weight
                 upBookSource(searchView.query?.toString())
                 upBookSource(searchView.query?.toString())
             }
             }
 
 
             R.id.menu_sort_name -> {
             R.id.menu_sort_name -> {
                 item.isChecked = true
                 item.isChecked = true
-                sort = Sort.Name
+                sort = BookSourceSort.Name
                 upBookSource(searchView.query?.toString())
                 upBookSource(searchView.query?.toString())
             }
             }
 
 
             R.id.menu_sort_url -> {
             R.id.menu_sort_url -> {
                 item.isChecked = true
                 item.isChecked = true
-                sort = Sort.Url
+                sort = BookSourceSort.Url
                 upBookSource(searchView.query?.toString())
                 upBookSource(searchView.query?.toString())
             }
             }
 
 
             R.id.menu_sort_time -> {
             R.id.menu_sort_time -> {
                 item.isChecked = true
                 item.isChecked = true
-                sort = Sort.Update
+                sort = BookSourceSort.Update
                 upBookSource(searchView.query?.toString())
                 upBookSource(searchView.query?.toString())
             }
             }
 
 
             R.id.menu_sort_respondTime -> {
             R.id.menu_sort_respondTime -> {
                 item.isChecked = true
                 item.isChecked = true
-                sort = Sort.Respond
+                sort = BookSourceSort.Respond
                 upBookSource(searchView.query?.toString())
                 upBookSource(searchView.query?.toString())
             }
             }
 
 
             R.id.menu_sort_enable -> {
             R.id.menu_sort_enable -> {
                 item.isChecked = true
                 item.isChecked = true
-                sort = Sort.Enable
+                sort = BookSourceSort.Enable
                 upBookSource(searchView.query?.toString())
                 upBookSource(searchView.query?.toString())
             }
             }
 
 
@@ -279,15 +280,15 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
             }.conflate().map { data ->
             }.conflate().map { data ->
                 if (sortAscending) {
                 if (sortAscending) {
                     when (sort) {
                     when (sort) {
-                        Sort.Weight -> data.sortedBy { it.weight }
-                        Sort.Name -> data.sortedWith { o1, o2 ->
+                        BookSourceSort.Weight -> data.sortedBy { it.weight }
+                        BookSourceSort.Name -> data.sortedWith { o1, o2 ->
                             o1.bookSourceName.cnCompare(o2.bookSourceName)
                             o1.bookSourceName.cnCompare(o2.bookSourceName)
                         }
                         }
 
 
-                        Sort.Url -> data.sortedBy { it.bookSourceUrl }
-                        Sort.Update -> data.sortedByDescending { it.lastUpdateTime }
-                        Sort.Respond -> data.sortedBy { it.respondTime }
-                        Sort.Enable -> data.sortedWith { o1, o2 ->
+                        BookSourceSort.Url -> data.sortedBy { it.bookSourceUrl }
+                        BookSourceSort.Update -> data.sortedByDescending { it.lastUpdateTime }
+                        BookSourceSort.Respond -> data.sortedBy { it.respondTime }
+                        BookSourceSort.Enable -> data.sortedWith { o1, o2 ->
                             var sort = -o1.enabled.compareTo(o2.enabled)
                             var sort = -o1.enabled.compareTo(o2.enabled)
                             if (sort == 0) {
                             if (sort == 0) {
                                 sort = o1.bookSourceName.cnCompare(o2.bookSourceName)
                                 sort = o1.bookSourceName.cnCompare(o2.bookSourceName)
@@ -299,15 +300,15 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
                     }
                     }
                 } else {
                 } else {
                     when (sort) {
                     when (sort) {
-                        Sort.Weight -> data.sortedByDescending { it.weight }
-                        Sort.Name -> data.sortedWith { o1, o2 ->
+                        BookSourceSort.Weight -> data.sortedByDescending { it.weight }
+                        BookSourceSort.Name -> data.sortedWith { o1, o2 ->
                             o2.bookSourceName.cnCompare(o1.bookSourceName)
                             o2.bookSourceName.cnCompare(o1.bookSourceName)
                         }
                         }
 
 
-                        Sort.Url -> data.sortedByDescending { it.bookSourceUrl }
-                        Sort.Update -> data.sortedBy { it.lastUpdateTime }
-                        Sort.Respond -> data.sortedByDescending { it.respondTime }
-                        Sort.Enable -> data.sortedWith { o1, o2 ->
+                        BookSourceSort.Url -> data.sortedByDescending { it.bookSourceUrl }
+                        BookSourceSort.Update -> data.sortedBy { it.lastUpdateTime }
+                        BookSourceSort.Respond -> data.sortedByDescending { it.respondTime }
+                        BookSourceSort.Enable -> data.sortedWith { o1, o2 ->
                             var sort = o1.enabled.compareTo(o2.enabled)
                             var sort = o1.enabled.compareTo(o2.enabled)
                             if (sort == 0) {
                             if (sort == 0) {
                                 sort = o1.bookSourceName.cnCompare(o2.bookSourceName)
                                 sort = o1.bookSourceName.cnCompare(o2.bookSourceName)
@@ -322,7 +323,7 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
                 AppLog.put("书源界面更新书源出错", it)
                 AppLog.put("书源界面更新书源出错", it)
             }.conflate().collect { data ->
             }.conflate().collect { data ->
                 adapter.setItems(data, adapter.diffItemCallback)
                 adapter.setItems(data, adapter.diffItemCallback)
-                itemTouchCallback.isCanDrag = sort == Sort.Default
+                itemTouchCallback.isCanDrag = sort == BookSourceSort.Default
                 delay(500)
                 delay(500)
             }
             }
         }
         }
@@ -699,7 +700,4 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
         }
         }
     }
     }
 
 
-    enum class Sort {
-        Default, Name, Url, Weight, Update, Enable, Respond
-    }
 }
 }

+ 4 - 0
app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceAdapter.kt

@@ -152,6 +152,9 @@ class BookSourceAdapter(context: Context, val callBack: CallBack) :
         val source = getItem(position) ?: return
         val source = getItem(position) ?: return
         val popupMenu = PopupMenu(context, view)
         val popupMenu = PopupMenu(context, view)
         popupMenu.inflate(R.menu.book_source_item)
         popupMenu.inflate(R.menu.book_source_item)
+        popupMenu.menu.findItem(R.id.menu_top).isVisible = callBack.sort == BookSourceSort.Default
+        popupMenu.menu.findItem(R.id.menu_bottom).isVisible =
+            callBack.sort == BookSourceSort.Default
         val qyMenu = popupMenu.menu.findItem(R.id.menu_enable_explore)
         val qyMenu = popupMenu.menu.findItem(R.id.menu_enable_explore)
         if (!source.hasExploreUrl) {
         if (!source.hasExploreUrl) {
             qyMenu.isVisible = false
             qyMenu.isVisible = false
@@ -327,6 +330,7 @@ class BookSourceAdapter(context: Context, val callBack: CallBack) :
         }
         }
 
 
     interface CallBack {
     interface CallBack {
+        val sort: BookSourceSort
         val sortAscending: Boolean
         val sortAscending: Boolean
         fun del(bookSource: BookSourcePart)
         fun del(bookSource: BookSourcePart)
         fun edit(bookSource: BookSourcePart)
         fun edit(bookSource: BookSourcePart)

+ 5 - 0
app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceSort.kt

@@ -0,0 +1,5 @@
+package io.legado.app.ui.book.source.manage
+
+enum class BookSourceSort {
+    Default, Name, Url, Weight, Update, Enable, Respond
+}

+ 14 - 15
app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt

@@ -9,7 +9,6 @@ import io.legado.app.data.entities.BookSource
 import io.legado.app.data.entities.BookSourcePart
 import io.legado.app.data.entities.BookSourcePart
 import io.legado.app.data.entities.toBookSource
 import io.legado.app.data.entities.toBookSource
 import io.legado.app.help.config.SourceConfig
 import io.legado.app.help.config.SourceConfig
-import io.legado.app.ui.book.source.manage.BookSourceActivity.Sort
 import io.legado.app.utils.*
 import io.legado.app.utils.*
 import splitties.init.appCtx
 import splitties.init.appCtx
 import java.io.BufferedOutputStream
 import java.io.BufferedOutputStream
@@ -145,7 +144,7 @@ class BookSourceViewModel(application: Application) : BaseViewModel(application)
         adapter: BookSourceAdapter,
         adapter: BookSourceAdapter,
         searchKey: String?,
         searchKey: String?,
         sortAscending: Boolean,
         sortAscending: Boolean,
-        sort: Sort,
+        sort: BookSourceSort,
         success: (file: File) -> Unit
         success: (file: File) -> Unit
     ) {
     ) {
         execute {
         execute {
@@ -169,7 +168,7 @@ class BookSourceViewModel(application: Application) : BaseViewModel(application)
     private fun getBookSources(
     private fun getBookSources(
         searchKey: String?,
         searchKey: String?,
         sortAscending: Boolean,
         sortAscending: Boolean,
-        sort: Sort
+        sort: BookSourceSort
     ): List<BookSource> {
     ): List<BookSource> {
         return when {
         return when {
             searchKey.isNullOrEmpty() -> {
             searchKey.isNullOrEmpty() -> {
@@ -202,15 +201,15 @@ class BookSourceViewModel(application: Application) : BaseViewModel(application)
             }
             }
         }.let { data ->
         }.let { data ->
             if (sortAscending) when (sort) {
             if (sortAscending) when (sort) {
-                Sort.Weight -> data.sortedBy { it.weight }
-                Sort.Name -> data.sortedWith { o1, o2 ->
+                BookSourceSort.Weight -> data.sortedBy { it.weight }
+                BookSourceSort.Name -> data.sortedWith { o1, o2 ->
                     o1.bookSourceName.cnCompare(o2.bookSourceName)
                     o1.bookSourceName.cnCompare(o2.bookSourceName)
                 }
                 }
 
 
-                Sort.Url -> data.sortedBy { it.bookSourceUrl }
-                Sort.Update -> data.sortedByDescending { it.lastUpdateTime }
-                Sort.Respond -> data.sortedBy { it.respondTime }
-                Sort.Enable -> data.sortedWith { o1, o2 ->
+                BookSourceSort.Url -> data.sortedBy { it.bookSourceUrl }
+                BookSourceSort.Update -> data.sortedByDescending { it.lastUpdateTime }
+                BookSourceSort.Respond -> data.sortedBy { it.respondTime }
+                BookSourceSort.Enable -> data.sortedWith { o1, o2 ->
                     var sortNum = -o1.enabled.compareTo(o2.enabled)
                     var sortNum = -o1.enabled.compareTo(o2.enabled)
                     if (sortNum == 0) {
                     if (sortNum == 0) {
                         sortNum = o1.bookSourceName.cnCompare(o2.bookSourceName)
                         sortNum = o1.bookSourceName.cnCompare(o2.bookSourceName)
@@ -221,15 +220,15 @@ class BookSourceViewModel(application: Application) : BaseViewModel(application)
                 else -> data
                 else -> data
             }
             }
             else when (sort) {
             else when (sort) {
-                Sort.Weight -> data.sortedByDescending { it.weight }
-                Sort.Name -> data.sortedWith { o1, o2 ->
+                BookSourceSort.Weight -> data.sortedByDescending { it.weight }
+                BookSourceSort.Name -> data.sortedWith { o1, o2 ->
                     o2.bookSourceName.cnCompare(o1.bookSourceName)
                     o2.bookSourceName.cnCompare(o1.bookSourceName)
                 }
                 }
 
 
-                Sort.Url -> data.sortedByDescending { it.bookSourceUrl }
-                Sort.Update -> data.sortedBy { it.lastUpdateTime }
-                Sort.Respond -> data.sortedByDescending { it.respondTime }
-                Sort.Enable -> data.sortedWith { o1, o2 ->
+                BookSourceSort.Url -> data.sortedByDescending { it.bookSourceUrl }
+                BookSourceSort.Update -> data.sortedBy { it.lastUpdateTime }
+                BookSourceSort.Respond -> data.sortedByDescending { it.respondTime }
+                BookSourceSort.Enable -> data.sortedWith { o1, o2 ->
                     var sortNum = o1.enabled.compareTo(o2.enabled)
                     var sortNum = o1.enabled.compareTo(o2.enabled)
                     if (sortNum == 0) {
                     if (sortNum == 0) {
                         sortNum = o1.bookSourceName.cnCompare(o2.bookSourceName)
                         sortNum = o1.bookSourceName.cnCompare(o2.bookSourceName)