mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
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:
parent
a29a14970d
commit
d93f9d6a45
3 changed files with 11 additions and 7 deletions
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue