Dual page split allow to have different setting for Paged and Webtoon (#4527)

(cherry picked from commit 7a64bf55cb8255000da7aaa0030f845b94d985b0)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
This commit is contained in:
Andreas 2021-02-28 22:17:37 +01:00 committed by Jobobby04
parent da3681e602
commit 1fdb03f7db
7 changed files with 76 additions and 35 deletions

View File

@ -25,13 +25,13 @@ object PreferenceKeys {
const val showPageNumber = "pref_show_page_number_key"
const val landscapeVerticalSeekbar = "pref_show_vert_seekbar_landscape"
const val dualPageSplitPaged = "pref_dual_page_split"
const val leftVerticalSeekbar = "pref_left_handed_vertical_seekbar"
const val dualPageSplitWebtoon = "pref_dual_page_split_webtoon"
const val dualPageSplit = "pref_dual_page_split"
const val dualPageInvertPaged = "pref_dual_page_invert"
const val dualPageInvert = "pref_dual_page_invert"
const val dualPageInvertWebtoon = "pref_dual_page_invert_webtoon"
const val showReadingMode = "pref_show_reading_mode"
@ -207,6 +207,8 @@ object PreferenceKeys {
const val incognitoMode = "incognito_mode"
const val createLegacyBackup = "create_legacy_backup"
fun trackUsername(syncId: Int) = "pref_mangasync_username_$syncId"
fun trackPassword(syncId: Int) = "pref_mangasync_password_$syncId"
@ -347,11 +349,13 @@ object PreferenceKeys {
const val sortTagsForLibrary = "sort_tags_for_library"
const val createLegacyBackup = "create_legacy_backup"
const val dontDeleteFromCategories = "dont_delete_from_categories"
const val extensionRepos = "extension_repos"
const val cropBordersContinuesVertical = "crop_borders_continues_vertical"
const val landscapeVerticalSeekbar = "pref_show_vert_seekbar_landscape"
const val leftVerticalSeekbar = "pref_left_handed_vertical_seekbar"
}

View File

@ -91,9 +91,13 @@ class PreferencesHelper(val context: Context) {
fun showPageNumber() = flowPrefs.getBoolean(Keys.showPageNumber, true)
fun dualPageSplit() = flowPrefs.getBoolean(Keys.dualPageSplit, false)
fun dualPageSplitPaged() = flowPrefs.getBoolean(Keys.dualPageSplitPaged, false)
fun dualPageInvert() = flowPrefs.getBoolean(Keys.dualPageInvert, false)
fun dualPageSplitWebtoon() = flowPrefs.getBoolean(Keys.dualPageSplitWebtoon, false)
fun dualPageInvertPaged() = flowPrefs.getBoolean(Keys.dualPageInvertPaged, false)
fun dualPageInvertWebtoon() = flowPrefs.getBoolean(Keys.dualPageInvertWebtoon, false)
fun showReadingMode() = prefs.getBoolean(Keys.showReadingMode, true)

View File

@ -70,7 +70,6 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BaseBottomShee
binding.landscapeVerticalSeekbar.bindToPreference(preferences.landscapeVerticalSeekbar())
binding.leftVerticalSeekbar.bindToPreference(preferences.leftVerticalSeekbar())
binding.fullscreen.bindToPreference(preferences.fullscreen())
binding.dualPageSplit.bindToPreference(preferences.dualPageSplit())
binding.keepscreen.bindToPreference(preferences.keepScreenOn())
binding.longTap.bindToPreference(preferences.readWithLongTap())
binding.alwaysShowChapterTransition.bindToPreference(preferences.alwaysShowChapterTransition())
@ -78,12 +77,6 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BaseBottomShee
binding.autoWebtoonMode.bindToPreference(preferences.useAutoWebtoon())
// SY <--
// Makes so that dual page invert gets hidden away when turning of dual page split
preferences.dualPageSplit()
.asImmediateFlow { binding.dualPageInvert.isVisible = it }
.launchIn(activity.lifecycleScope)
binding.dualPageInvert.bindToPreference(preferences.dualPageInvert())
// If the preference is explicitly disabled, that means the setting was configured since there is a cutout
if (activity.hasCutout || !preferences.cutoutShort().get()) {
binding.cutoutShort.isVisible = true
@ -110,6 +103,13 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BaseBottomShee
// SY -->
binding.pagerPrefsGroup.pageTransitionsPager.bindToPreference(preferences.pageTransitionsPager())
// SY <--
// Makes so that dual page invert gets hidden away when turning of dual page split
binding.dualPageSplit.bindToPreference(preferences.dualPageSplitPaged())
preferences.dualPageSplitPaged()
.asImmediateFlow { binding.dualPageInvert.isVisible = it }
.launchIn(activity.lifecycleScope)
binding.dualPageInvert.bindToPreference(preferences.dualPageInvertPaged())
}
/**
@ -132,6 +132,13 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BaseBottomShee
binding.webtoonPrefsGroup.cropBordersContinuesVertical.bindToPreference(preferences.cropBordersContinuesVertical())
binding.webtoonPrefsGroup.pageTransitionsWebtoon.bindToPreference(preferences.pageTransitionsWebtoon())
// SY <--
// Makes so that dual page invert gets hidden away when turning of dual page split
binding.dualPageSplit.bindToPreference(preferences.dualPageSplitWebtoon())
preferences.dualPageSplitWebtoon()
.asImmediateFlow { binding.dualPageInvert.isVisible = it }
.launchIn(activity.lifecycleScope)
binding.dualPageInvert.bindToPreference(preferences.dualPageInvertWebtoon())
}
/**

View File

@ -23,11 +23,15 @@ abstract class ViewerConfig(preferences: PreferencesHelper, private val scope: C
var volumeKeysInverted = false
var trueColor = false
var alwaysShowChapterTransition = true
var dualPageSplit = false
var dualPageInvert = false
var navigationMode = 0
protected set
var dualPageSplit = false
protected set
var dualPageInvert = false
protected set
abstract var navigator: ViewerNavigation
protected set
@ -52,12 +56,6 @@ abstract class ViewerConfig(preferences: PreferencesHelper, private val scope: C
preferences.alwaysShowChapterTransition()
.register({ alwaysShowChapterTransition = it })
preferences.dualPageSplit()
.register({ dualPageSplit = it }, { imagePropertyChangedListener?.invoke() })
preferences.dualPageInvert()
.register({ dualPageInvert = it }, { imagePropertyChangedListener?.invoke() })
}
protected abstract fun defaultNavigation(): ViewerNavigation

View File

@ -49,6 +49,12 @@ class PagerConfig(
preferences.pagerNavInverted()
.register({ tappingInverted = it }, { navigator.invertMode = it })
preferences.dualPageSplitPaged()
.register({ dualPageSplit = it }, { imagePropertyChangedListener?.invoke() })
preferences.dualPageInvertPaged()
.register({ dualPageInvert = it }, { imagePropertyChangedListener?.invoke() })
// SY -->
preferences.pageTransitionsPager()
.register({ usePageTransitions = it }, { imagePropertyChangedListener?.invoke() })

View File

@ -50,6 +50,12 @@ class WebtoonConfig(
preferences.webtoonNavInverted()
.register({ tappingInverted = it }, { navigator.invertMode = it })
preferences.dualPageSplitWebtoon()
.register({ dualPageSplit = it }, { imagePropertyChangedListener?.invoke() })
preferences.dualPageInvertWebtoon()
.register({ dualPageInvert = it }, { imagePropertyChangedListener?.invoke() })
// SY -->
preferences.webtoonEnableZoomOut()
.register({ enableZoomOut = it }, { zoomPropertyChangedListener?.invoke(it) })

View File

@ -62,18 +62,6 @@ class SettingsReaderController : SettingsController() {
summaryRes = R.string.pref_left_handed_vertical_seekbar_summary
defaultValue = false
}
switchPreference {
key = Keys.dualPageSplit
titleRes = R.string.pref_dual_page_split
defaultValue = false
}
switchPreference {
key = Keys.dualPageInvert
titleRes = R.string.pref_dual_page_invert
summaryRes = R.string.pref_dual_page_invert_summary
defaultValue = false
preferences.dualPageSplit().asImmediateFlow { isVisible = it }.launchIn(viewScope)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
switchPreference {
key = Keys.trueColor
@ -220,11 +208,25 @@ class SettingsReaderController : SettingsController() {
titleRes = R.string.pref_crop_borders
defaultValue = false
}
// SY -->
switchPreference {
key = Keys.enableTransitionsPager
titleRes = R.string.pref_page_transitions
defaultValue = true
}
// SY <--
switchPreference {
key = Keys.dualPageSplitPaged
titleRes = R.string.pref_dual_page_split
defaultValue = false
}
switchPreference {
key = Keys.dualPageInvertPaged
titleRes = R.string.pref_dual_page_invert
summaryRes = R.string.pref_dual_page_invert_summary
defaultValue = false
preferences.dualPageSplitPaged().asImmediateFlow { isVisible = it }.launchIn(viewScope)
}
}
preferenceCategory {
@ -280,6 +282,19 @@ class SettingsReaderController : SettingsController() {
titleRes = R.string.pref_crop_borders
defaultValue = false
}
switchPreference {
key = Keys.dualPageSplitWebtoon
titleRes = R.string.pref_dual_page_split
defaultValue = false
}
switchPreference {
key = Keys.dualPageInvertWebtoon
titleRes = R.string.pref_dual_page_invert
summaryRes = R.string.pref_dual_page_invert_summary
defaultValue = false
preferences.dualPageSplitWebtoon().asImmediateFlow { isVisible = it }.launchIn(viewScope)
}
// SY -->
switchPreference {
key = Keys.enableTransitionsWebtoon
titleRes = R.string.pref_page_transitions
@ -290,6 +305,7 @@ class SettingsReaderController : SettingsController() {
titleRes = R.string.enable_zoom_out
defaultValue = false
}
// SY <--
}
// SY -->