From f770ac9ac949f0aeeaf4ce78a494bc5071afa9bb Mon Sep 17 00:00:00 2001 From: tarsin Date: Sun, 14 May 2023 00:57:05 +0800 Subject: [PATCH] Implement #1042 Since this View-based reader will never be actively maintained, and we are to rewrite it with Compose, Forgive me messing up the code... --- .../labs/subscaleview/SubsamplingScaleImageView.kt | 2 ++ .../ui/reader/setting/ReaderGeneralSettings.kt | 1 + .../tachiyomi/ui/reader/setting/ReaderPreferences.kt | 1 + .../tachiyomi/ui/reader/viewer/ReaderPageImageView.kt | 11 +++++++---- .../ui/reader/viewer/webtoon/WebtoonRecyclerView.kt | 3 ++- app/src/main/res/layout/reader_general_settings.xml | 9 +++++++++ app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 9 files changed, 25 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.kt b/app/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.kt index 23baa23f4..00082b71b 100644 --- a/app/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.kt +++ b/app/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.kt @@ -22,6 +22,7 @@ import androidx.annotation.IntDef import com.davemorrissey.labs.subscaleview.decoder.Decoder import com.davemorrissey.labs.subscaleview.decoder.ImageDecoder import com.davemorrissey.labs.subscaleview.provider.InputProvider +import eu.kanade.tachiyomi.ui.reader.ReaderActivity import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -462,6 +463,7 @@ open class SubsamplingScaleImageView @JvmOverloads constructor( } override fun onDoubleTap(e: MotionEvent): Boolean { + if (!ReaderActivity.readerPreferences.doubleTapToZoom().get()) return false if (isZoomEnabled && isReady && vTranslate != null) { // Hacky solution for #15 - after a double tap the GestureDetector gets in a state // where the next fling is ignored, so here we replace it with a new one. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderGeneralSettings.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderGeneralSettings.kt index 158ff71c3..48300237a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderGeneralSettings.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderGeneralSettings.kt @@ -36,6 +36,7 @@ class ReaderGeneralSettings @JvmOverloads constructor(context: Context, attrs: A binding.backgroundColor.bindToIntPreference(readerPreferences.readerTheme(), R.array.reader_themes_values) binding.showPageNumber.bindToPreference(readerPreferences.showPageNumber()) binding.showReaderSeekbar.bindToPreference(readerPreferences.showReaderSeekbar()) + binding.doubleTapToZoom.bindToPreference(readerPreferences.doubleTapToZoom()) binding.fullscreen.bindToPreference(readerPreferences.fullscreen()) readerPreferences.fullscreen() .asHotFlow { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt index 2c2d87127..8587fb323 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt @@ -15,6 +15,7 @@ class ReaderPreferences(private val preferenceStore: PreferenceStore) { fun showPageNumber() = preferenceStore.getBoolean("pref_show_page_number_key", true) fun showReaderSeekbar() = preferenceStore.getBoolean("pref_show_reader_seekbar", true) + fun doubleTapToZoom() = preferenceStore.getBoolean("pref_double_tap_to_zoom", true) fun trueColor() = preferenceStore.getBoolean("pref_true_color_key", false) 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 f814fb714..7f715f361 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 @@ -23,6 +23,7 @@ import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.Companion.EASE_OUT_QUAD import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.Companion.SCALE_TYPE_CENTER_INSIDE import com.github.chrisbanes.photoview.PhotoView +import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonSubsamplingImageView import eu.kanade.tachiyomi.util.system.animatorDurationScale import eu.kanade.tachiyomi.util.view.isVisibleOnScreen @@ -277,10 +278,12 @@ open class ReaderPageImageView @JvmOverloads constructor( setOnDoubleTapListener( object : GestureDetector.SimpleOnGestureListener() { override fun onDoubleTap(e: MotionEvent): Boolean { - if (scale > 1F) { - setScale(1F, e.x, e.y, true) - } else { - setScale(2F, e.x, e.y, true) + if (ReaderActivity.readerPreferences.doubleTapToZoom().get()) { + if (scale > 1F) { + setScale(1F, e.x, e.y, true) + } else { + setScale(2F, e.x, e.y, true) + } } return true } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonRecyclerView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonRecyclerView.kt index 5e81ec7a9..a1abde749 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonRecyclerView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonRecyclerView.kt @@ -11,6 +11,7 @@ import android.view.animation.DecelerateInterpolator import androidx.core.animation.doOnEnd import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.ui.reader.viewer.GestureDetectorWithLongTap import kotlin.math.abs @@ -208,7 +209,7 @@ class WebtoonRecyclerView @JvmOverloads constructor( } override fun onDoubleTap(ev: MotionEvent): Boolean { - detector.isDoubleTapping = true + if (ReaderActivity.readerPreferences.doubleTapToZoom().get()) detector.isDoubleTapping = true return false } diff --git a/app/src/main/res/layout/reader_general_settings.xml b/app/src/main/res/layout/reader_general_settings.xml index 4876fd011..a20edfb9d 100644 --- a/app/src/main/res/layout/reader_general_settings.xml +++ b/app/src/main/res/layout/reader_general_settings.xml @@ -35,6 +35,15 @@ android:text="@string/pref_show_reader_seekbar" android:textColor="?android:attr/textColorSecondary" /> + + 页面过渡动画 显示页码 显示跳页拖动条 + 双击缩放 自定义亮度 自定义滤镜 保持屏幕常亮 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 58b636f8b..333b42fb3 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -548,6 +548,7 @@ 翻頁轉場動畫 顯示頁碼 顯示跳頁拖動條 + 雙擊縮放 自訂亮度 色彩濾鏡 保持螢幕恆亮 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7f3a5c64a..a72a59aba 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -629,6 +629,7 @@ Animate page transitions Show page number Show page jumping seekbar + Double tap to zoom Custom brightness Grayscale Inverted