Implement invert double pages
This commit is contained in:
parent
4d7d451fde
commit
8d291b1bc3
@ -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}"
|
||||||
}
|
}
|
||||||
|
@ -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 <--
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,6 +137,8 @@ class PagerConfig(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
preferences.invertDoublePages()
|
||||||
|
.register({ invertDoublePages = it && dualPageSplit == false }, { imagePropertyChangedListener?.invoke() })
|
||||||
// SY <--
|
// SY <--
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user