Explorar el Código

Merge pull request #3229 from Discut/master

Add Comprehensive Sort
kunfei hace 3 años
padre
commit
d05629d0f1

+ 7 - 0
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) {
             if (data != bookGroups) {
                 bookGroups.clear()
                 bookGroups.clear()
                 bookGroups.addAll(data)
                 bookGroups.addAll(data)
+                /**
+                 * 在书架布局对话框修改排序后,会导致书架页面刷新。但是在分组标签未修改的情况下,此处的adapter.notifyDataSetChanged()调用不会引起
+                 * [io.legado.app.ui.main.bookshelf.style1.BookshelfFragment1.TabFragmentPageAdapter.getItemPosition]
+                 * 被调用。
+                 * 有关方法:
+                 * [androidx.viewpager.widget.ViewPager.dataSetChanged]
+                 */
                 adapter.notifyDataSetChanged()
                 adapter.notifyDataSetChanged()
                 selectLastTab()
                 selectLastTab()
                 for (i in 0 until adapter.count) {
                 for (i in 0 until adapter.count) {

+ 22 - 0
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),
 class BooksFragment() : BaseFragment(R.layout.fragment_books),
     BaseBooksAdapter.CallBack {
     BaseBooksAdapter.CallBack {
 
 
+    lateinit var group: BookGroup
+
     constructor(position: Int, group: BookGroup) : this() {
     constructor(position: Int, group: BookGroup) : this() {
         val bundle = Bundle()
         val bundle = Bundle()
+        this.group = group
         bundle.putInt("position", position)
         bundle.putInt("position", position)
         bundle.putLong("groupId", group.groupId)
         bundle.putLong("groupId", group.groupId)
         bundle.putInt("bookSort", group.getRealBookSort())
         bundle.putInt("bookSort", group.getRealBookSort())
@@ -80,6 +83,9 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
             bookSort = it.getInt("bookSort", 0)
             bookSort = it.getInt("bookSort", 0)
             binding.refreshLayout.isEnabled = it.getBoolean("enableRefresh", true)
             binding.refreshLayout.isEnabled = it.getBoolean("enableRefresh", true)
         }
         }
+        appDb.bookGroupDao.getByID(groupId)?.apply {
+            group = this
+        }
         initRecyclerView()
         initRecyclerView()
         upRecyclerData()
         upRecyclerData()
     }
     }
@@ -129,6 +135,9 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
         binding.refreshLayout.isEnabled = enableRefresh
         binding.refreshLayout.isEnabled = enableRefresh
     }
     }
 
 
+    /**
+     * 更新书籍列表信息
+     */
     private fun upRecyclerData() {
     private fun upRecyclerData() {
         booksFlowJob?.cancel()
         booksFlowJob?.cancel()
         booksFlowJob = launch {
         booksFlowJob = launch {
@@ -140,13 +149,22 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
                 AppConst.bookGroupLocalNoneId -> appDb.bookDao.flowLocalNoGroup()
                 AppConst.bookGroupLocalNoneId -> appDb.bookDao.flowLocalNoGroup()
                 AppConst.bookGroupErrorId -> appDb.bookDao.flowUpdateError()
                 AppConst.bookGroupErrorId -> appDb.bookDao.flowUpdateError()
                 else -> appDb.bookDao.flowByGroup(groupId)
                 else -> appDb.bookDao.flowByGroup(groupId)
+                // 书籍排序
             }.conflate().map { list ->
             }.conflate().map { list ->
                 when (bookSort) {
                 when (bookSort) {
                     1 -> list.sortedByDescending { it.latestChapterTime }
                     1 -> list.sortedByDescending { it.latestChapterTime }
                     2 -> list.sortedWith { o1, o2 ->
                     2 -> list.sortedWith { o1, o2 ->
                         o1.name.cnCompare(o2.name)
                         o1.name.cnCompare(o2.name)
                     }
                     }
+
                     3 -> list.sortedBy { it.order }
                     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 }
                     else -> list.sortedByDescending { it.durChapterTime }
                 }
                 }
             }.flowOn(Dispatchers.Default).catch {
             }.flowOn(Dispatchers.Default).catch {
@@ -181,6 +199,9 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
 
 
     override fun onResume() {
     override fun onResume() {
         super.onResume()
         super.onResume()
+        if (::group.isInitialized) {
+            bookSort = group.getRealBookSort()
+        }
         startLastUpdateTimeJob()
         startLastUpdateTimeJob()
         upRecyclerData()
         upRecyclerData()
     }
     }
@@ -244,6 +265,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
                 startActivity<AudioPlayActivity> {
                 startActivity<AudioPlayActivity> {
                     putExtra("bookUrl", book.bookUrl)
                     putExtra("bookUrl", book.bookUrl)
                 }
                 }
+
             else -> startActivity<ReadBookActivity> {
             else -> startActivity<ReadBookActivity> {
                 putExtra("bookUrl", book.bookUrl)
                 putExtra("bookUrl", book.bookUrl)
             }
             }

+ 6 - 0
app/src/main/res/layout/dialog_bookshelf_config.xml

@@ -159,6 +159,12 @@
                 android:text="@string/bookshelf_px_3"
                 android:text="@string/bookshelf_px_3"
                 tools:ignore="TouchTargetSizeCheck" />
                 tools:ignore="TouchTargetSizeCheck" />
 
 
+            <RadioButton
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/bookshelf_px_4"
+                tools:ignore="TouchTargetSizeCheck" />
+
         </RadioGroup>
         </RadioGroup>
 
 
     </LinearLayout>
     </LinearLayout>

+ 1 - 0
app/src/main/res/values-es-rES/strings.xml

@@ -1120,4 +1120,5 @@
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="page_to">页至</string>
     <string name="page_to">页至</string>
     <string name="result_analyzed">Analyzed</string>
     <string name="result_analyzed">Analyzed</string>
+    <string name="bookshelf_px_4" >Comprehensive</string>
 </resources>
 </resources>

+ 1 - 0
app/src/main/res/values-ja-rJP/strings.xml

@@ -1123,4 +1123,5 @@
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="page_to">页至</string>
     <string name="page_to">页至</string>
     <string name="result_analyzed">Analyzed</string>
     <string name="result_analyzed">Analyzed</string>
+    <string name="bookshelf_px_4" >Comprehensive</string>
 </resources>
 </resources>

+ 1 - 0
app/src/main/res/values-pt-rBR/strings.xml

@@ -1123,4 +1123,5 @@
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="page_to">页至</string>
     <string name="page_to">页至</string>
     <string name="result_analyzed">Analyzed</string>
     <string name="result_analyzed">Analyzed</string>
+    <string name="bookshelf_px_4" >Comprehensive</string>
 </resources>
 </resources>

+ 1 - 0
app/src/main/res/values-vi/strings.xml

@@ -1119,4 +1119,5 @@ Còn </string>
      <string name="add_all_to_bookshelf">Thêm tất cả vào giá sách</string>
      <string name="add_all_to_bookshelf">Thêm tất cả vào giá sách</string>
      <string name="page_to">Trang tới</string>
      <string name="page_to">Trang tới</string>
     <string name="result_analyzed">Analyzed</string>
     <string name="result_analyzed">Analyzed</string>
+    <string name="bookshelf_px_4" >Comprehensive</string>
 </resources>
 </resources>

+ 1 - 0
app/src/main/res/values-zh-rHK/strings.xml

@@ -1120,4 +1120,5 @@
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="page_to">页至</string>
     <string name="page_to">页至</string>
     <string name="result_analyzed">解析示例</string>
     <string name="result_analyzed">解析示例</string>
+    <string name="bookshelf_px_4" >綜合排序</string>
 </resources>
 </resources>

+ 1 - 0
app/src/main/res/values-zh-rTW/strings.xml

@@ -1122,4 +1122,5 @@
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="page_to">页至</string>
     <string name="page_to">页至</string>
     <string name="result_analyzed">解析示例</string>
     <string name="result_analyzed">解析示例</string>
+    <string name="bookshelf_px_4" >綜合排序</string>
 </resources>
 </resources>

+ 1 - 0
app/src/main/res/values-zh/strings.xml

@@ -1122,4 +1122,5 @@
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="page_to">页至</string>
     <string name="page_to">页至</string>
     <string name="result_analyzed">解析示例</string>
     <string name="result_analyzed">解析示例</string>
+    <string name="bookshelf_px_4" >综合排序</string>
 </resources>
 </resources>

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -1123,4 +1123,5 @@
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="add_all_to_bookshelf">全部加入书架</string>
     <string name="page_to">页至</string>
     <string name="page_to">页至</string>
     <string name="result_analyzed">Analyzed</string>
     <string name="result_analyzed">Analyzed</string>
+    <string name="bookshelf_px_4" >Comprehensive</string>
 </resources>
 </resources>