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
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
fun shiftDoublePages(forceShift: Boolean? = null) {
|
fun shiftDoublePages(forceShift: Boolean? = null, page: ReaderPage? = null) {
|
||||||
(viewer as? PagerViewer)?.config?.let { config ->
|
(viewer as? PagerViewer)?.config?.let { config ->
|
||||||
if (forceShift == config.shiftDoublePage) return
|
if (forceShift == config.shiftDoublePage) return
|
||||||
config.shiftDoublePage = !config.shiftDoublePage
|
config.shiftDoublePage = !config.shiftDoublePage
|
||||||
viewModel.state.value.viewerChapters?.let {
|
viewModel.state.value.viewerChapters?.let {
|
||||||
(viewer as? PagerViewer)?.updateShifting()
|
(viewer as? PagerViewer)?.updateShifting(page)
|
||||||
(viewer as? PagerViewer)?.setChaptersDoubleShift(it)
|
(viewer as? PagerViewer)?.setChaptersDoubleShift(it)
|
||||||
invalidateOptionsMenu()
|
invalidateOptionsMenu()
|
||||||
}
|
}
|
||||||
|
|
|
@ -804,10 +804,14 @@ class PagerPageHolder(
|
||||||
if (height < width) {
|
if (height < width) {
|
||||||
imageStream2.close()
|
imageStream2.close()
|
||||||
imageStream.close()
|
imageStream.close()
|
||||||
|
val oldValue = page.fullPage
|
||||||
page.fullPage = true
|
page.fullPage = true
|
||||||
delayPageUpdate {
|
delayPageUpdate {
|
||||||
if (page.index == 0 && viewer.config.shiftDoublePage) {
|
if (page.index == 0 &&
|
||||||
viewer.activity.shiftDoublePages(false)
|
(viewer.config.shiftDoublePage || extraPage?.isEndPage == true) &&
|
||||||
|
oldValue != true
|
||||||
|
) {
|
||||||
|
viewer.activity.shiftDoublePages(extraPage?.isEndPage == true, extraPage)
|
||||||
} else {
|
} else {
|
||||||
viewer.splitDoublePages(page)
|
viewer.splitDoublePages(page)
|
||||||
}
|
}
|
||||||
|
@ -921,7 +925,7 @@ class PagerPageHolder(
|
||||||
delayPageUpdate { viewer.splitDoublePages(page) }
|
delayPageUpdate { viewer.splitDoublePages(page) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun delayPageUpdate(callback: () -> Unit) {
|
private fun delayPageUpdate(callback: () -> Unit) {
|
||||||
scope.launchUI {
|
scope.launchUI {
|
||||||
delay(100)
|
delay(100)
|
||||||
callback()
|
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
|
// If we don't the size change could put us on a new chapter
|
||||||
pager.removeOnPageChangeListener(pagerListener)
|
pager.removeOnPageChangeListener(pagerListener)
|
||||||
setChaptersInternal(chapters)
|
setChaptersInternal(chapters)
|
||||||
pager.addOnPageChangeListener(pagerListener)
|
|
||||||
// Since we removed the listener while shifting, call page change to update the ui
|
|
||||||
if (!hasMoved) {
|
if (!hasMoved) {
|
||||||
activity.isScrollingThroughPagesOrChapters = true
|
activity.isScrollingThroughPagesOrChapters = true
|
||||||
chapters.currChapter.pages?.let { pages ->
|
chapters.currChapter.pages?.let { pages ->
|
||||||
|
@ -307,6 +305,8 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
|
||||||
}
|
}
|
||||||
activity.isScrollingThroughPagesOrChapters = false
|
activity.isScrollingThroughPagesOrChapters = false
|
||||||
}
|
}
|
||||||
|
pager.addOnPageChangeListener(pagerListener)
|
||||||
|
// Since we removed the listener while shifting, call page change to update the ui
|
||||||
onPageChange(pager.currentItem)
|
onPageChange(pager.currentItem)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue