From 5669279c642aa58b6695f21463cacb49343b614e Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Sun, 16 Feb 2025 14:38:41 +0100 Subject: [PATCH] =?UTF-8?q?add=20<,>,V,=CE=9B=20gestures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jrpie/android/launcher/actions/Gesture.kt | 50 ++++++++++++++++ .../launcher/ui/TouchGestureDetector.kt | 58 ++++++++++++++++--- app/src/main/res/values/defaults.xml | 2 + app/src/main/res/values/strings.xml | 18 ++++++ 4 files changed, 120 insertions(+), 8 deletions(-) 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 34e053e..a4f25b4 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 @@ -1,6 +1,7 @@ package de.jrpie.android.launcher.actions import android.content.Context +import android.util.Log import de.jrpie.android.launcher.R import de.jrpie.android.launcher.preferences.LauncherPreferences @@ -169,6 +170,54 @@ enum class Gesture( R.array.default_double_right, R.anim.left_right ), + SWIPE_LARGER( + "action.larger", + R.string.settings_gesture_swipe_larger, + R.string.settings_gesture_description_swipe_larger, + R.array.no_default + ), + SWIPE_LARGER_REVERSE( + "action.larger_reverse", + R.string.settings_gesture_swipe_larger_reverse, + R.string.settings_gesture_description_swipe_larger_reverse, + R.array.no_default + ), + SWIPE_SMALLER( + "action.smaller", + R.string.settings_gesture_swipe_smaller, + R.string.settings_gesture_description_swipe_smaller, + R.array.no_default + ), + SWIPE_SMALLER_REVERSE( + "action.smaller_reverse", + R.string.settings_gesture_swipe_smaller_reverse, + R.string.settings_gesture_description_swipe_smaller_reverse, + R.array.no_default + ), + SWIPE_LAMBDA( + "action.lambda", + R.string.settings_gesture_swipe_lambda, + R.string.settings_gesture_description_swipe_lambda, + R.array.no_default + ), + SWIPE_LAMBDA_REVERSE( + "action.lambda_reverse", + R.string.settings_gesture_swipe_lambda_reverse, + R.string.settings_gesture_description_swipe_lambda_reverse, + R.array.no_default + ), + SWIPE_V( + "action.v", + R.string.settings_gesture_swipe_v, + R.string.settings_gesture_description_swipe_v, + R.array.no_default + ), + SWIPE_V_REVERSE( + "action.v_reverse", + R.string.settings_gesture_swipe_v_reverse, + R.string.settings_gesture_description_swipe_v_reverse, + R.array.no_default + ), BACK( "action.back", R.string.settings_gesture_back, @@ -267,6 +316,7 @@ enum class Gesture( } operator fun invoke(context: Context) { + Log.i("Launcher", "Detected gesture: $this") val action = Action.forGesture(this) Action.launch(action, context, this.animationIn, this.animationOut) } 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 6a462e9..df633af 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 @@ -25,6 +25,8 @@ class TouchGestureDetector( private val TAP_TIMEOUT: Int private val DOUBLE_TAP_TIMEOUT: Int + private val MIN_TRIANGLE_HEIGHT = 250 + data class Vector(val x: Float, val y: Float) { fun absSquared(): Float { @@ -94,19 +96,24 @@ class TouchGestureDetector( } // add new pointers - (0.. { + if(startEndMax.x + MIN_TRIANGLE_HEIGHT < mainPointerPath.max.x) { + gesture = Gesture.SWIPE_LARGER + } else if (startEndMin.x - MIN_TRIANGLE_HEIGHT > mainPointerPath.min.x) { + gesture = Gesture.SWIPE_SMALLER + } + } + Gesture.SWIPE_UP -> { + if(startEndMax.x + MIN_TRIANGLE_HEIGHT < mainPointerPath.max.x) { + gesture = Gesture.SWIPE_LARGER_REVERSE + } else if (startEndMin.x - MIN_TRIANGLE_HEIGHT > mainPointerPath.min.x) { + gesture = Gesture.SWIPE_SMALLER_REVERSE + } + } + Gesture.SWIPE_RIGHT -> { + if(startEndMax.y + MIN_TRIANGLE_HEIGHT < mainPointerPath.max.y) { + gesture = Gesture.SWIPE_V + } else if (startEndMin.y - MIN_TRIANGLE_HEIGHT > mainPointerPath.min.y) { + gesture = Gesture.SWIPE_LAMBDA + } + } + Gesture.SWIPE_LEFT -> { + if(startEndMax.y + MIN_TRIANGLE_HEIGHT < mainPointerPath.max.y) { + gesture = Gesture.SWIPE_V_REVERSE + } else if (startEndMin.y - MIN_TRIANGLE_HEIGHT > mainPointerPath.min.y) { + gesture = Gesture.SWIPE_LAMBDA_REVERSE + } + } + else -> { } + } + if (edgeActions) { if (mainPointerPath.max.x < edgeWidth * width) { gesture = gesture?.getEdgeVariant(Gesture.Edge.LEFT) diff --git a/app/src/main/res/values/defaults.xml b/app/src/main/res/values/defaults.xml index 276651d..cee201e 100644 --- a/app/src/main/res/values/defaults.xml +++ b/app/src/main/res/values/defaults.xml @@ -2,6 +2,8 @@ + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 97d7384..b61c1b0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -59,6 +59,24 @@ Swipe down at the left edge of the screen Down (Right Edge) Swipe down at the right edge of the screen + + ]]> + Top left -> mid right -> bottom left + (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) + Top right -> bottom mid -> top left + Λ + Bottom left -> top mid -> bottom right + Λ (reverse) + Bottom right -> top mid -> bottom left + Volume Up Press the volume up button Volume Down