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

+ 26 - 11
app/src/main/java/io/legado/app/ui/book/toc/TocActivity.kt

@@ -13,6 +13,7 @@ import androidx.fragment.app.FragmentPagerAdapter
 import com.google.android.material.tabs.TabLayout
 import io.legado.app.R
 import io.legado.app.base.VMBaseActivity
+import io.legado.app.data.entities.Book
 import io.legado.app.databinding.ActivityChapterListBinding
 import io.legado.app.help.book.isLocalTxt
 import io.legado.app.help.config.AppConfig
@@ -99,7 +100,10 @@ class TocActivity : VMBaseActivity<ActivityChapterListBinding, TocViewModel>(),
     }
 
     override fun onMenuOpened(featureId: Int, menu: Menu): Boolean {
-        menu.findItem(R.id.menu_use_replace)?.isChecked = AppConfig.tocUiUseReplace
+        menu.findItem(R.id.menu_use_replace)?.isChecked =
+            AppConfig.tocUiUseReplace
+        menu.findItem(R.id.menu_split_long_chapter)?.isChecked =
+            viewModel.bookData.value?.getSplitLongChapter() == true
         return super.onMenuOpened(featureId, menu)
     }
 
@@ -108,6 +112,13 @@ class TocActivity : VMBaseActivity<ActivityChapterListBinding, TocViewModel>(),
             R.id.menu_toc_regex -> showDialogFragment(
                 TxtTocRuleDialog(viewModel.bookData.value?.tocUrl)
             )
+            R.id.menu_split_long_chapter -> {
+                viewModel.bookData.value?.let { book ->
+                    item.isChecked = !item.isChecked
+                    book.setSplitLongChapter(item.isChecked)
+                    upBookAndToc(book)
+                }
+            }
             R.id.menu_reverse_toc -> viewModel.reverseToc {
                 viewModel.chapterListCallBack?.upChapterList(searchView?.query?.toString())
                 setResult(RESULT_OK, Intent().apply {
@@ -128,16 +139,20 @@ class TocActivity : VMBaseActivity<ActivityChapterListBinding, TocViewModel>(),
     override fun onTocRegexDialogResult(tocRegex: String) {
         viewModel.bookData.value?.let { book ->
             book.tocUrl = tocRegex
-            waitDialog.show()
-            viewModel.upBookTocRule(book) {
-                waitDialog.dismiss()
-                ReadBook.book?.let { readBook ->
-                    if (readBook == book) {
-                        ReadBook.book = book
-                        ReadBook.chapterSize = book.totalChapterNum
-                        ReadBook.upMsg(null)
-                        ReadBook.loadContent(resetPageOffset = true)
-                    }
+            upBookAndToc(book)
+        }
+    }
+
+    private fun upBookAndToc(book: Book) {
+        waitDialog.show()
+        viewModel.upBookTocRule(book) {
+            waitDialog.dismiss()
+            ReadBook.book?.let { readBook ->
+                if (readBook == book) {
+                    ReadBook.book = book
+                    ReadBook.chapterSize = book.totalChapterNum
+                    ReadBook.upMsg(null)
+                    ReadBook.loadContent(resetPageOffset = true)
                 }
             }
         }

+ 6 - 0
app/src/main/res/menu/book_toc.xml

@@ -19,6 +19,12 @@
             android:title="@string/txt_toc_rule"
             app:showAsAction="never" />
 
+        <item
+            android:id="@+id/menu_split_long_chapter"
+            android:title="@string/split_long_chapter"
+            android:checkable="true"
+            app:showAsAction="never" />
+
     </group>
 
     <item