From dbada34a43922efacbf0bb2b5d0d497fa1b08417 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 26 Oct 2025 17:27:33 +0200 Subject: [PATCH] Move pull gesture option to reader settings --- .../reader/ui/config/ReaderConfigSheet.kt | 36 +- .../main/res/layout/sheet_reader_config.xml | 365 +++++++++--------- app/src/main/res/xml/pref_reader.xml | 6 + 3 files changed, 201 insertions(+), 206 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/config/ReaderConfigSheet.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/config/ReaderConfigSheet.kt index cd8c3080a..856cdd9c8 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/config/ReaderConfigSheet.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/config/ReaderConfigSheet.kt @@ -10,6 +10,7 @@ import androidx.core.view.isGone import androidx.core.view.isVisible import androidx.core.view.updatePadding import androidx.fragment.app.activityViewModels +import androidx.transition.TransitionManager import com.google.android.material.button.MaterialButtonToggleGroup import com.google.android.material.slider.Slider import dagger.hilt.android.AndroidEntryPoint @@ -90,13 +91,9 @@ class ReaderConfigSheet : binding.buttonVertical.isChecked = mode == ReaderMode.VERTICAL binding.switchDoubleReader.isChecked = settings.isReaderDoubleOnLandscape binding.switchDoubleReader.isEnabled = mode == ReaderMode.STANDARD || mode == ReaderMode.REVERSED - binding.switchPullGesture.isChecked = settings.isWebtoonPullGestureEnabled - binding.switchPullGesture.isEnabled = mode == ReaderMode.WEBTOON - - binding.textSensitivity.isVisible = settings.isReaderDoubleOnLandscape - binding.seekbarSensitivity.isVisible = settings.isReaderDoubleOnLandscape - binding.seekbarSensitivity.setValueRounded(settings.readerDoublePagesSensitivity * 100f) - binding.seekbarSensitivity.setLabelFormatter(IntPercentLabelFormatter(binding.root.context)) + binding.sliderDoubleSensitivity.setValueRounded(settings.readerDoublePagesSensitivity * 100f) + binding.sliderDoubleSensitivity.setLabelFormatter(IntPercentLabelFormatter(binding.root.context)) + binding.adjustSensitivitySlider(withAnimation = false) binding.checkableGroup.addOnButtonCheckedListener(this) binding.buttonSavePage.setOnClickListener(this) @@ -107,8 +104,7 @@ class ReaderConfigSheet : binding.buttonScrollTimer.setOnClickListener(this) binding.buttonBookmark.setOnClickListener(this) binding.switchDoubleReader.setOnCheckedChangeListener(this) - binding.switchPullGesture.setOnCheckedChangeListener(this) - binding.seekbarSensitivity.addOnChangeListener(this) + binding.sliderDoubleSensitivity.addOnChangeListener(this) viewModel.isBookmarkAdded.observe(viewLifecycleOwner) { binding.buttonBookmark.setText(if (it) R.string.bookmark_remove else R.string.bookmark_add) @@ -183,14 +179,9 @@ class ReaderConfigSheet : R.id.switch_double_reader -> { settings.isReaderDoubleOnLandscape = isChecked - viewBinding?.textSensitivity?.isVisible = isChecked - viewBinding?.seekbarSensitivity?.isVisible = isChecked + viewBinding?.adjustSensitivitySlider(withAnimation = true) findParentCallback(Callback::class.java)?.onDoubleModeChanged(isChecked) } - - R.id.switch_pull_gesture -> { - settings.isWebtoonPullGestureEnabled = isChecked - } } } @@ -213,8 +204,10 @@ class ReaderConfigSheet : R.id.button_vertical -> ReaderMode.VERTICAL else -> return } - viewBinding?.switchDoubleReader?.isEnabled = newMode == ReaderMode.STANDARD || newMode == ReaderMode.REVERSED - viewBinding?.switchPullGesture?.isEnabled = newMode == ReaderMode.WEBTOON + viewBinding?.run { + switchDoubleReader.isEnabled = newMode == ReaderMode.STANDARD || newMode == ReaderMode.REVERSED + adjustSensitivitySlider(withAnimation = true) + } if (newMode == mode) { return } @@ -248,6 +241,15 @@ class ReaderConfigSheet : ) } + private fun SheetReaderConfigBinding.adjustSensitivitySlider(withAnimation: Boolean) { + val isSliderVisible = switchDoubleReader.isEnabled && switchDoubleReader.isChecked + if (isSliderVisible != sliderDoubleSensitivity.isVisible && withAnimation) { + TransitionManager.beginDelayedTransition(layoutMain) + } + sliderDoubleSensitivity.isVisible = isSliderVisible + textDoubleSensitivity.isVisible = isSliderVisible + } + interface Callback { fun onReaderModeChanged(mode: ReaderMode) diff --git a/app/src/main/res/layout/sheet_reader_config.xml b/app/src/main/res/layout/sheet_reader_config.xml index f7a7929d9..3aa0662df 100644 --- a/app/src/main/res/layout/sheet_reader_config.xml +++ b/app/src/main/res/layout/sheet_reader_config.xml @@ -1,216 +1,203 @@ + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + diff --git a/app/src/main/res/xml/pref_reader.xml b/app/src/main/res/xml/pref_reader.xml index 4a926ebc8..03eafcb8c 100644 --- a/app/src/main/res/xml/pref_reader.xml +++ b/app/src/main/res/xml/pref_reader.xml @@ -87,6 +87,12 @@ android:title="@string/pages_animation" app:useSimpleSummaryProvider="true" /> + +