From 2a7ed1375af6c2b705127f0ef2d2ac69e8b6bb67 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) --- .../tachiyomi/ui/reader/ReaderActivity.kt | 11 +---------- .../tachiyomi/ui/reader/ReaderPresenter.kt | 3 ++- .../ui/reader/setting/ReadingModeType.kt | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 11 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 dbec570531..8596adc6cd 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 @@ -50,10 +50,7 @@ import eu.kanade.tachiyomi.ui.reader.setting.OrientationType 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.R2LPagerViewer -import eu.kanade.tachiyomi.ui.reader.viewer.pager.VerticalPagerViewer -import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer import eu.kanade.tachiyomi.util.storage.getUriCompat import eu.kanade.tachiyomi.util.system.GLUtil import eu.kanade.tachiyomi.util.system.hasDisplayCutout @@ -540,13 +537,7 @@ class ReaderActivity : BaseRxActivity() 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) - 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 f6cee19c64..b2a308e9b0 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 @@ -501,8 +501,9 @@ class ReaderPresenter( */ fun getMangaReadingMode(resolveDefault: Boolean = true): Int { val default = preferences.defaultReadingMode() + val readingMode = ReadingModeType.fromPreference(manga?.readingModeType) return when { - resolveDefault && manga?.readingModeType == ReadingModeType.DEFAULT.flagValue -> default + resolveDefault && readingMode == ReadingModeType.DEFAULT -> default else -> manga?.readingModeType ?: default } } 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 d38b398774..ca927bfc7b 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") + } + } } }