From 3bac2c2b91023896dbfa096b03951b77dc2217ae Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Wed, 7 Feb 2018 14:44:05 -0800 Subject: [PATCH] Adding callback to notify LauncherCallbacks when quickstep starts Bug: 73081875 Change-Id: Ieccba6ecb16553ed5211f277b49e9f2ed2d7c745 --- .../quickstep/WindowTransformSwipeHandler.java | 16 +++++++++++++++- src/com/android/launcher3/Launcher.java | 6 ++++++ src/com/android/launcher3/LauncherCallbacks.java | 8 ++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java index 028af9aad7..1151d30ecb 100644 --- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java +++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java @@ -154,6 +154,8 @@ public class WindowTransformSwipeHandler extends BaseSwipeInteractionHandler { this::initializeLauncherAnimationController); mStateCallback.addCallback(STATE_LAUNCHER_PRESENT | STATE_LAUNCHER_DRAWN, this::launcherFrameDrawn); + mStateCallback.addCallback(STATE_LAUNCHER_PRESENT | STATE_GESTURE_STARTED, + this::notifyGestureStarted); mStateCallback.addCallback(STATE_SCALED_CONTROLLER_APP | STATE_APP_CONTROLLER_RECEIVED, this::resumeLastTask); @@ -220,6 +222,7 @@ public class WindowTransformSwipeHandler extends BaseSwipeInteractionHandler { mStateCallback.setState(oldState); mLauncherLayoutListener.setHandler(null); } + mWasLauncherAlreadyVisible = alreadyOnHome; mLauncher = launcher; LauncherState startState = mLauncher.getStateManager().getState(); @@ -229,7 +232,6 @@ public class WindowTransformSwipeHandler extends BaseSwipeInteractionHandler { mLauncher.getStateManager().setRestState(startState); AbstractFloatingView.closeAllOpenViews(launcher, alreadyOnHome); - mWasLauncherAlreadyVisible = alreadyOnHome; mRecentsView = mLauncher.getOverviewPanel(); mLauncherLayoutListener = new LauncherLayoutListener(mLauncher); @@ -429,10 +431,22 @@ public class WindowTransformSwipeHandler extends BaseSwipeInteractionHandler { } public void onGestureStarted() { + if (mLauncher != null) { + notifyGestureStarted(); + } + setStateOnUiThread(STATE_GESTURE_STARTED); mGestureStarted = true; } + /** + * Notifies the launcher that the swipe gesture has started. This can be called multiple times + * on both background and UI threads + */ + private void notifyGestureStarted() { + mLauncher.onQuickstepGestureStarted(mWasLauncherAlreadyVisible); + } + @WorkerThread public void onGestureEnded(float endVelocity) { Resources res = mContext.getResources(); diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 5da4944d4e..5a1143fc08 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -1193,6 +1193,12 @@ public class Launcher extends BaseActivity } } + public void onQuickstepGestureStarted(boolean isVisible) { + if (mLauncherCallbacks != null) { + mLauncherCallbacks.onQuickstepGestureStarted(isVisible); + } + } + public AllAppsTransitionController getAllAppsController() { return mAllAppsController; } diff --git a/src/com/android/launcher3/LauncherCallbacks.java b/src/com/android/launcher3/LauncherCallbacks.java index 914d9eb319..ed7bf3de0b 100644 --- a/src/com/android/launcher3/LauncherCallbacks.java +++ b/src/com/android/launcher3/LauncherCallbacks.java @@ -71,4 +71,12 @@ public interface LauncherCallbacks { * Extensions points for adding / replacing some other aspects of the Launcher experience. */ boolean hasSettings(); + + /** + * Called when launcher integrated quickstep and some quickstep gesture started. It can be + * called multiple times for a single gesture an UI or background thread. + * + * @param isVisible if Launcher was visible when the gesture started. + */ + void onQuickstepGestureStarted(boolean isVisible); }