diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ChapterTransition.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ChapterTransition.kt index 2da46e5b0..1ffaca13f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ChapterTransition.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ChapterTransition.kt @@ -1,6 +1,6 @@ package eu.kanade.tachiyomi.ui.reader.model -sealed class ChapterTransition { +sealed class ChapterTransition : ReaderItem { abstract val from: ReaderChapter abstract val to: ReaderChapter? diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderItem.kt new file mode 100644 index 000000000..10c6c2809 --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderItem.kt @@ -0,0 +1,3 @@ +package eu.kanade.tachiyomi.ui.reader.model + +sealed interface ReaderItem diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt index 42a39a309..0a6f2d414 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt @@ -15,7 +15,7 @@ open class ReaderPage( // SY <-- var stream: (() -> InputStream)? = null, -) : Page(index, url, imageUrl, null) { +) : Page(index, url, imageUrl, null), ReaderItem { open lateinit var chapter: ReaderChapter diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt index fcb4d4f66..5bc115cec 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt @@ -15,6 +15,7 @@ import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition import eu.kanade.tachiyomi.ui.reader.model.InsertPage +import eu.kanade.tachiyomi.ui.reader.model.ReaderItem import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer @@ -55,7 +56,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { * Currently active item. It can be a chapter page or a chapter transition. */ /* [EXH] private */ - var currentPage: Any? = null + var currentPage: ReaderItem? = null /** * Viewer chapters to set when the pager enters idle mode. Otherwise, if the view was settling @@ -83,7 +84,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { } } - private var pagerListener = object : ViewPager.SimpleOnPageChangeListener() { + private val pagerListener = object : ViewPager.SimpleOnPageChangeListener() { override fun onPageSelected(position: Int) { if (activity.isScrollingThroughPages.not()) { activity.hideMenu() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt index f336f9645..ee820c772 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt @@ -5,6 +5,7 @@ import android.view.ViewGroup import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition import eu.kanade.tachiyomi.ui.reader.model.InsertPage import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter +import eu.kanade.tachiyomi.ui.reader.model.ReaderItem import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters import eu.kanade.tachiyomi.ui.reader.viewer.hasMissingChapters @@ -23,13 +24,13 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() { /** * Paired list of currently set items. */ - var joinedItems: MutableList> = mutableListOf() + var joinedItems: MutableList> = mutableListOf() private set /** * Single list of items */ - private var subItems: MutableList = mutableListOf() + private var subItems: MutableList = mutableListOf() /** * Holds preprocessed items so they don't get removed when changing chapter @@ -62,7 +63,7 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() { * has R2L direction. */ fun setChapters(chapters: ViewerChapters, forceTransition: Boolean) { - val newItems = mutableListOf() + val newItems = mutableListOf() // Forces chapter transition if there is missing chapters val prevHasMissingChapters = hasMissingChapters(chapters.currChapter, chapters.prevChapter) @@ -233,30 +234,33 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() { subItems.forEach { (it as? ReaderPage)?.shiftedPage = false } - this.joinedItems = subItems.map { Pair(it, null) }.toMutableList() + this.joinedItems = subItems.map { Pair(it, null) }.toMutableList() if (viewer is R2LPagerViewer) { joinedItems.reverse() } } else { val pagedItems = mutableListOf>() - val otherItems = mutableListOf() + val otherItems = mutableListOf() pagedItems.add(mutableListOf()) // Step 1: segment the pages and transition pages subItems.forEach { - if (it is ReaderPage) { - if (pagedItems.last().lastOrNull() != null && - pagedItems.last().last()?.chapter?.chapter?.id != it.chapter.chapter.id - ) { + when (it) { + is ReaderPage -> { + if (pagedItems.last().lastOrNull() != null && + pagedItems.last().last()?.chapter?.chapter?.id != it.chapter.chapter.id + ) { + pagedItems.add(mutableListOf()) + } + pagedItems.last().add(it) + } + is ChapterTransition -> { + otherItems.add(it) pagedItems.add(mutableListOf()) } - pagedItems.last().add(it) - } else { - otherItems.add(it) - pagedItems.add(mutableListOf()) } } var pagedIndex = 0 - val subJoinedItems = mutableListOf>() + val subJoinedItems = mutableListOf>() // Step 2: run through each set of pages pagedItems.forEach { items ->