Implement invert double pages

This commit is contained in:
Jobobby04 2021-10-23 23:53:30 -04:00
parent 4d7d451fde
commit 8d291b1bc3
5 changed files with 19 additions and 11 deletions

View File

@ -1256,7 +1256,8 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
val pages = page.chapter.pages ?: return val pages = page.chapter.pages ?: return
val currentPage = if (hasExtraPage) { val currentPage = if (hasExtraPage) {
if (resources.isLTR) "${page.number}-${page.number + 1}" else "${page.number + 1}-${page.number}" val invertDoublePage = (viewer as? PagerViewer)?.config?.invertDoublePages ?: false
if (resources.isLTR xor invertDoublePage) "${page.number}-${page.number + 1}" else "${page.number + 1}-${page.number}"
} else { } else {
"${page.number}" "${page.number}"
} }

View File

@ -88,6 +88,7 @@ class ReaderReadingModeSettings @JvmOverloads constructor(context: Context, attr
// SY --> // SY -->
binding.pagerPrefsGroup.pageTransitionsPager.bindToPreference(preferences.pageTransitionsPager()) binding.pagerPrefsGroup.pageTransitionsPager.bindToPreference(preferences.pageTransitionsPager())
binding.pagerPrefsGroup.pageLayout.bindToPreference(preferences.pageLayout()) binding.pagerPrefsGroup.pageLayout.bindToPreference(preferences.pageLayout())
binding.pagerPrefsGroup.invertDoublePages.bindToPreference(preferences.invertDoublePages())
// SY <-- // SY <--
} }

View File

@ -137,6 +137,8 @@ class PagerConfig(
} }
) )
preferences.invertDoublePages()
.register({ invertDoublePages = it && dualPageSplit == false }, { imagePropertyChangedListener?.invoke() })
// SY <-- // SY <--
} }

View File

@ -23,9 +23,6 @@ import eu.kanade.tachiyomi.util.system.ImageUtil
import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.system.logcat import eu.kanade.tachiyomi.util.system.logcat
import eu.kanade.tachiyomi.widget.ViewPagerAdapter import eu.kanade.tachiyomi.widget.ViewPagerAdapter
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import logcat.LogPriority import logcat.LogPriority
import rx.Observable import rx.Observable
@ -104,12 +101,10 @@ class PagerPageHolder(
var extraStatus: Int = 0 var extraStatus: Int = 0
var progress: Int = 0 var progress: Int = 0
var extraProgress: Int = 0 var extraProgress: Int = 0
var scope: CoroutineScope? = null
// SY <-- // SY <--
init { init {
addView(progressIndicator) addView(progressIndicator)
scope = CoroutineScope(Job() + Dispatchers.Default)
observeStatus() observeStatus()
} }
@ -393,7 +388,7 @@ class PagerPageHolder(
logcat(LogPriority.ERROR, e) { "Cannot combine pages" } logcat(LogPriority.ERROR, e) { "Cannot combine pages" }
return imageBytes.inputStream() return imageBytes.inputStream()
} }
scope?.launchUI { progressIndicator.setProgress(96) } viewer.scope.launchUI { progressIndicator.setProgress(96) }
val height = imageBitmap.height val height = imageBitmap.height
val width = imageBitmap.width val width = imageBitmap.width
@ -417,7 +412,7 @@ class PagerPageHolder(
logcat(LogPriority.ERROR, e) { "Cannot combine pages" } logcat(LogPriority.ERROR, e) { "Cannot combine pages" }
return imageBytes.inputStream() return imageBytes.inputStream()
} }
scope?.launchUI { progressIndicator.setProgress(97) } viewer.scope.launchUI { progressIndicator.setProgress(97) }
val height2 = imageBitmap2.height val height2 = imageBitmap2.height
val width2 = imageBitmap2.width val width2 = imageBitmap2.width
@ -429,12 +424,12 @@ class PagerPageHolder(
splitDoublePages() splitDoublePages()
return imageBytes.inputStream() return imageBytes.inputStream()
} }
val isLTR = (viewer !is R2LPagerViewer).xor(viewer.config.invertDoublePages) val isLTR = (viewer !is R2LPagerViewer) xor viewer.config.invertDoublePages
imageStream.close() imageStream.close()
imageStream2.close() imageStream2.close()
return ImageUtil.mergeBitmaps(imageBitmap, imageBitmap2, isLTR, viewer.config.pageCanvasColor) { return ImageUtil.mergeBitmaps(imageBitmap, imageBitmap2, isLTR, viewer.config.pageCanvasColor) {
scope?.launchUI { viewer.scope.launchUI {
if (it == 100) { if (it == 100) {
progressIndicator.hide() progressIndicator.hide()
} else { } else {
@ -445,7 +440,7 @@ class PagerPageHolder(
} }
private fun splitDoublePages() { private fun splitDoublePages() {
scope?.launchUI { viewer.scope.launchUI {
delay(100) delay(100)
viewer.splitDoublePages(page) viewer.splitDoublePages(page)
if (extraPage?.fullPage == true || page.fullPage) { if (extraPage?.fullPage == true || page.fullPage) {

View File

@ -88,6 +88,15 @@
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
android:text="@string/pref_page_transitions" /> android:text="@string/pref_page_transitions" />
<com.google.android.material.switchmaterial.SwitchMaterial
android:id="@+id/invert_double_pages"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:textColor="?android:attr/textColorSecondary"
android:text="@string/invert_double_pages" />
<androidx.constraintlayout.widget.Group <androidx.constraintlayout.widget.Group
android:id="@+id/tapping_prefs_group" android:id="@+id/tapping_prefs_group"
android:layout_width="wrap_content" android:layout_width="wrap_content"