From 43098aa61b6455c4d3f1b7a51d2ca6bdacf7ce54 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Tue, 19 May 2020 22:00:58 -0400 Subject: [PATCH] Added Auto Webtoon Mode --- .../tachiyomi/data/preference/PreferenceKeys.kt | 2 ++ .../data/preference/PreferencesHelper.kt | 2 ++ .../kanade/tachiyomi/ui/reader/ReaderActivity.kt | 1 - .../tachiyomi/ui/reader/ReaderPresenter.kt | 9 ++++++++- .../tachiyomi/ui/reader/ReaderSettingsSheet.kt | 2 ++ .../ui/setting/SettingsReaderController.kt | 6 ++++++ app/src/main/java/exh/util/MangaType.kt | 16 ++++++++-------- .../main/res/layout/reader_settings_sheet.xml | 10 +++++++++- app/src/main/res/values/strings_extra.xml | 1 + 9 files changed, 38 insertions(+), 11 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 e78bf7728..e8ab0a46f 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 @@ -236,4 +236,6 @@ object PreferenceKeys { const val eh_is_hentai_enabled = "eh_is_hentai_enabled" const val eh_use_new_manga_interface = "eh_use_new_manga_interface" + + const val eh_use_auto_webtoon = "eh_use_auto_webtoon" } 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 153651ce2..a3e217c27 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 @@ -346,4 +346,6 @@ class PreferencesHelper(val context: Context) { fun eh_preload_size() = flowPrefs.getInt(Keys.eh_preload_size, 4) fun eh_useNewMangaInterface() = flowPrefs.getBoolean(Keys.eh_use_new_manga_interface, true) + + fun eh_useAutoWebtoon() = flowPrefs.getBoolean(Keys.eh_use_auto_webtoon, true) } 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 db5c2b73c..5fd768e57 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 @@ -115,7 +115,6 @@ class ReaderActivity : BaseRxActivity() private var autoscrollSubscription: Subscription? = null private val sourceManager: SourceManager by injectLazy() - private val prefs: PreferencesHelper by injectLazy() private val logger = XLog.tag("ReaderActivity") // <-- EH 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 9c2d6baf2..808ece79e 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 @@ -28,6 +28,7 @@ import eu.kanade.tachiyomi.util.lang.takeBytes import eu.kanade.tachiyomi.util.storage.DiskUtil import eu.kanade.tachiyomi.util.system.ImageUtil import eu.kanade.tachiyomi.util.updateCoverLastModified +import exh.util.defaultReaderType import java.io.File import java.util.Date import java.util.concurrent.TimeUnit @@ -447,7 +448,13 @@ class ReaderPresenter( */ fun getMangaViewer(): Int { val manga = manga ?: return preferences.defaultViewer() - return if (manga.viewer == 0) preferences.defaultViewer() else manga.viewer + return if (manga.viewer == 0 && preferences.eh_useAutoWebtoon().get()) { + manga.defaultReaderType() ?: if (manga.viewer == 0) preferences.defaultViewer() else manga.viewer + } else if (manga.viewer == 0) { + preferences.defaultViewer() + } else { + manga.viewer + } } /** 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 1654cf18f..75b13f68f 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 @@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.util.view.invisible import eu.kanade.tachiyomi.util.view.visible import eu.kanade.tachiyomi.widget.IgnoreFirstSpinnerListener import kotlinx.android.synthetic.main.reader_settings_sheet.always_show_chapter_transition +import kotlinx.android.synthetic.main.reader_settings_sheet.auto_webtoon_mode import kotlinx.android.synthetic.main.reader_settings_sheet.background_color import kotlinx.android.synthetic.main.reader_settings_sheet.crop_borders import kotlinx.android.synthetic.main.reader_settings_sheet.crop_borders_webtoon @@ -90,6 +91,7 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia keepscreen.bindToPreference(preferences.keepScreenOn()) long_tap.bindToPreference(preferences.readWithLongTap()) always_show_chapter_transition.bindToPreference(preferences.alwaysShowChapterTransition()) + auto_webtoon_mode.bindToPreference(preferences.eh_useAutoWebtoon()) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { true_color.visible() 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 d70122dc7..bc1602b44 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 @@ -210,6 +210,12 @@ class SettingsReaderController : SettingsController() { title = "Preserve reading position on read manga" defaultValue = false } + switchPreference { + key = Keys.eh_use_auto_webtoon + title = "Auto Webtoon Mode" + summary = "Use auto webtoon mode for manga that are detected to likely use the long strip format" + defaultValue = true + } } preferenceCategory { diff --git a/app/src/main/java/exh/util/MangaType.kt b/app/src/main/java/exh/util/MangaType.kt index 5888f5b11..fb21af53b 100644 --- a/app/src/main/java/exh/util/MangaType.kt +++ b/app/src/main/java/exh/util/MangaType.kt @@ -33,6 +33,9 @@ fun Manga.mangaType(): MangaType { return if (currentTags.any { tag -> tag.contains("japanese", ignoreCase = true) || isMangaTag(tag) }) { Log.d("MangaType", "isManga") MangaType.TYPE_MANGA + } else if (currentTags.any { tag -> isWebtoonTag(tag) } || isWebtoonSource(sourceName)) { + Log.d("MangaType", "isWebtoon") + MangaType.TYPE_WEBTOON } else if (currentTags.any { tag -> tag.contains("english", ignoreCase = true) || isComicTag(tag) } || isComicSource(sourceName)) { Log.d("MangaType", "isComic") MangaType.TYPE_COMIC @@ -42,9 +45,6 @@ fun Manga.mangaType(): MangaType { } else if (currentTags.any { tag -> tag.contains("korean", ignoreCase = true) || isManhwaTag(tag) } || isManhwaSource(sourceName)) { Log.d("MangaType", "isManhwa") MangaType.TYPE_MANHWA - } else if (currentTags.any { tag -> isWebtoonTag(tag) } || isWebtoonSource(sourceName)) { - Log.d("MangaType", "isWebtoon") - MangaType.TYPE_WEBTOON } else { Log.d("MangaType", "ended up as isManga") MangaType.TYPE_MANGA @@ -55,14 +55,14 @@ fun Manga.mangaType(): MangaType { * The type the reader should use. Different from manga type as certain manga has different * read types */ -fun Manga.defaultReaderType(): Int { - val sourceName = Injekt.get().getOrStub(source).name +fun Manga.defaultReaderType(): Int? { + // val sourceName = Injekt.get().getOrStub(source).name val type = mangaType() return if (type == MangaType.TYPE_MANHWA || type == MangaType.TYPE_WEBTOON) { ReaderActivity.WEBTOON - } else if (type == MangaType.TYPE_MANHUA || (type == MangaType.TYPE_COMIC && !sourceName.contains("tapastic", ignoreCase = true))) { - ReaderActivity.LEFT_TO_RIGHT - } else 0 + /* } else if (type == MangaType.TYPE_MANHUA || (type == MangaType.TYPE_COMIC && !sourceName.contains("tapastic", ignoreCase = true))) { + ReaderActivity.LEFT_TO_RIGHT*/ + } else null } private fun isMangaTag(tag: String): Boolean { diff --git a/app/src/main/res/layout/reader_settings_sheet.xml b/app/src/main/res/layout/reader_settings_sheet.xml index d7170ff69..72241ff32 100644 --- a/app/src/main/res/layout/reader_settings_sheet.xml +++ b/app/src/main/res/layout/reader_settings_sheet.xml @@ -171,11 +171,19 @@ android:textColor="?android:attr/textColorSecondary" app:layout_constraintTop_toBottomOf="@id/true_color" /> + + + app:layout_constraintBottom_toBottomOf="@id/auto_webtoon_mode" /> diff --git a/app/src/main/res/values/strings_extra.xml b/app/src/main/res/values/strings_extra.xml index 8564f47bd..52c10f3d0 100644 --- a/app/src/main/res/values/strings_extra.xml +++ b/app/src/main/res/values/strings_extra.xml @@ -105,6 +105,7 @@ Add Galleries Adding galleries… Finish + Auto Webtoon Mode Detection See Recommendations