kunfei пре 4 година
родитељ
комит
e16c76c79c
1 измењених фајлова са 16 додато и 7 уклоњено
  1. 16 7
      app/src/main/java/io/legado/app/model/localBook/TextFile.kt

+ 16 - 7
app/src/main/java/io/legado/app/model/localBook/TextFile.kt

@@ -149,11 +149,20 @@ class TextFile(private val book: Book) {
                     val chapterLength = chapterContent.toByteArray(charset).size
                     val lastStart = toc.lastOrNull()?.start ?: curOffset
                     if (curOffset + chapterLength - lastStart > maxLengthWithToc) {
+                        toc.lastOrNull()?.let {
+                            it.end = it.start
+                        }
                         toc.addAll(analyze(lastStart, curOffset + chapterLength))
-                    }
-                    //如果 seekPos == 0 && chapterStart != 0 表示当前block处前面有一段内容
-                    //第一种情况一定是序章 第二种情况是上一个章节的内容
-                    if (seekPos == 0 && chapterStart != 0) { //获取当前章节的内容
+                        //创建当前章节
+                        val curChapter = BookChapter()
+                        curChapter.title = matcher.group()
+                        curChapter.start = curOffset + chapterLength
+                        toc.add(curChapter)
+                    } else if (seekPos == 0 && chapterStart != 0) {
+                        /*
+                         * 如果 seekPos == 0 && chapterStart != 0 表示当前block处前面有一段内容
+                         * 第一种情况一定是序章 第二种情况是上一个章节的内容
+                         */
                         if (toc.isEmpty()) { //如果当前没有章节,那么就是序章
                             //加入简介
                             if (StringUtils.trim(chapterContent).isNotEmpty()) {
@@ -186,7 +195,7 @@ class TextFile(private val book: Book) {
                         if (toc.isNotEmpty()) { //获取章节内容
                             //获取上一章节
                             val lastChapter = toc.last()
-                            toc.last().isVolume =
+                            lastChapter.isVolume =
                                 chapterContent.substringAfter(lastChapter.title).isBlank()
                             lastChapter.end =
                                 lastChapter.start!! + chapterContent.toByteArray(charset).size.toLong()
@@ -264,7 +273,7 @@ class TextFile(private val book: Book) {
                 //分章的位置
                 chapterPos = 0
                 while (strLength > 0) {
-                    ++chapterPos
+                    chapterPos++
                     //是否长度超过一章
                     if (strLength > maxLengthWithNoToc) { //在buffer中一章的终止点
                         var end = length
@@ -297,7 +306,7 @@ class TextFile(private val book: Book) {
             //设置结尾章节
             if (bufferStart > 100) {
                 val chapter = BookChapter()
-                chapter.title = "第${blockPos}章(${chapterPos + 1})"
+                chapter.title = "第${blockPos}章(${chapterPos})"
                 chapter.start = toc.lastOrNull()?.end ?: curOffset
                 chapter.end = chapter.start!! + bufferStart
                 toc.add(chapter)