diff --git a/app/src/main/java/io/legado/app/model/ReadManga.kt b/app/src/main/java/io/legado/app/model/ReadManga.kt index 60fc6dbe8..ca56f4b67 100644 --- a/app/src/main/java/io/legado/app/model/ReadManga.kt +++ b/app/src/main/java/io/legado/app/model/ReadManga.kt @@ -67,6 +67,7 @@ object ReadManga : CoroutineScope by MainScope() { var rateLimiter = ConcurrentRateLimiter(null) val mangaContents get() = buildContentList() val hasNextChapter get() = durChapterIndex < simulatedChapterSize - 1 + val mSeekParPos = mutableMapOf>() fun resetData(book: Book) { ReadManga.book = book @@ -583,6 +584,32 @@ object ReadManga : CoroutineScope by MainScope() { return MangaChapter(chapter, contentList, imageCount) } + fun recordMangaPosition(dataList: MutableList) { + Coroutine.async { + var globalPosition = 0 + val mangaList = mutableListOf() + dataList.forEach { + if (it is MangaContent) { + mangaList.add(it) + } + } + dataList.groupBy { if (it is MangaContent) it.mChapterIndex else (it as ReaderLoading).mChapterIndex } + .forEach { (chapterIndex, items) -> + val itemMap = mutableMapOf() + for (i in items.indices) { + val item = items[i] + if (item is MangaContent) { + itemMap[item.index] = globalPosition++ + } else { + globalPosition++ + } + } + mSeekParPos[chapterIndex] = itemMap + } + } + } + + interface Callback { fun upContent() fun loadFail(msg: String) diff --git a/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt b/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt index 5e560a043..404bd551c 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt @@ -227,6 +227,7 @@ class ReadMangaActivity : VMBaseActivity + + + + + + + + + + + + \ No newline at end of file