Horis пре 2 година
родитељ
комит
ac298845d3
1 измењених фајлова са 14 додато и 4 уклоњено
  1. 14 4
      app/src/main/java/io/legado/app/service/ExportBookService.kt

+ 14 - 4
app/src/main/java/io/legado/app/service/ExportBookService.kt

@@ -64,6 +64,7 @@ import me.ag2s.epublib.domain.FileResourceProvider
 import me.ag2s.epublib.domain.LazyResource
 import me.ag2s.epublib.domain.Metadata
 import me.ag2s.epublib.domain.Resource
+import me.ag2s.epublib.domain.TOCReference
 import me.ag2s.epublib.epub.EpubWriter
 import me.ag2s.epublib.epub.EpubWriterProcessor
 import me.ag2s.epublib.util.ResourceUtil
@@ -630,6 +631,7 @@ class ExportBookService : BaseService() {
         } else {
             1
         }
+        var parentSection: TOCReference? = null
         flow {
             appDb.bookChapterDao.getChapterList(book.bookUrl).forEach { chapter ->
                 emit(chapter)
@@ -667,19 +669,27 @@ class ExportBookService : BaseService() {
                 contentModel,
                 "Text/chapter_${index}.html"
             )
-            ExportChapter(title, chapterResource, resources)
+            ExportChapter(title, chapterResource, resources, chapter)
         }.collectIndexed { index, exportChapter ->
             postEvent(EventBus.EXPORT_BOOK, book.bookUrl)
             exportProgress[book.bookUrl] = index
-            epubBook.resources.addAll(exportChapter.resources)
-            epubBook.addSection(exportChapter.title, exportChapter.chapterResource)
+            val (title, chapterResource, resources, chapter) = exportChapter
+            epubBook.resources.addAll(resources)
+            if (chapter.isVolume) {
+                parentSection = epubBook.addSection(title, chapterResource)
+            } else if (parentSection == null) {
+                epubBook.addSection(title, chapterResource)
+            } else {
+                epubBook.addSection(parentSection, title, chapterResource)
+            }
         }
     }
 
     data class ExportChapter(
         val title: String,
         val chapterResource: Resource,
-        val resources: ArrayList<Resource>
+        val resources: ArrayList<Resource>,
+        val chapter: BookChapter
     )
 
     private fun fixPic(