From 82a92b949714dcf7325a8b98fa37181898e08112 Mon Sep 17 00:00:00 2001 From: arkon Date: Sat, 22 May 2021 17:41:53 -0400 Subject: [PATCH] Fallback to default viewer properly (closes #5068) (cherry picked from commit 2a7ed1375af6c2b705127f0ef2d2ac69e8b6bb67) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt --- .../tachiyomi/ui/reader/ReaderActivity.kt | 13 +++---------- .../tachiyomi/ui/reader/ReaderPresenter.kt | 16 ++++++++++------ .../ui/reader/setting/ReadingModeType.kt | 17 +++++++++++++++++ 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index af6e5d6ce..472d0be1e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -58,7 +58,6 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReaderBottomButton import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsSheet import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer -import eu.kanade.tachiyomi.ui.reader.viewer.pager.L2RPagerViewer import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer import eu.kanade.tachiyomi.ui.reader.viewer.pager.VerticalPagerViewer @@ -890,16 +889,10 @@ class ReaderActivity : BaseRxActivity() fun setManga(manga: Manga) { val prevViewer = viewer - /*val viewerMode = ReadingModeType.fromPreference(presenter.getMangaReadingMode(resolveDefault = false)) - binding.actionReadingMode.setImageResource(viewerMode.iconRes)*/ + val viewerMode = ReadingModeType.fromPreference(presenter.getMangaReadingMode(resolveDefault = false)) + binding.actionReadingMode.setImageResource(viewerMode.iconRes) - val newViewer = when (presenter.getMangaReadingMode()) { - ReadingModeType.LEFT_TO_RIGHT.prefValue -> L2RPagerViewer(this) - ReadingModeType.VERTICAL.prefValue -> VerticalPagerViewer(this) - ReadingModeType.WEBTOON.prefValue -> WebtoonViewer(this) - ReadingModeType.CONTINUOUS_VERTICAL.prefValue -> WebtoonViewer(this, isContinuous = false /* SY --> */, tapByPage = preferences.continuousVerticalTappingByPage().get() /* SY <-- */) - else -> R2LPagerViewer(this) - } + val newViewer = ReadingModeType.toViewer(presenter.getMangaReadingMode(), this) setOrientation(presenter.getMangaOrientationType()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index edc15e5cc..296454ef7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -599,15 +599,19 @@ class ReaderPresenter( * Returns the viewer position used by this manga or the default one. */ fun getMangaReadingMode(resolveDefault: Boolean = true): Int { - val manga = manga ?: return preferences.defaultReadingMode() + val default = preferences.defaultReadingMode() + val manga = manga ?: return default + val readingMode = ReadingModeType.fromPreference(manga.readingModeType) // SY --> return when { - resolveDefault && manga.readingModeType == ReadingModeType.DEFAULT.flagValue && preferences.useAutoWebtoon().get() -> { - manga.defaultReaderType(manga.mangaType(sourceName = sourceManager.get(manga.source)?.name)) ?: if (manga.readingModeType == ReadingModeType.DEFAULT.flagValue) preferences.defaultReadingMode() else manga.readingModeType - } - resolveDefault && manga.readingModeType == ReadingModeType.DEFAULT.flagValue -> { - preferences.defaultReadingMode() + resolveDefault && readingMode == ReadingModeType.DEFAULT && preferences.useAutoWebtoon().get() -> { + manga.defaultReaderType(manga.mangaType(sourceName = sourceManager.get(manga.source)?.name)) ?: if (manga.readingModeType == ReadingModeType.DEFAULT.flagValue) { + default + } else { + readingMode.prefValue + } } + resolveDefault && readingMode == ReadingModeType.DEFAULT -> default else -> manga.readingModeType } // SY <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingModeType.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingModeType.kt index d38b39877..ca927bfc7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingModeType.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingModeType.kt @@ -3,6 +3,12 @@ package eu.kanade.tachiyomi.ui.reader.setting import androidx.annotation.DrawableRes import androidx.annotation.StringRes import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.ui.reader.ReaderActivity +import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer +import eu.kanade.tachiyomi.ui.reader.viewer.pager.L2RPagerViewer +import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer +import eu.kanade.tachiyomi.ui.reader.viewer.pager.VerticalPagerViewer +import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer enum class ReadingModeType(val prefValue: Int, @StringRes val stringRes: Int, @DrawableRes val iconRes: Int, val flagValue: Int) { DEFAULT(0, R.string.default_viewer, R.drawable.ic_reader_default_24dp, 0x00000000), @@ -24,5 +30,16 @@ enum class ReadingModeType(val prefValue: Int, @StringRes val stringRes: Int, @D } fun fromSpinner(position: Int?) = values().find { value -> value.prefValue == position } ?: DEFAULT + + fun toViewer(preference: Int?, activity: ReaderActivity): BaseViewer { + return when (fromPreference(preference)) { + LEFT_TO_RIGHT -> L2RPagerViewer(activity) + RIGHT_TO_LEFT -> R2LPagerViewer(activity) + VERTICAL -> VerticalPagerViewer(activity) + WEBTOON -> WebtoonViewer(activity) + CONTINUOUS_VERTICAL -> WebtoonViewer(activity, isContinuous = false) + DEFAULT -> throw IllegalStateException("Preference value must be resolved: $preference") + } + } } }