From d25a857b7a292016e15302dcbcdf23d2d79a95bb Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Thu, 21 Nov 2024 11:31:49 +0700 Subject: [PATCH] feat(reader): Debug mode --- .../ui/reader/viewer/ReaderPageImageView.kt | 4 +++- .../tachiyomi/ui/reader/viewer/ViewerConfig.kt | 14 +++++++++++++- .../ui/reader/viewer/pager/PagerPageHolder.kt | 1 + .../ui/reader/viewer/webtoon/WebtoonPageHolder.kt | 2 +- .../controllers/SettingsAdvancedController.kt | 8 +++++++- .../yokai/domain/ui/settings/ReaderPreferences.kt | 3 +++ .../src/commonMain/moko-resources/base/strings.xml | 1 + 7 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderPageImageView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderPageImageView.kt index 08ab021aeb..6705cdf4d9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderPageImageView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderPageImageView.kt @@ -185,6 +185,7 @@ open class ReaderPageImageView @JvmOverloads constructor( data: Any, config: Config, ) = (pageView as? SubsamplingScaleImageView)?.apply { + setDebug(config.debugMode) setDoubleTapZoomDuration(config.zoomDuration.getSystemScaledDuration()) setMinimumScaleType(config.minimumScaleType) setMinimumDpi(1) // Just so that very small image will be fit for initial load @@ -249,7 +250,7 @@ open class ReaderPageImageView @JvmOverloads constructor( isVisible = true }, onError = { - this@ReaderPageImageView.onImageLoadError() + onImageLoadError() }, ) .size(ViewSizeResolver(this@ReaderPageImageView)) @@ -349,6 +350,7 @@ open class ReaderPageImageView @JvmOverloads constructor( val landscapeZoom: Boolean = false, val insetInfo: InsetInfo? = null, val hingeGapSize: Int = 0, + val debugMode: Boolean = false, ) data class InsetInfo( 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 2d269a66f7..d767885c08 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 @@ -4,11 +4,18 @@ import eu.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.changesIn import kotlinx.coroutines.CoroutineScope +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import yokai.domain.ui.settings.ReaderPreferences /** * Common configuration for all viewers. */ -abstract class ViewerConfig(preferences: PreferencesHelper, protected val scope: CoroutineScope) { +abstract class ViewerConfig( + preferences: PreferencesHelper, + protected val scope: CoroutineScope, + readerPreferences: ReaderPreferences = Injekt.get(), +) { var imagePropertyChangedListener: (() -> Unit)? = null var reloadChapterListener: ((Boolean) -> Unit)? = null @@ -27,6 +34,8 @@ abstract class ViewerConfig(preferences: PreferencesHelper, protected val scope: var navigationMode = 0 protected set + var debugMode = false + abstract var navigator: ViewerNavigation protected set @@ -45,6 +54,9 @@ abstract class ViewerConfig(preferences: PreferencesHelper, protected val scope: preferences.alwaysShowChapterTransition() .register({ alwaysShowChapterTransition = it }) + + readerPreferences.debugMode() + .register({ debugMode = it }) } fun Preference.register( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt index d066846c63..e2d17dec75 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt @@ -534,6 +534,7 @@ class PagerPageHolder( insets = viewer.activity.window.decorView.rootWindowInsets, ), hingeGapSize = viewer.config.hingeGapSize, + debugMode = viewer.config.debugMode, ) private suspend fun setBG(stream: InputStream): Drawable { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt index 26516ce795..c8d553b43e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt @@ -20,7 +20,6 @@ import eu.kanade.tachiyomi.ui.reader.viewer.ReaderPageImageView import eu.kanade.tachiyomi.ui.reader.viewer.ReaderProgressIndicator import eu.kanade.tachiyomi.util.system.ImageUtil import eu.kanade.tachiyomi.util.system.dpToPx -import eu.kanade.tachiyomi.util.system.e import eu.kanade.tachiyomi.util.system.launchIO import eu.kanade.tachiyomi.util.system.withIOContext import eu.kanade.tachiyomi.util.system.withUIContext @@ -198,6 +197,7 @@ class WebtoonPageHolder( cropBorders = viewer.config.run { if (viewer.hasMargins) { verticalCropBorders } else { webtoonCropBorders } }, + debugMode = viewer.config.debugMode, ), ) removeErrorLayout() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsAdvancedController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsAdvancedController.kt index b32233654f..3b33a53a36 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsAdvancedController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsAdvancedController.kt @@ -59,7 +59,6 @@ import eu.kanade.tachiyomi.ui.setting.switchPreference import eu.kanade.tachiyomi.util.CrashLogUtil import eu.kanade.tachiyomi.util.system.GLUtil import eu.kanade.tachiyomi.util.system.disableItems -import eu.kanade.tachiyomi.util.system.e import eu.kanade.tachiyomi.util.system.isPackageInstalled import eu.kanade.tachiyomi.util.system.launchIO import eu.kanade.tachiyomi.util.system.launchUI @@ -89,6 +88,7 @@ import uy.kohesive.injekt.injectLazy import yokai.domain.base.BasePreferences.ExtensionInstaller import yokai.domain.extension.interactor.TrustExtension import yokai.domain.manga.interactor.GetManga +import yokai.domain.ui.settings.ReaderPreferences import yokai.i18n.MR import yokai.util.lang.getString import android.R as AR @@ -99,6 +99,7 @@ class SettingsAdvancedController : SettingsLegacyController() { private val network: NetworkHelper by injectLazy() private val networkPreferences: NetworkPreferences by injectLazy() + private val readerPreferences: ReaderPreferences by injectLazy() private val db: DatabaseHelper by injectLazy() @@ -424,6 +425,11 @@ class SettingsAdvancedController : SettingsLegacyController() { if (actualPath.isNotEmpty()) summary = actualPath } } + + switchPreference { + bindTo(readerPreferences.debugMode()) + titleRes = MR.strings.pref_reader_debug_mode + } } preferenceCategory { diff --git a/app/src/main/java/yokai/domain/ui/settings/ReaderPreferences.kt b/app/src/main/java/yokai/domain/ui/settings/ReaderPreferences.kt index ad9370fd19..b4c312c128 100644 --- a/app/src/main/java/yokai/domain/ui/settings/ReaderPreferences.kt +++ b/app/src/main/java/yokai/domain/ui/settings/ReaderPreferences.kt @@ -1,6 +1,7 @@ package yokai.domain.ui.settings import dev.icerock.moko.resources.StringResource +import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.core.preference.getEnum import eu.kanade.tachiyomi.data.preference.PreferenceKeys @@ -45,4 +46,6 @@ class ReaderPreferences(private val preferenceStore: PreferenceStore) { } fun webtoonDoubleTapZoomEnabled() = preferenceStore.getBoolean("pref_enable_double_tap_zoom_webtoon", true) + + fun debugMode() = preferenceStore.getBoolean("pref_enable_reader_debug_mode", BuildConfig.DEBUG) } diff --git a/i18n/src/commonMain/moko-resources/base/strings.xml b/i18n/src/commonMain/moko-resources/base/strings.xml index 7c7077a2ec..a74e0d3b3a 100644 --- a/i18n/src/commonMain/moko-resources/base/strings.xml +++ b/i18n/src/commonMain/moko-resources/base/strings.xml @@ -805,6 +805,7 @@ Crash logs saved Verbose logging Print verbose logs to system log (may reduces app performance) + Debug mode Network DNS over HTTPS Default user agent string