diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/BookshelfFragment1.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/BookshelfFragment1.kt index bf093b4f4..6b4d17979 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/BookshelfFragment1.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/BookshelfFragment1.kt @@ -91,6 +91,13 @@ class BookshelfFragment1() : BaseBookshelfFragment(R.layout.fragment_bookshelf1) if (data != bookGroups) { bookGroups.clear() bookGroups.addAll(data) + /** + * 在书架布局对话框修改排序后,会导致书架页面刷新。但是在分组标签未修改的情况下,此处的adapter.notifyDataSetChanged()调用不会引起 + * [io.legado.app.ui.main.bookshelf.style1.BookshelfFragment1.TabFragmentPageAdapter.getItemPosition] + * 被调用。 + * 有关方法: + * [androidx.viewpager.widget.ViewPager.dataSetChanged] + */ adapter.notifyDataSetChanged() selectLastTab() for (i in 0 until adapter.count) { diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt index c1cfcfa8f..f36e4e830 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt @@ -41,8 +41,11 @@ import kotlin.math.max class BooksFragment() : BaseFragment(R.layout.fragment_books), BaseBooksAdapter.CallBack { + lateinit var group: BookGroup + constructor(position: Int, group: BookGroup) : this() { val bundle = Bundle() + this.group = group bundle.putInt("position", position) bundle.putLong("groupId", group.groupId) bundle.putInt("bookSort", group.getRealBookSort()) @@ -80,6 +83,9 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), bookSort = it.getInt("bookSort", 0) binding.refreshLayout.isEnabled = it.getBoolean("enableRefresh", true) } + appDb.bookGroupDao.getByID(groupId)?.apply { + group = this + } initRecyclerView() upRecyclerData() } @@ -129,6 +135,9 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), binding.refreshLayout.isEnabled = enableRefresh } + /** + * 更新书籍列表信息 + */ private fun upRecyclerData() { booksFlowJob?.cancel() booksFlowJob = launch { @@ -140,13 +149,22 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), AppConst.bookGroupLocalNoneId -> appDb.bookDao.flowLocalNoGroup() AppConst.bookGroupErrorId -> appDb.bookDao.flowUpdateError() else -> appDb.bookDao.flowByGroup(groupId) + // 书籍排序 }.conflate().map { list -> when (bookSort) { 1 -> list.sortedByDescending { it.latestChapterTime } 2 -> list.sortedWith { o1, o2 -> o1.name.cnCompare(o2.name) } + 3 -> list.sortedBy { it.order } + + // 综合排序 issue #3192 + 4 -> { + list.sortedByDescending { + if(it.latestChapterTime>it.durChapterTime) it.latestChapterTime else it.durChapterTime + } + } else -> list.sortedByDescending { it.durChapterTime } } }.flowOn(Dispatchers.Default).catch { @@ -181,6 +199,9 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), override fun onResume() { super.onResume() + if (::group.isInitialized) { + bookSort = group.getRealBookSort() + } startLastUpdateTimeJob() upRecyclerData() } @@ -244,6 +265,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), startActivity { putExtra("bookUrl", book.bookUrl) } + else -> startActivity { putExtra("bookUrl", book.bookUrl) } diff --git a/app/src/main/res/layout/dialog_bookshelf_config.xml b/app/src/main/res/layout/dialog_bookshelf_config.xml index 23c4a2366..3b8a39255 100644 --- a/app/src/main/res/layout/dialog_bookshelf_config.xml +++ b/app/src/main/res/layout/dialog_bookshelf_config.xml @@ -159,6 +159,12 @@ android:text="@string/bookshelf_px_3" tools:ignore="TouchTargetSizeCheck" /> + + diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index d0a95e78a..aa93c39b3 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1120,4 +1120,5 @@ 全部加入书架 页至 Analyzed + Comprehensive diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index ec34bd86d..372f5d4a6 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -1123,4 +1123,5 @@ 全部加入书架 页至 Analyzed + Comprehensive diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 7e49cbf65..b7b916135 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1123,4 +1123,5 @@ 全部加入书架 页至 Analyzed + Comprehensive diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 23fa21308..2bf577c9a 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1119,4 +1119,5 @@ Còn Thêm tất cả vào giá sách Trang tới Analyzed + Comprehensive \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 724082fa0..2566d68de 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1120,4 +1120,5 @@ 全部加入书架 页至 解析示例 + 綜合排序 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index bc56b57d7..092e38b82 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1122,4 +1122,5 @@ 全部加入书架 页至 解析示例 + 綜合排序 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 1c6619b07..dc7635e09 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1122,4 +1122,5 @@ 全部加入书架 页至 解析示例 + 综合排序 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 97800492b..090404976 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1123,4 +1123,5 @@ 全部加入书架 页至 Analyzed + Comprehensive