From 86528f4e275e41f45bc7a273a579d6bcd730a8b0 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Tue, 18 Feb 2025 19:04:08 +0100 Subject: [PATCH] add tap-swipe combo gestures (see #110) --- README.md | 1 + .../jrpie/android/launcher/actions/Gesture.kt | 39 +++++++++++++++++++ .../launcher/ui/TouchGestureDetector.kt | 4 ++ app/src/main/res/values/strings.xml | 16 ++++++-- .../android/de-DE/full_description.txt | 2 +- .../android/en-US/full_description.txt | 2 +- .../android/pt-BR/full_description.txt | 2 +- 7 files changed, 59 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 016b362..ce1d0d0 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ The following gestures are available: - swipe up / down / left / right, - swipe with two fingers, - swipe on the left / right resp. top / bottom edge, + - tap, then swipe up / down / left / right, - draw < / > / V / Λ - click on date / time, - double click, diff --git a/app/src/main/java/de/jrpie/android/launcher/actions/Gesture.kt b/app/src/main/java/de/jrpie/android/launcher/actions/Gesture.kt index a4f25b4..110e4f8 100644 --- a/app/src/main/java/de/jrpie/android/launcher/actions/Gesture.kt +++ b/app/src/main/java/de/jrpie/android/launcher/actions/Gesture.kt @@ -79,6 +79,13 @@ enum class Gesture( R.array.default_up_right, R.anim.bottom_up ), + TAP_AND_SWIPE_UP( + "action.tap_up", + R.string.settings_gesture_tap_up, + R.string.settings_gesture_description_tap_up, + R.array.default_up, + R.anim.bottom_up + ), SWIPE_UP_DOUBLE( "action.double_up", R.string.settings_gesture_double_up, @@ -107,6 +114,13 @@ enum class Gesture( R.array.default_down_right, R.anim.top_down ), + TAP_AND_SWIPE_DOWN( + "action.tap_down", + R.string.settings_gesture_tap_down, + R.string.settings_gesture_description_tap_down, + R.array.default_down, + R.anim.bottom_up + ), SWIPE_DOWN_DOUBLE( "action.double_down", R.string.settings_gesture_double_down, @@ -135,6 +149,13 @@ enum class Gesture( R.array.default_messengers, R.anim.right_left ), + TAP_AND_SWIPE_LEFT( + "action.tap_left", + R.string.settings_gesture_tap_left, + R.string.settings_gesture_description_tap_left, + R.array.default_messengers, + R.anim.right_left + ), SWIPE_LEFT_DOUBLE( "action.double_left", R.string.settings_gesture_double_left, @@ -163,6 +184,13 @@ enum class Gesture( R.array.default_right_bottom, R.anim.left_right ), + TAP_AND_SWIPE_RIGHT( + "action.tap_right", + R.string.settings_gesture_tap_right, + R.string.settings_gesture_description_tap_right, + R.array.default_right, + R.anim.left_right + ), SWIPE_RIGHT_DOUBLE( "action.double_right", R.string.settings_gesture_double_right, @@ -279,6 +307,17 @@ enum class Gesture( } } + fun getTapComboVariant(): Gesture { + return when (this) { + SWIPE_UP -> TAP_AND_SWIPE_UP + SWIPE_DOWN -> TAP_AND_SWIPE_DOWN + SWIPE_LEFT -> TAP_AND_SWIPE_LEFT + SWIPE_RIGHT -> TAP_AND_SWIPE_RIGHT + else -> this + } + + } + fun isDoubleVariant(): Boolean { return when (this) { SWIPE_UP_DOUBLE, diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt b/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt index 0ddbfd1..00629a5 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt @@ -240,6 +240,10 @@ class TouchGestureDetector( gesture = gesture?.getEdgeVariant(Gesture.Edge.BOTTOM) } } + + if (timeStart - lastTappedTime < 2 * DOUBLE_TAP_TIMEOUT) { + gesture = gesture?.getTapComboVariant() + } gesture?.invoke(context) } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5e2ed75..687aed1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -29,18 +29,26 @@ Back button / back gesture Up Swipe up + Tap + Up + Tap and swipe up Double Up Swipe up with two fingers Down Swipe down + Tap + Down + Tap and swipe down Double Down Swipe down with two fingers Left Swipe left + Tap + Left + Tap and swipe left Double Left Swipe left with two fingers Right Swipe right + Tap + Right + Tap and swipe right Double Right Swipe right with two fingers Right (Top) @@ -62,19 +70,19 @@ ]]> Top left -> mid right -> bottom left - (reverse)]]> + (Reverse)]]> Bottom left -> mid right -> top left Top right -> mid left -> bottom right - + Bottom right -> mid left -> top right V Top left -> bottom mid -> top right - V (reverse) + V (Reverse) Top right -> bottom mid -> top left Λ Bottom left -> top mid -> bottom right - Λ (reverse) + Λ (Reverse) Bottom right -> top mid -> bottom left Volume Up diff --git a/fastlane/metadata/android/de-DE/full_description.txt b/fastlane/metadata/android/de-DE/full_description.txt index 5fe03b4..2a4c703 100644 --- a/fastlane/metadata/android/de-DE/full_description.txt +++ b/fastlane/metadata/android/de-DE/full_description.txt @@ -11,7 +11,7 @@ Es handelt sich um einen Fork von