Minor reader cleanup
This commit is contained in:
parent
871c7ad291
commit
389156944c
@ -1,6 +1,6 @@
|
|||||||
package eu.kanade.tachiyomi.ui.reader.model
|
package eu.kanade.tachiyomi.ui.reader.model
|
||||||
|
|
||||||
sealed class ChapterTransition {
|
sealed class ChapterTransition : ReaderItem {
|
||||||
|
|
||||||
abstract val from: ReaderChapter
|
abstract val from: ReaderChapter
|
||||||
abstract val to: ReaderChapter?
|
abstract val to: ReaderChapter?
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
package eu.kanade.tachiyomi.ui.reader.model
|
||||||
|
|
||||||
|
sealed interface ReaderItem
|
@ -15,7 +15,7 @@ open class ReaderPage(
|
|||||||
// SY <--
|
// SY <--
|
||||||
var stream: (() -> InputStream)? = null,
|
var stream: (() -> InputStream)? = null,
|
||||||
|
|
||||||
) : Page(index, url, imageUrl, null) {
|
) : Page(index, url, imageUrl, null), ReaderItem {
|
||||||
|
|
||||||
open lateinit var chapter: ReaderChapter
|
open lateinit var chapter: ReaderChapter
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ import eu.kanade.tachiyomi.data.download.DownloadManager
|
|||||||
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
|
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.InsertPage
|
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.ReaderPage
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
|
import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
|
||||||
import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer
|
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.
|
* Currently active item. It can be a chapter page or a chapter transition.
|
||||||
*/
|
*/
|
||||||
/* [EXH] private */
|
/* [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
|
* 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) {
|
override fun onPageSelected(position: Int) {
|
||||||
if (activity.isScrollingThroughPages.not()) {
|
if (activity.isScrollingThroughPages.not()) {
|
||||||
activity.hideMenu()
|
activity.hideMenu()
|
||||||
|
@ -5,6 +5,7 @@ import android.view.ViewGroup
|
|||||||
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
|
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.InsertPage
|
import eu.kanade.tachiyomi.ui.reader.model.InsertPage
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
|
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.ReaderPage
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
|
import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
|
||||||
import eu.kanade.tachiyomi.ui.reader.viewer.hasMissingChapters
|
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.
|
* Paired list of currently set items.
|
||||||
*/
|
*/
|
||||||
var joinedItems: MutableList<Pair<Any, Any?>> = mutableListOf()
|
var joinedItems: MutableList<Pair<ReaderItem, ReaderItem?>> = mutableListOf()
|
||||||
private set
|
private set
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Single list of items
|
* Single list of items
|
||||||
*/
|
*/
|
||||||
private var subItems: MutableList<Any> = mutableListOf()
|
private var subItems: MutableList<ReaderItem> = mutableListOf()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds preprocessed items so they don't get removed when changing chapter
|
* 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.
|
* has R2L direction.
|
||||||
*/
|
*/
|
||||||
fun setChapters(chapters: ViewerChapters, forceTransition: Boolean) {
|
fun setChapters(chapters: ViewerChapters, forceTransition: Boolean) {
|
||||||
val newItems = mutableListOf<Any>()
|
val newItems = mutableListOf<ReaderItem>()
|
||||||
|
|
||||||
// Forces chapter transition if there is missing chapters
|
// Forces chapter transition if there is missing chapters
|
||||||
val prevHasMissingChapters = hasMissingChapters(chapters.currChapter, chapters.prevChapter)
|
val prevHasMissingChapters = hasMissingChapters(chapters.currChapter, chapters.prevChapter)
|
||||||
@ -233,30 +234,33 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() {
|
|||||||
subItems.forEach {
|
subItems.forEach {
|
||||||
(it as? ReaderPage)?.shiftedPage = false
|
(it as? ReaderPage)?.shiftedPage = false
|
||||||
}
|
}
|
||||||
this.joinedItems = subItems.map { Pair<Any, Any?>(it, null) }.toMutableList()
|
this.joinedItems = subItems.map { Pair<ReaderItem, ReaderItem?>(it, null) }.toMutableList()
|
||||||
if (viewer is R2LPagerViewer) {
|
if (viewer is R2LPagerViewer) {
|
||||||
joinedItems.reverse()
|
joinedItems.reverse()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
val pagedItems = mutableListOf<MutableList<ReaderPage?>>()
|
val pagedItems = mutableListOf<MutableList<ReaderPage?>>()
|
||||||
val otherItems = mutableListOf<Any>()
|
val otherItems = mutableListOf<ReaderItem>()
|
||||||
pagedItems.add(mutableListOf())
|
pagedItems.add(mutableListOf())
|
||||||
// Step 1: segment the pages and transition pages
|
// Step 1: segment the pages and transition pages
|
||||||
subItems.forEach {
|
subItems.forEach {
|
||||||
if (it is ReaderPage) {
|
when (it) {
|
||||||
if (pagedItems.last().lastOrNull() != null &&
|
is ReaderPage -> {
|
||||||
pagedItems.last().last()?.chapter?.chapter?.id != it.chapter.chapter.id
|
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.add(mutableListOf())
|
||||||
}
|
}
|
||||||
pagedItems.last().add(it)
|
|
||||||
} else {
|
|
||||||
otherItems.add(it)
|
|
||||||
pagedItems.add(mutableListOf())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var pagedIndex = 0
|
var pagedIndex = 0
|
||||||
val subJoinedItems = mutableListOf<Pair<Any, Any?>>()
|
val subJoinedItems = mutableListOf<Pair<ReaderItem, ReaderItem?>>()
|
||||||
// Step 2: run through each set of pages
|
// Step 2: run through each set of pages
|
||||||
pagedItems.forEach { items ->
|
pagedItems.forEach { items ->
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user