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 63d26137b3..e62b0745ee 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 0000000000..10c6c28090 --- /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 d6d78b4ff2..a9cd4ef6bd 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 @@ -11,7 +11,7 @@ open class ReaderPage( var stream: (() -> InputStream)? = null, var bg: Drawable? = null, var bgType: Int? = null, -) : Page(index, url, imageUrl, null) { +) : Page(index, url, imageUrl, null), ReaderItem { /** Value to check if this page is used to as if it was too wide */ var shiftedPage: Boolean = false 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 1655e5e934..7ba94dfa07 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 @@ -16,6 +16,7 @@ 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.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.BaseViewer @@ -53,7 +54,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { /** * Currently active item. It can be a chapter page or a chapter transition. */ - private var currentPage: Any? = null + private var currentPage: ReaderItem? = null /** * Viewer chapters to set when the pager enters idle mode. Otherwise, if the view was settling @@ -281,7 +282,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { } } - private fun getItem(position: Int, currentChapter: ReaderChapter?): Pair? { + private fun getItem(position: Int, currentChapter: ReaderChapter?): Pair? { return adapter.joinedItems.firstOrNull { val readerPage = it.first as? ReaderPage ?: return@firstOrNull false readerPage.index == position && readerPage.chapter.chapter.id == currentChapter?.chapter?.id @@ -502,7 +503,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { return false } - fun hideMenuIfVisible(item: Any) { + fun hideMenuIfVisible(item: Pair) { val currentItem = adapter.joinedItems.getOrNull(pager.currentItem) if (item == currentItem && isIdle) { 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 47bf0a0194..89fba0da90 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 @@ -6,6 +6,7 @@ import co.touchlab.kermit.Logger 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 @@ -22,11 +23,11 @@ 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() var nextTransition: ChapterTransition.Next? = null private set @@ -47,7 +48,7 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() { * has R2L direction. */ fun setChapters(chapters: ViewerChapters, forceTransition: Boolean) { - val newItems = mutableListOf() + val newItems = mutableListOf() // Force chapter transition page if there are missing chapters val prevHasMissingChapters = hasMissingChapters(chapters.currChapter, chapters.prevChapter) @@ -132,7 +133,6 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() { return when (item) { is ReaderPage -> PagerPageHolder(viewer, item, item2 as? ReaderPage) is ChapterTransition -> PagerTransitionHolder(viewer, item) - else -> throw NotImplementedError("Holder for ${item.javaClass} not implemented") } } @@ -193,7 +193,7 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() { } } if (viewer.config.splitPages) { - val pagedItems = mutableListOf() + val pagedItems = mutableListOf() subItems.forEach { val page = it as? ReaderPage ?: return@forEach @@ -208,20 +208,21 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() { } this.joinedItems = pagedItems.map { - Pair( + Pair( it, - if ((it as? ReaderPage)?.fullPage == true) (it as? ReaderPage)?.firstHalf else null, + // I don't even know what this is... but I'm guessing he try to check if "firstHalf" is not null + if ((it as? ReaderPage)?.fullPage == true && it.firstHalf != null) it else null, ) }.toMutableList() } else { - 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 { @@ -238,7 +239,7 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() { } } var pagedIndex = 0 - val subJoinedItems = mutableListOf>() + val subJoinedItems = mutableListOf>() // Step 2: run through each set of pages pagedItems.forEach { items ->