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 91a38b9aa..36d058e52 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt @@ -53,6 +53,8 @@ object PreferenceKeys { const val readWithTapping = "reader_tap" + const val readWithTappingInverted = "reader_tapping_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/PreferenceValues.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt index 312544684..e60f7f508 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 de4cbc8e3..68d9bcb23 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -119,6 +119,8 @@ class PreferencesHelper(val context: Context) { fun readWithTapping() = flowPrefs.getBoolean(Keys.readWithTapping, true) + fun readWithTappingInverted() = flowPrefs.getEnum(Keys.readWithTappingInverted, Values.TappingInvertMode.NONE) + 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/pager/PagerViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt index 4171db4c7..0bb9f1890 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,11 +81,30 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { } }) pager.tapListener = { event -> - val positionX = event.x - when { - positionX < pager.width * 0.33f && config.tappingEnabled -> moveLeft() - positionX > pager.width * 0.66f && config.tappingEnabled -> moveRight() - else -> activity.toggleMenu() + 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 + + when { + topSideTap && !tappingInverted || bottomSideTap && tappingInverted -> moveLeft() + bottomSideTap && !tappingInverted || topSideTap && tappingInverted -> moveRight() + else -> activity.toggleMenu() + } + } 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 + + when { + leftSideTap && !tappingInverted || rightSideTap && tappingInverted -> moveLeft() + rightSideTap && !tappingInverted || leftSideTap && tappingInverted -> moveRight() + else -> activity.toggleMenu() + } } } pager.longTapListener = f@{ 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 63fba167f..27e005a6c 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 diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt index 62bea3f0a..5e7d859ea 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt @@ -250,7 +250,7 @@ class SettingsGeneralController : SettingsController() { summary = "%s" } } - // --> EXH + // --> EXH preferenceCategory { titleRes = R.string.eh_settings_category 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 a65e337c8..a036e55d3 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,6 +4,7 @@ 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.data.preference.asImmediateFlow import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.entriesRes @@ -307,6 +308,26 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.pref_read_with_tapping defaultValue = true } + listPreference { + key = Keys.readWithTappingInverted + titleRes = R.string.pref_read_with_tapping_inverted + 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" + + preferences.readWithTapping().asImmediateFlow { isVisible = it }.launchIn(scope) + } switchPreference { key = Keys.readWithLongTap titleRes = R.string.pref_read_with_long_tap diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index df09ca0f1..eacccb2d1 100755 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -79,4 +79,11 @@ @string/filter_mode_multiply @string/filter_mode_screen + + + @string/tapping_inverted_none + @string/tapping_inverted_horizontal + @string/tapping_inverted_vertical + @string/tapping_inverted_both + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 24ecc58a0..5b3bca644 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -676,5 +676,10 @@ Backup and restore Progress Complete + Invert tapping + None + Horizontal + Vertical + Both