From c54b8e62d72bf6e8e7508d9f43373749b99142e0 Mon Sep 17 00:00:00 2001 From: Andreas E Date: Sun, 21 Jun 2020 16:47:18 +0200 Subject: [PATCH 1/7] Add option to reverse tapping --- .../kanade/tachiyomi/data/preference/PreferenceKeys.kt | 2 ++ .../tachiyomi/data/preference/PreferencesHelper.kt | 2 ++ .../eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt | 4 ++++ .../tachiyomi/ui/reader/viewer/pager/PagerViewer.kt | 9 +++++++-- .../tachiyomi/ui/setting/SettingsReaderController.kt | 5 +++++ app/src/main/res/values/strings.xml | 1 + 6 files changed, 21 insertions(+), 2 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 851e170294..d93fd0c8e7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt @@ -55,6 +55,8 @@ object PreferenceKeys { const val readWithTapping = "reader_tap" + const val readWithTappingInverted = "reader_volume_keys_inverted" + const val readWithLongTap = "reader_long_tap" const val readWithVolumeKeys = "reader_volume_keys" 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 8cb193959d..df32cb70e7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -121,6 +121,8 @@ class PreferencesHelper(val context: Context) { fun readWithTapping() = flowPrefs.getBoolean(Keys.readWithTapping, true) + fun readWithTappingInverted() = flowPrefs.getBoolean(Keys.readWithTappingInverted, false) + fun readWithLongTap() = flowPrefs.getBoolean(Keys.readWithLongTap, true) fun readWithVolumeKeys() = flowPrefs.getBoolean(Keys.readWithVolumeKeys, false) 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 7520458216..4221cf6d58 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 @@ -20,6 +20,7 @@ abstract class ViewerConfig(preferences: PreferencesHelper) { var tappingEnabled = true var longTapEnabled = true + var tappingInverted = false var doubleTapAnimDuration = 500 var volumeKeysEnabled = false var volumeKeysInverted = false @@ -30,6 +31,9 @@ abstract class ViewerConfig(preferences: PreferencesHelper) { preferences.readWithTapping() .register({ tappingEnabled = it }) + preferences.readWithTappingInverted() + .register({ tappingInverted = it }) + preferences.readWithLongTap() .register({ longTapEnabled = it }) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt index 81ea15a41b..29132c079b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt @@ -81,9 +81,14 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { }) pager.tapListener = { event -> val positionX = event.x + val tappingInverted = config.tappingInverted + + val leftSideTap = positionX < pager.width * 0.33f && config.tappingEnabled + val rightSideTap = positionX > pager.width * 0.66f && config.tappingEnabled + when { - positionX < pager.width * 0.33f && config.tappingEnabled -> moveLeft() - positionX > pager.width * 0.66f && config.tappingEnabled -> moveRight() + leftSideTap && !tappingInverted || rightSideTap && tappingInverted -> moveLeft() + rightSideTap && !tappingInverted || leftSideTap && tappingInverted -> moveRight() else -> activity.toggleMenu() } } 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 12fe7f5caa..f72923e07a 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 @@ -190,6 +190,11 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.pref_read_with_tapping defaultValue = true } + switchPreference { + key = Keys.readWithTappingInverted + titleRes = R.string.pref_read_with_tapping_inverted + defaultValue = false + }.apply { dependency = Keys.readWithTapping } switchPreference { key = Keys.readWithLongTap titleRes = R.string.pref_read_with_long_tap diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 13cac05c9c..15339ad10f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -665,5 +665,6 @@ Backup and restore Progress Complete + Invert tapping From d0f1a337447bd1bc5d8cf908cc62dea35c5f18ad Mon Sep 17 00:00:00 2001 From: Andreas E Date: Sun, 21 Jun 2020 18:50:55 +0200 Subject: [PATCH 2/7] Fix string for preference key --- .../java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 d93fd0c8e7..18bfd922a9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt @@ -55,7 +55,7 @@ object PreferenceKeys { const val readWithTapping = "reader_tap" - const val readWithTappingInverted = "reader_volume_keys_inverted" + const val readWithTappingInverted = "reader_tapping_inverted" const val readWithLongTap = "reader_long_tap" From 0ea0eba4f0562f0008214a28a88e3413d1faff33 Mon Sep 17 00:00:00 2001 From: Andreas E Date: Tue, 23 Jun 2020 10:58:56 +0200 Subject: [PATCH 3/7] Invert tapping for Webtoon and Vertical --- .../eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt | 2 +- .../tachiyomi/ui/reader/viewer/pager/PagerViewer.kt | 9 +++++++-- .../tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt | 8 ++++++-- 3 files changed, 14 insertions(+), 5 deletions(-) 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 4221cf6d58..3410fc46f2 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 @@ -32,7 +32,7 @@ abstract class ViewerConfig(preferences: PreferencesHelper) { .register({ tappingEnabled = it }) preferences.readWithTappingInverted() - .register({ tappingInverted = it }) + .register({ tappingInverted = it }) preferences.readWithLongTap() .register({ longTapEnabled = it }) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt index 04ebc1a453..3452cab061 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt @@ -81,17 +81,22 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { }) pager.tapListener = { event -> val tappingInverted = config.tappingInverted + if (this is VerticalPagerViewer) { val positionY = event.y + val topSideTap = positionY < pager.height * 0.33f && config.tappingEnabled + val bottomSideTap = positionY > pager.height * 0.66f && config.tappingEnabled + when { - positionY < pager.height * 0.33f && config.tappingEnabled -> moveLeft() - positionY > pager.height * 0.66f && config.tappingEnabled -> moveRight() + topSideTap && !tappingInverted || bottomSideTap && tappingInverted -> moveLeft() + bottomSideTap && !tappingInverted || topSideTap && tappingInverted -> moveRight() else -> activity.toggleMenu() } } else { val positionX = event.x val leftSideTap = positionX < pager.width * 0.33f && config.tappingEnabled val rightSideTap = positionX > pager.width * 0.66f && config.tappingEnabled + when { leftSideTap && !tappingInverted || rightSideTap && tappingInverted -> moveLeft() rightSideTap && !tappingInverted || leftSideTap && tappingInverted -> moveRight() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt index 802f969e0f..5a552ab526 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt @@ -94,9 +94,13 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr }) recycler.tapListener = { event -> val positionY = event.rawY + val tappingInverted = config.tappingInverted + val topSideTap = positionY < recycler.height * 0.33f && config.tappingEnabled + val bottomSideTap = positionY > recycler.height * 0.66f && config.tappingEnabled + when { - positionY < recycler.height * 0.33f && config.tappingEnabled -> scrollUp() - positionY > recycler.height * 0.66f && config.tappingEnabled -> scrollDown() + topSideTap && !tappingInverted || bottomSideTap && tappingInverted -> scrollUp() + bottomSideTap && !tappingInverted || topSideTap && tappingInverted -> scrollDown() else -> activity.toggleMenu() } } From c8a6a2653f17eb2b509bee8dcf42486c93a011f9 Mon Sep 17 00:00:00 2001 From: Andreas E Date: Tue, 23 Jun 2020 12:09:10 +0200 Subject: [PATCH 4/7] Use enum instead of boolean --- .../data/preference/PreferenceValues.kt | 7 +++++++ .../data/preference/PreferencesHelper.kt | 2 +- .../ui/reader/viewer/ViewerConfig.kt | 3 ++- .../ui/reader/viewer/pager/PagerViewer.kt | 5 ++++- .../ui/reader/viewer/webtoon/WebtoonViewer.kt | 9 ++++++--- .../ui/setting/SettingsReaderController.kt | 19 +++++++++++++++++-- app/src/main/res/values/strings.xml | 4 ++++ 7 files changed, 41 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt index 312544684d..e60f7f508a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt @@ -30,4 +30,11 @@ object PreferenceValues { COMFORTABLE_GRID, LIST, } + + enum class TappingInvertMode { + NONE, + HORIZONTAL, + VERTICAL, + BOTH + } } 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 df32cb70e7..8476c01f28 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -121,7 +121,7 @@ class PreferencesHelper(val context: Context) { fun readWithTapping() = flowPrefs.getBoolean(Keys.readWithTapping, true) - fun readWithTappingInverted() = flowPrefs.getBoolean(Keys.readWithTappingInverted, false) + fun readWithTappingInverted() = flowPrefs.getEnum(Keys.readWithTappingInverted, Values.TappingInvertMode.NONE) fun readWithLongTap() = flowPrefs.getBoolean(Keys.readWithLongTap, true) 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 3410fc46f2..78590a1c5f 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 @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.ui.reader.viewer import com.tfcporciuncula.flow.Preference +import eu.kanade.tachiyomi.data.preference.PreferenceValues.TappingInvertMode import eu.kanade.tachiyomi.data.preference.PreferencesHelper import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -20,7 +21,7 @@ abstract class ViewerConfig(preferences: PreferencesHelper) { var tappingEnabled = true var longTapEnabled = true - var tappingInverted = false + var tappingInverted = TappingInvertMode.NONE var doubleTapAnimDuration = 500 var volumeKeysEnabled = false var volumeKeysInverted = false diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt index 3452cab061..ef5c029d10 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt @@ -7,6 +7,7 @@ import android.view.View import android.view.ViewGroup.LayoutParams import androidx.viewpager.widget.ViewPager import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.data.preference.PreferenceValues.TappingInvertMode import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition import eu.kanade.tachiyomi.ui.reader.model.ReaderPage @@ -80,10 +81,11 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { } }) pager.tapListener = { event -> - val tappingInverted = config.tappingInverted + val invertMode = config.tappingInverted if (this is VerticalPagerViewer) { val positionY = event.y + val tappingInverted = invertMode == TappingInvertMode.VERTICAL || invertMode == TappingInvertMode.BOTH val topSideTap = positionY < pager.height * 0.33f && config.tappingEnabled val bottomSideTap = positionY > pager.height * 0.66f && config.tappingEnabled @@ -94,6 +96,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { } } else { val positionX = event.x + val tappingInverted = invertMode == TappingInvertMode.HORIZONTAL || invertMode == TappingInvertMode.BOTH val leftSideTap = positionX < pager.width * 0.33f && config.tappingEnabled val rightSideTap = positionX > pager.width * 0.66f && config.tappingEnabled diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt index 5a552ab526..8640859e7c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt @@ -7,6 +7,7 @@ import android.view.ViewGroup import android.view.ViewGroup.LayoutParams.MATCH_PARENT import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.WebtoonLayoutManager +import eu.kanade.tachiyomi.data.preference.PreferenceValues.TappingInvertMode import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition import eu.kanade.tachiyomi.ui.reader.model.ReaderPage @@ -14,10 +15,10 @@ import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer import eu.kanade.tachiyomi.util.view.gone import eu.kanade.tachiyomi.util.view.visible -import kotlin.math.max -import kotlin.math.min import rx.subscriptions.CompositeSubscription import timber.log.Timber +import kotlin.math.max +import kotlin.math.min /** * Implementation of a [BaseViewer] to display pages with a [RecyclerView]. @@ -94,10 +95,12 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr }) recycler.tapListener = { event -> val positionY = event.rawY - val tappingInverted = config.tappingInverted + val invertMode = config.tappingInverted val topSideTap = positionY < recycler.height * 0.33f && config.tappingEnabled val bottomSideTap = positionY > recycler.height * 0.66f && config.tappingEnabled + val tappingInverted = invertMode == TappingInvertMode.VERTICAL || invertMode == TappingInvertMode.BOTH + when { topSideTap && !tappingInverted || bottomSideTap && tappingInverted -> scrollUp() bottomSideTap && !tappingInverted || topSideTap && tappingInverted -> scrollDown() 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 f72923e07a..dbf27ae7f0 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 @@ -4,9 +4,11 @@ import android.os.Build import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys +import eu.kanade.tachiyomi.data.preference.PreferenceValues.TappingInvertMode import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.intListPreference +import eu.kanade.tachiyomi.util.preference.listPreference import eu.kanade.tachiyomi.util.preference.preferenceCategory import eu.kanade.tachiyomi.util.preference.summaryRes import eu.kanade.tachiyomi.util.preference.switchPreference @@ -190,10 +192,23 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.pref_read_with_tapping defaultValue = true } - switchPreference { + listPreference { key = Keys.readWithTappingInverted titleRes = R.string.pref_read_with_tapping_inverted - defaultValue = false + entriesRes = arrayOf( + R.string.tapping_inverted_none, + R.string.tapping_inverted_horizontal, + R.string.tapping_inverted_vertical, + R.string.tapping_inverted_both + ) + entryValues = arrayOf( + TappingInvertMode.NONE.name, + TappingInvertMode.HORIZONTAL.name, + TappingInvertMode.VERTICAL.name, + TappingInvertMode.BOTH.name + ) + defaultValue = TappingInvertMode.NONE.name + summary = "%s" }.apply { dependency = Keys.readWithTapping } switchPreference { key = Keys.readWithLongTap diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 19173a3804..6999c29665 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -665,5 +665,9 @@ Progress Complete Invert tapping + None + Horizontal + Vertical + Both From 2eaf083eeed0f8acda7684f42c4cb215a8eeadca Mon Sep 17 00:00:00 2001 From: Andreas E Date: Wed, 24 Jun 2020 09:50:23 +0200 Subject: [PATCH 5/7] Add option to reader sheet --- .../ui/reader/ReaderSettingsSheet.kt | 22 +++++++++ .../ui/reader/viewer/webtoon/WebtoonViewer.kt | 4 +- .../main/res/layout/reader_settings_sheet.xml | 48 ++++++++++++++++++- app/src/main/res/values/arrays.xml | 7 +++ 4 files changed, 77 insertions(+), 4 deletions(-) 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 19e9e6c572..017cc0f5e1 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 @@ -28,6 +28,7 @@ import kotlinx.android.synthetic.main.reader_settings_sheet.pager_prefs_group import kotlinx.android.synthetic.main.reader_settings_sheet.rotation_mode import kotlinx.android.synthetic.main.reader_settings_sheet.scale_type import kotlinx.android.synthetic.main.reader_settings_sheet.show_page_number +import kotlinx.android.synthetic.main.reader_settings_sheet.tapping_inverted import kotlinx.android.synthetic.main.reader_settings_sheet.true_color import kotlinx.android.synthetic.main.reader_settings_sheet.viewer import kotlinx.android.synthetic.main.reader_settings_sheet.webtoon_prefs_group @@ -57,6 +58,7 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia super.onCreate(savedInstanceState) initGeneralPreferences() + initNavigationPreferences() when (activity.viewer) { is PagerViewer -> initPagerPreferences() @@ -119,6 +121,13 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia webtoon_side_padding.bindToIntPreference(preferences.webtoonSidePadding(), R.array.webtoon_side_padding_values) } + /** + * Init the preferences for navigation. + */ + private fun initNavigationPreferences() { + tapping_inverted.bindToPreference(preferences.readWithTappingInverted()) + } + /** * Binds a checkbox or switch view with a boolean preference. */ @@ -137,6 +146,19 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia setSelection(pref.get() - offset, false) } + /** + * Binds a spinner to an enum preference. + */ + private inline fun > Spinner.bindToPreference(pref: Preference) { + val enumConstants = T::class.java.enumConstants + + onItemSelectedListener = IgnoreFirstSpinnerListener { position -> + enumConstants?.get(position)?.let { pref.set(it) } + } + + enumConstants?.indexOf(pref.get())?.let { setSelection(it, false) } + } + /** * Binds a spinner to an int preference. The position of the spinner item must * correlate with the [intValues] resource item (in arrays.xml), which is a diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt index 8640859e7c..b42d6594aa 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt @@ -15,10 +15,10 @@ import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer import eu.kanade.tachiyomi.util.view.gone import eu.kanade.tachiyomi.util.view.visible -import rx.subscriptions.CompositeSubscription -import timber.log.Timber import kotlin.math.max import kotlin.math.min +import rx.subscriptions.CompositeSubscription +import timber.log.Timber /** * Implementation of a [BaseViewer] to display pages with a [RecyclerView]. diff --git a/app/src/main/res/layout/reader_settings_sheet.xml b/app/src/main/res/layout/reader_settings_sheet.xml index d7170ff69a..0a64fadb80 100644 --- a/app/src/main/res/layout/reader_settings_sheet.xml +++ b/app/src/main/res/layout/reader_settings_sheet.xml @@ -188,7 +188,7 @@ android:textColor="?attr/colorAccent" android:textStyle="bold" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/end_general_preferences" /> + app:layout_constraintTop_toBottomOf="@id/end_navigation_preferences" /> + + + + + + + + + + + app:layout_constraintTop_toBottomOf="@id/end_navigation_preferences" /> @string/filter_mode_multiply @string/filter_mode_screen + + + @string/tapping_inverted_none + @string/tapping_inverted_horizontal + @string/tapping_inverted_vertical + @string/tapping_inverted_both + From 1681437206937c652cd453ac82ead103d057e94f Mon Sep 17 00:00:00 2001 From: Andreas E Date: Wed, 24 Jun 2020 15:48:08 +0200 Subject: [PATCH 6/7] Hide from reader sheet if tapping disabled and remove hard coded string --- .../eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt | 6 ++++++ app/src/main/res/layout/reader_settings_sheet.xml | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) 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 017cc0f5e1..87d50f85e9 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 @@ -12,6 +12,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer +import eu.kanade.tachiyomi.util.view.gone import eu.kanade.tachiyomi.util.view.invisible import eu.kanade.tachiyomi.util.view.visible import eu.kanade.tachiyomi.widget.IgnoreFirstSpinnerListener @@ -23,6 +24,7 @@ import kotlinx.android.synthetic.main.reader_settings_sheet.cutout_short import kotlinx.android.synthetic.main.reader_settings_sheet.fullscreen import kotlinx.android.synthetic.main.reader_settings_sheet.keepscreen import kotlinx.android.synthetic.main.reader_settings_sheet.long_tap +import kotlinx.android.synthetic.main.reader_settings_sheet.navigation_prefs_group import kotlinx.android.synthetic.main.reader_settings_sheet.page_transitions import kotlinx.android.synthetic.main.reader_settings_sheet.pager_prefs_group import kotlinx.android.synthetic.main.reader_settings_sheet.rotation_mode @@ -125,6 +127,10 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia * Init the preferences for navigation. */ private fun initNavigationPreferences() { + if (!preferences.readWithTapping().get()) { + navigation_prefs_group.gone() + } + tapping_inverted.bindToPreference(preferences.readWithTappingInverted()) } diff --git a/app/src/main/res/layout/reader_settings_sheet.xml b/app/src/main/res/layout/reader_settings_sheet.xml index 0a64fadb80..66a7938525 100644 --- a/app/src/main/res/layout/reader_settings_sheet.xml +++ b/app/src/main/res/layout/reader_settings_sheet.xml @@ -257,7 +257,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="Navigation" + android:text="@string/pref_reader_navigation" android:textColor="?attr/colorAccent" android:textStyle="bold" app:layout_constraintStart_toStartOf="parent" @@ -354,4 +354,11 @@ android:orientation="vertical" app:layout_constraintGuide_percent="0.5" /> + + From e6ace844b66c014d9b5893d19391d6794c7be110 Mon Sep 17 00:00:00 2001 From: Andreas E Date: Thu, 25 Jun 2020 18:01:45 +0200 Subject: [PATCH 7/7] Hide option if tapping disabled --- .../kanade/tachiyomi/ui/setting/SettingsReaderController.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 dbf27ae7f0..86d561712c 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 @@ -5,6 +5,7 @@ import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys import eu.kanade.tachiyomi.data.preference.PreferenceValues.TappingInvertMode +import eu.kanade.tachiyomi.data.preference.asImmediateFlow import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.intListPreference @@ -14,6 +15,7 @@ import eu.kanade.tachiyomi.util.preference.summaryRes import eu.kanade.tachiyomi.util.preference.switchPreference import eu.kanade.tachiyomi.util.preference.titleRes import eu.kanade.tachiyomi.util.system.hasDisplayCutout +import kotlinx.coroutines.flow.launchIn class SettingsReaderController : SettingsController() { @@ -209,7 +211,9 @@ class SettingsReaderController : SettingsController() { ) defaultValue = TappingInvertMode.NONE.name summary = "%s" - }.apply { dependency = Keys.readWithTapping } + + preferences.readWithTapping().asImmediateFlow { isVisible = it }.launchIn(scope) + } switchPreference { key = Keys.readWithLongTap titleRes = R.string.pref_read_with_long_tap