From 1a7a3ae3ea68829a2eaaabd36e603fa44f1fceb1 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Fri, 7 Mar 2025 14:36:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/model/ReadManga.kt | 37 ++++++------------- .../app/ui/book/manga/ReadMangaActivity.kt | 28 +++++--------- .../app/ui/book/manga/ReadMangaViewModel.kt | 2 +- .../ui/book/manga/entities/MangaContent.kt | 5 +-- .../ui/book/manga/entities/ReaderLoading.kt | 1 - .../book/manga/recyclerview/MangaAdapter.kt | 4 +- 6 files changed, 26 insertions(+), 51 deletions(-) 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 675423c9c..f3e1fd776 100644 --- a/app/src/main/java/io/legado/app/model/ReadManga.kt +++ b/app/src/main/java/io/legado/app/model/ReadManga.kt @@ -44,7 +44,6 @@ import kotlin.math.min object ReadManga : CoroutineScope by MainScope() { var inBookshelf = false var tocChanged = false - var chapterChanged = false var book: Book? = null val executor = globalExecutor var durChapterIndex = 0 //章节位置 @@ -213,9 +212,6 @@ object ReadManga : CoroutineScope by MainScope() { } fun loadContent(index: Int) { - if (chapterChanged) { - removeLoading(index) - } if (addLoading(index)) { Coroutine.async { val book = book!! @@ -501,10 +497,10 @@ object ReadManga : CoroutineScope by MainScope() { (durChapterIndex != progress.durChapterIndex || durChapterPos != progress.durChapterPos) ) { - chapterChanged = true + mCallback?.showLoading() if (progress.durChapterIndex == durChapterIndex) { durChapterPos = progress.durChapterPos - mCallback?.adjustProgress() + mCallback?.upContent(true) } else { durChapterIndex = progress.durChapterIndex durChapterPos = progress.durChapterPos @@ -514,6 +510,10 @@ object ReadManga : CoroutineScope by MainScope() { } } + fun showLoading() { + mCallback?.showLoading() + } + /** * 注册回调 */ @@ -544,11 +544,10 @@ object ReadManga : CoroutineScope by MainScope() { } }.distinctUntilChanged().mapIndexed { index, src -> MangaContent( - chapterSize = chapterSize, mChapterIndex = chapter.index, - nextChapterIndex = chapter.index.plus(1), + chapterSize = chapterSize, mImageUrl = src, - mDurChapterPos = index, + index = index, mChapterName = chapter.title ) }.toList() @@ -556,25 +555,13 @@ object ReadManga : CoroutineScope by MainScope() { val imageCount = list.size list.forEach { - it.mDurChapterImageCount = imageCount + it.imageCount = imageCount } val contentList = mutableListOf() - contentList.add( - ReaderLoading( - chapter.index, - "阅读 ${chapter.title}", - mNextChapterIndex = chapter.index.plus(1) - ) - ) + contentList.add(ReaderLoading(chapter.index, "阅读 ${chapter.title}")) contentList.addAll(list) - contentList.add( - ReaderLoading( - chapter.index, - "已读完 ${chapter.title}", - mNextChapterIndex = chapter.index.plus(1) - ) - ) + contentList.add(ReaderLoading(chapter.index, "已读完 ${chapter.title}")) return MangaChapter(chapter, contentList, imageCount) } @@ -582,7 +569,7 @@ object ReadManga : CoroutineScope by MainScope() { interface Callback { fun upContent(finish: Boolean = false) fun loadFail(msg: String) - fun adjustProgress() fun sureNewProgress(progress: BookProgress) + fun showLoading() } } \ No newline at end of file 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 f5ad7eb80..278ad8e6f 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 @@ -130,7 +130,6 @@ class ReadMangaActivity : VMBaseActivity content.mChapterIndex) { ReadManga.moveToPrevChapter() } else { - ReadManga.durChapterPos = content.mDurChapterPos + ReadManga.durChapterPos = content.index ReadManga.curPageChanged() } upInfoBar( content.mChapterIndex, content.chapterSize, - content.mDurChapterPos, - content.mDurChapterImageCount, + content.index, + content.imageCount, content.mChapterName ) } @@ -281,12 +280,6 @@ class ReadMangaActivity : VMBaseActivity) { if (book.isImage) { binding.flLoading.isVisible = true - ReadManga.chapterChanged = true viewModel.changeTo(book, toc) } else { toastOnUi("所选择的源不是漫画源") diff --git a/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaViewModel.kt b/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaViewModel.kt index 484a43ef4..3463e293e 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaViewModel.kt @@ -225,7 +225,7 @@ class ReadMangaViewModel(application: Application) : BaseViewModel(application) fun openChapter(index: Int, durChapterPos: Int = 0) { if (index < ReadManga.chapterSize) { - ReadManga.chapterChanged = true + ReadManga.showLoading() ReadManga.durChapterIndex = index ReadManga.durChapterPos = durChapterPos ReadManga.saveRead() diff --git a/app/src/main/java/io/legado/app/ui/book/manga/entities/MangaContent.kt b/app/src/main/java/io/legado/app/ui/book/manga/entities/MangaContent.kt index 909f7ba23..2ab6d240a 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/entities/MangaContent.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/entities/MangaContent.kt @@ -3,9 +3,8 @@ package io.legado.app.ui.book.manga.entities data class MangaContent( var mChapterIndex: Int = 0,//总章节位置 var chapterSize: Int,//总章节数量 - var nextChapterIndex: Int = 0,//下一章 val mImageUrl: String = "",//当前URL - var mDurChapterPos: Int = 0,//当前章节位置 - var mDurChapterImageCount: Int = 0,//当前章节内容总数 + var index: Int = 0,//当前章节位置 + var imageCount: Int = 0,//当前章节内容总数 var mChapterName: String = "",//章节名称 ) \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/manga/entities/ReaderLoading.kt b/app/src/main/java/io/legado/app/ui/book/manga/entities/ReaderLoading.kt index 0baba90a4..d49dad065 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/entities/ReaderLoading.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/entities/ReaderLoading.kt @@ -3,6 +3,5 @@ package io.legado.app.ui.book.manga.entities data class ReaderLoading( val mChapterIndex: Int = 0, val mMessage: String? = null, - val mNextChapterIndex: Int = 0, var mLoading: Boolean = false, ) diff --git a/app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaAdapter.kt b/app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaAdapter.kt index 3d7b17846..167648a60 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaAdapter.kt @@ -88,14 +88,14 @@ class MangaAdapter(private val context: Context) : val item = mDiffer.currentList[layoutPosition] if (item is MangaContent) { loadImageWithRetry( - item.mImageUrl, isHorizontal, item.mDurChapterImageCount == 1 + item.mImageUrl, isHorizontal, item.imageCount == 1 ) } } } fun onBind(item: MangaContent) { - loadImageWithRetry(item.mImageUrl, isHorizontal, item.mDurChapterImageCount == 1) + loadImageWithRetry(item.mImageUrl, isHorizontal, item.imageCount == 1) } }