diff --git a/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt b/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt index 19bfbb066..20a29269b 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt @@ -218,6 +218,9 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { get() = prefs.getEnumValue(KEY_LOCAL_LIST_ORDER, SortOrder.NEWEST) set(value) = prefs.edit { putEnumValue(KEY_LOCAL_LIST_ORDER, value) } + val isWebtoonZoomEnable: Boolean + get() = prefs.getBoolean(KEY_WEBTOON_ZOOM, true) + fun isPagesPreloadAllowed(cm: ConnectivityManager): Boolean { return when (prefs.getString(KEY_PAGES_PRELOAD, null)?.toIntOrNull()) { NETWORK_ALWAYS -> true @@ -337,6 +340,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { const val KEY_SHORTCUTS = "dynamic_shortcuts" const val KEY_READER_TAPS_LTR = "reader_taps_ltr" const val KEY_LOCAL_LIST_ORDER = "local_order" + const val KEY_WEBTOON_ZOOM = "webtoon_zoom" // About const val KEY_APP_UPDATE = "app_update" diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/config/ReaderSettings.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/config/ReaderSettings.kt index 9619e53df..283bfc661 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/config/ReaderSettings.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/config/ReaderSettings.kt @@ -27,6 +27,9 @@ class ReaderSettings( val isPagesNumbersEnabled: Boolean get() = settings.isPagesNumbersEnabled + val isWebtoonZoomEnable: Boolean + get() = settings.isWebtoonZoomEnable + override fun onInactive() { super.onInactive() settings.unsubscribe(internalObserver) @@ -60,7 +63,7 @@ class ReaderSettings( } override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { - if (key == AppSettings.KEY_ZOOM_MODE || key == AppSettings.KEY_PAGES_NUMBERS) { + if (key == AppSettings.KEY_ZOOM_MODE || key == AppSettings.KEY_PAGES_NUMBERS || key == AppSettings.KEY_WEBTOON_ZOOM) { notifyChanged() } } diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonReaderFragment.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonReaderFragment.kt index e91f1467c..c414ffb9c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonReaderFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonReaderFragment.kt @@ -35,6 +35,8 @@ class WebtoonReaderFragment : BaseReader() { adapter = webtoonAdapter addOnPageScrollListener(PageScrollListener()) } + + viewModel.readerSettings.observe(viewLifecycleOwner) { binding.frame.isZoomEnable = it.isWebtoonZoomEnable } } override fun onDestroyView() { diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonScalingFrame.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonScalingFrame.kt index 580112344..b834ecf1e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonScalingFrame.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonScalingFrame.kt @@ -39,12 +39,23 @@ class WebtoonScalingFrame @JvmOverloads constructor( private val targetHitRect = Rect() private var pendingScroll = 0 + var isZoomEnable = true + set(value) { + field = value + if (scale != 1f) { + scaleChild(1f, halfWidth, halfHeight) + } + } + init { syncMatrixValues() } override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { - ev ?: return super.dispatchTouchEvent(ev) + if (!isZoomEnable || ev == null) { + return super.dispatchTouchEvent(ev) + } + if (ev.action == MotionEvent.ACTION_DOWN && overScroller.computeScrollOffset()) { overScroller.forceFinished(true) } @@ -64,10 +75,6 @@ class WebtoonScalingFrame @JvmOverloads constructor( return super.dispatchTouchEvent(ev) } - override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean { - return super.onInterceptTouchEvent(ev) || scaleDetector.isInProgress - } - override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { super.onMeasure(widthMeasureSpec, heightMeasureSpec) halfWidth = measuredWidth / 2f diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1d9453ba7..068b04c90 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -390,4 +390,5 @@ Discard No space left on device Show page switching slider + Webtoon zoom diff --git a/app/src/main/res/xml/pref_reader.xml b/app/src/main/res/xml/pref_reader.xml index 1842876fa..eedcddc3e 100644 --- a/app/src/main/res/xml/pref_reader.xml +++ b/app/src/main/res/xml/pref_reader.xml @@ -40,6 +40,11 @@ android:key="reader_animation" android:title="@string/pages_animation" /> + +