More fixes to auto shifting

such as when the first page is a full page and the 2nd page is the left page of a manga (so page 1 and 2 need to be by themselves)
This commit is contained in:
Jays2Kings 2023-02-27 02:02:48 -05:00
parent a29a14970d
commit d93f9d6a45
3 changed files with 11 additions and 7 deletions

View file

@ -599,12 +599,12 @@ class ReaderActivity : BaseActivity<ReaderActivityBinding>() {
return true
}
fun shiftDoublePages(forceShift: Boolean? = null) {
fun shiftDoublePages(forceShift: Boolean? = null, page: ReaderPage? = null) {
(viewer as? PagerViewer)?.config?.let { config ->
if (forceShift == config.shiftDoublePage) return
config.shiftDoublePage = !config.shiftDoublePage
viewModel.state.value.viewerChapters?.let {
(viewer as? PagerViewer)?.updateShifting()
(viewer as? PagerViewer)?.updateShifting(page)
(viewer as? PagerViewer)?.setChaptersDoubleShift(it)
invalidateOptionsMenu()
}

View file

@ -804,10 +804,14 @@ class PagerPageHolder(
if (height < width) {
imageStream2.close()
imageStream.close()
val oldValue = page.fullPage
page.fullPage = true
delayPageUpdate {
if (page.index == 0 && viewer.config.shiftDoublePage) {
viewer.activity.shiftDoublePages(false)
if (page.index == 0 &&
(viewer.config.shiftDoublePage || extraPage?.isEndPage == true) &&
oldValue != true
) {
viewer.activity.shiftDoublePages(extraPage?.isEndPage == true, extraPage)
} else {
viewer.splitDoublePages(page)
}
@ -921,7 +925,7 @@ class PagerPageHolder(
delayPageUpdate { viewer.splitDoublePages(page) }
}
fun delayPageUpdate(callback: () -> Unit) {
private fun delayPageUpdate(callback: () -> Unit) {
scope.launchUI {
delay(100)
callback()

View file

@ -298,8 +298,6 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
// If we don't the size change could put us on a new chapter
pager.removeOnPageChangeListener(pagerListener)
setChaptersInternal(chapters)
pager.addOnPageChangeListener(pagerListener)
// Since we removed the listener while shifting, call page change to update the ui
if (!hasMoved) {
activity.isScrollingThroughPagesOrChapters = true
chapters.currChapter.pages?.let { pages ->
@ -307,6 +305,8 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
}
activity.isScrollingThroughPagesOrChapters = false
}
pager.addOnPageChangeListener(pagerListener)
// Since we removed the listener while shifting, call page change to update the ui
onPageChange(pager.currentItem)
}