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 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 {
"${page.number}"
}

View File

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

View File

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

View File

@ -88,6 +88,15 @@
android:textColor="?android:attr/textColorSecondary"
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
android:id="@+id/tapping_prefs_group"
android:layout_width="wrap_content"