From 68a4b998a40e8f4717e6b509ca98ddbe7bd0754e Mon Sep 17 00:00:00 2001 From: Thecrazyskull Date: Sat, 2 Dec 2017 16:37:04 +0100 Subject: Trebuchet expand statusbar on swipe down Change-Id: I5e75b7e1c6806dae9ac2a000e377873319a5f787 Signed-off-by: Joey Rizzoli --- AndroidManifest.xml | 1 + res/values/lineageos_strings.xml | 2 ++ res/xml/launcher_preferences.xml | 6 ++++ .../android/launcher3/PinchToOverviewListener.java | 38 +++++++++++++++++++++- 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b41a39d80..e9000aee3 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -51,6 +51,7 @@ + Google Play + + Swipe down to show notifications diff --git a/res/xml/launcher_preferences.xml b/res/xml/launcher_preferences.xml index 28a35b829..3be5d4792 100644 --- a/res/xml/launcher_preferences.xml +++ b/res/xml/launcher_preferences.xml @@ -53,4 +53,10 @@ android:defaultValue="" android:persistent="false" /> + + diff --git a/src/com/android/launcher3/PinchToOverviewListener.java b/src/com/android/launcher3/PinchToOverviewListener.java index 42515d1fc..e8ea7d764 100644 --- a/src/com/android/launcher3/PinchToOverviewListener.java +++ b/src/com/android/launcher3/PinchToOverviewListener.java @@ -18,11 +18,17 @@ package com.android.launcher3; import android.animation.TimeInterpolator; import android.content.Context; +import android.content.SharedPreferences; +import android.util.Log; +import android.view.GestureDetector; import android.view.MotionEvent; import android.view.ScaleGestureDetector; import com.android.launcher3.util.TouchController; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + /** * Detects pinches and animates the Workspace to/from overview mode. * @@ -42,6 +48,8 @@ public class PinchToOverviewListener extends ScaleGestureDetector.SimpleOnScaleG */ private static final float FLING_VELOCITY = 0.003f; + private static final String PREF_STATUSBAR_EXPAND = "pref_expand_statusbar"; + private ScaleGestureDetector mPinchDetector; private Launcher mLauncher; private Workspace mWorkspace = null; @@ -56,13 +64,28 @@ public class PinchToOverviewListener extends ScaleGestureDetector.SimpleOnScaleG private PinchThresholdManager mThresholdManager; private PinchAnimationManager mAnimationManager; + private GestureDetector mGestureDetector; + public PinchToOverviewListener(Launcher launcher) { + SharedPreferences prefs = Utilities.getPrefs(launcher.getApplicationContext()); + mLauncher = launcher; - mPinchDetector = new ScaleGestureDetector((Context) mLauncher, this); + mPinchDetector = new ScaleGestureDetector(launcher, this); + mGestureDetector = new GestureDetector(launcher, + new GestureDetector.SimpleOnGestureListener() { + @Override + public boolean onFling(MotionEvent e1, MotionEvent e2, float vX, float vy) { + if (prefs.getBoolean(PREF_STATUSBAR_EXPAND, true) && e1.getY() < e2.getY()) { + expandStatusBar(launcher); + } + return true; + } + }); } public boolean onControllerInterceptTouchEvent(MotionEvent ev) { mPinchDetector.onTouchEvent(ev); + mGestureDetector.onTouchEvent(ev); return mPinchStarted; } @@ -212,4 +235,17 @@ public class PinchToOverviewListener extends ScaleGestureDetector.SimpleOnScaleG mPreviousTimeMillis = System.currentTimeMillis(); return false; } + + private void expandStatusBar(Context context) { + try { + Object service = context.getSystemService("statusbar"); + Class manager = Class.forName("android.app.StatusBarManager"); + Method expand = manager.getMethod("expandNotificationsPanel"); + expand.invoke(service); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | + InvocationTargetException e) { + Log.w("Reflection", + "Can't to invoke android.app.StatusBarManager$expandNotificationsPanel"); + } + } } \ No newline at end of file -- cgit v1.2.3