From 1fdb03f7dbc49ae07c527aa632765dec3d246e3b Mon Sep 17 00:00:00 2001 From: Andreas Date: Sun, 28 Feb 2021 22:17:37 +0100 Subject: [PATCH] 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 --- .../data/preference/PreferenceKeys.kt | 16 +++++--- .../data/preference/PreferencesHelper.kt | 8 +++- .../ui/reader/ReaderSettingsSheet.kt | 21 ++++++---- .../ui/reader/viewer/ViewerConfig.kt | 14 +++---- .../ui/reader/viewer/pager/PagerConfig.kt | 6 +++ .../ui/reader/viewer/webtoon/WebtoonConfig.kt | 6 +++ .../ui/setting/SettingsReaderController.kt | 40 +++++++++++++------ 7 files changed, 76 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt index 230f2d542..9aca70e0d 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt @@ -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" } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index 024e319f8..17c9d53f5 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -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) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt index e379e67aa..07f4b47b9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt @@ -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()) } /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt index bf47e3fce..651a64185 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt @@ -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 diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt index a15bcd5c9..b8e7febeb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt @@ -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() }) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt index 50623869b..75fb5d815 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt @@ -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) }) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt index e7b6cd883..5b5a8fa79 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt @@ -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 -->