diff options
author | Winson Chung <winsonc@google.com> | 2015-04-29 11:03:24 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2015-05-04 14:45:54 -0700 |
commit | cd99cd3ed6a84b9dcd8f4c60b0941760f85a64ce (patch) | |
tree | 043eabaa600445b38ef89a2dd6de9de3a4f26955 /src | |
parent | d47d90224a6f723ea7b30a5767c9faccc02e63bd (diff) | |
download | android_packages_apps_Trebuchet-cd99cd3ed6a84b9dcd8f4c60b0941760f85a64ce.tar.gz android_packages_apps_Trebuchet-cd99cd3ed6a84b9dcd8f4c60b0941760f85a64ce.tar.bz2 android_packages_apps_Trebuchet-cd99cd3ed6a84b9dcd8f4c60b0941760f85a64ce.zip |
Launcher-side changes to support prediction bar.
Change-Id: Ib9974ad8888ad87137c774f9f531fae9d56b899a
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher3/AppsContainerView.java | 15 | ||||
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 79 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherCallbacks.java | 1 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherExtension.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherStateTransitionAnimation.java | 8 | ||||
-rw-r--r-- | src/com/android/launcher3/SearchDropTargetBar.java | 6 | ||||
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 9 |
7 files changed, 73 insertions, 49 deletions
diff --git a/src/com/android/launcher3/AppsContainerView.java b/src/com/android/launcher3/AppsContainerView.java index b24714505..f7adaf81d 100644 --- a/src/com/android/launcher3/AppsContainerView.java +++ b/src/com/android/launcher3/AppsContainerView.java @@ -269,19 +269,8 @@ public class AppsContainerView extends FrameLayout implements DragSource, Insett // Start the drag mLauncher.getWorkspace().beginDragShared(v, mLastTouchPos, this, false); - - // We delay entering spring-loaded mode slightly to make sure the UI - // thready is free of any work. - postDelayed(new Runnable() { - @Override - public void run() { - // We don't enter spring-loaded mode if the drag has been cancelled - if (mLauncher.getDragController().isDragging()) { - // Go into spring loaded mode (must happen before we startDrag()) - mLauncher.enterSpringLoadedDragMode(); - } - } - }, 150); + // Enter spring loaded mode + mLauncher.enterSpringLoadedDragMode(); return false; } diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 8c920f0b8..a6752ddc3 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -522,13 +522,19 @@ public class Launcher extends Activity mLauncherCallbacks.setLauncherAppsCallback(new Launcher.LauncherAppsCallbacks() { @Override public void onAllAppsBoundsChanged(Rect bounds) { + if (LOGD) { + Log.d(TAG, "onAllAppsBoundsChanged(Rect): " + bounds); + } mAppsView.setFixedBounds(Launcher.this, bounds); } @Override public void dismissAllApps() { - showWorkspace(WorkspaceStateTransitionAnimation.SCROLL_TO_CURRENT_PAGE, true, null, - false /* notifyLauncherCallbacks */); + // Dismiss All Apps if we aren't already paused/invisible + if (!mPaused) { + showWorkspace(WorkspaceStateTransitionAnimation.SCROLL_TO_CURRENT_PAGE, true, + null /* onCompleteRunnable */, false /* notifyLauncherCallbacks */); + } } }); return true; @@ -1012,6 +1018,13 @@ public class Launcher extends Activity } mOnResumeState = State.NONE; + // Restore the apps state if we are in all apps + if (mState == State.APPS) { + if (mLauncherCallbacks != null) { + mLauncherCallbacks.onAllAppsShown(); + } + } + // Background was set to gradient in onPause(), restore to black if in all apps. setWorkspaceBackground(mState == State.WORKSPACE); @@ -1072,7 +1085,7 @@ public class Launcher extends Activity mWorkspace.getCustomContentCallbacks().onShow(true); } } - mWorkspace.updateInteractionForState(); + updateInteraction(Workspace.State.NORMAL, mWorkspace.getState()); mWorkspace.onResume(); if (!isWorkspaceLoading()) { @@ -2101,8 +2114,6 @@ public class Launcher extends Activity public void startSearch(String initialQuery, boolean selectInitialQuery, Bundle appSearchData, boolean globalSearch) { - showWorkspace(true); - if (initialQuery == null) { // Use any text typed in the launcher as the initial query initialQuery = getTypedText(); @@ -2121,6 +2132,9 @@ public class Launcher extends Activity if (clearTextImmediately) { clearTypedText(); } + + // We need to show the workspace after starting the search + showWorkspace(true); } /** @@ -2866,6 +2880,21 @@ public class Launcher extends Activity } } + /** Updates the interaction state. */ + public void updateInteraction(Workspace.State fromState, Workspace.State toState) { + // Only update the interacting state if we are transitioning to/from a view without an + // overlay + boolean fromStateWithoutOverlay = fromState != Workspace.State.NORMAL && + fromState != Workspace.State.NORMAL_HIDDEN; + boolean toStateWithoutOverlay = toState != Workspace.State.NORMAL && + toState != Workspace.State.NORMAL_HIDDEN; + if (toStateWithoutOverlay) { + onInteractionBegin(); + } else if (fromStateWithoutOverlay) { + onInteractionEnd(); + } + } + void startApplicationDetailsActivity(ComponentName componentName, UserHandleCompat user) { try { LauncherAppsCompat launcherApps = LauncherAppsCompat.getInstance(this); @@ -3170,7 +3199,6 @@ public class Launcher extends Activity if (v instanceof Workspace) { if (!mWorkspace.isInOverviewMode()) { - if (!mWorkspace.isTouchActive()) { showOverviewMode(true); mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, @@ -3342,8 +3370,12 @@ public class Launcher extends Activity // Send an accessibility event to announce the context change getWindow().getDecorView() .sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); - - onWorkspaceShown(animated); + if (notifyLauncherCallbacks) { + // Dismiss all apps when the workspace is shown + if (mLauncherCallbacks != null) { + mLauncherCallbacks.onAllAppsHidden(); + } + } } } @@ -3353,10 +3385,6 @@ public class Launcher extends Activity WorkspaceStateTransitionAnimation.SCROLL_TO_CURRENT_PAGE, animated, null /* onCompleteRunnable */); mState = State.WORKSPACE; - onWorkspaceShown(animated); - } - - public void onWorkspaceShown(boolean animated) { } /** @@ -3416,6 +3444,18 @@ public class Launcher extends Activity .sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); } + /** + * Updates the workspace and interaction state on state change, and return the animation to this + * new state. + */ + public Animator startWorkspaceStateChangeAnimation(Workspace.State toState, int toPage, + boolean animated, HashMap<View, Integer> layerViews) { + Workspace.State fromState = mWorkspace.getState(); + Animator anim = mWorkspace.setStateWithAnimation(toState, toPage, animated, layerViews); + updateInteraction(fromState, toState); + return anim; + } + public void enterSpringLoadedDragMode() { Log.d(TAG, String.format("enterSpringLoadedDragMode [mState=%s", mState.name())); @@ -3434,6 +3474,14 @@ public class Launcher extends Activity final Runnable onCompleteRunnable) { if (mState != State.APPS_SPRING_LOADED && mState != State.WIDGETS_SPRING_LOADED) return; + if (successfulDrop) { + // We need to trigger all apps hidden to notify search to update itself before the + // delayed call to showWorkspace below + if (mLauncherCallbacks != null) { + mLauncherCallbacks.onAllAppsHidden(); + } + } + mHandler.postDelayed(new Runnable() { @Override public void run() { @@ -3454,13 +3502,10 @@ public class Launcher extends Activity void exitSpringLoadedDragMode() { if (mState == State.APPS_SPRING_LOADED) { - mStateTransitionAnimation.startAnimationToAllApps(true /* animated */); - mState = State.APPS; + showAppsView(true, false); } else if (mState == State.WIDGETS_SPRING_LOADED) { - mStateTransitionAnimation.startAnimationToWidgets(true /* animated */); - mState = State.WIDGETS; + showWidgetsView(true, false); } - // Otherwise, we are not in spring loaded mode, so don't do anything. } void lockAllApps() { diff --git a/src/com/android/launcher3/LauncherCallbacks.java b/src/com/android/launcher3/LauncherCallbacks.java index 2fee81c3d..25c86c977 100644 --- a/src/com/android/launcher3/LauncherCallbacks.java +++ b/src/com/android/launcher3/LauncherCallbacks.java @@ -51,6 +51,7 @@ public interface LauncherCallbacks { public void finishBindingItems(final boolean upgradePath); public void onClickAllAppsButton(View v); public void onAllAppsShown(); + public void onAllAppsHidden(); public void bindAllApplications(ArrayList<AppInfo> apps); public void onClickFolderIcon(View v); public void onClickAppShortcut(View v); diff --git a/src/com/android/launcher3/LauncherExtension.java b/src/com/android/launcher3/LauncherExtension.java index e4fdbbc7c..8174af045 100644 --- a/src/com/android/launcher3/LauncherExtension.java +++ b/src/com/android/launcher3/LauncherExtension.java @@ -128,6 +128,10 @@ public class LauncherExtension extends Launcher { } @Override + public void onAllAppsHidden() { + } + + @Override public void bindAllApplications(ArrayList<AppInfo> apps) { } diff --git a/src/com/android/launcher3/LauncherStateTransitionAnimation.java b/src/com/android/launcher3/LauncherStateTransitionAnimation.java index f91cfa07b..1effe1e37 100644 --- a/src/com/android/launcher3/LauncherStateTransitionAnimation.java +++ b/src/com/android/launcher3/LauncherStateTransitionAnimation.java @@ -249,8 +249,8 @@ public class LauncherStateTransitionAnimation { // Create the workspace animation. // NOTE: this call apparently also sets the state for the workspace if !animated - Animator workspaceAnim = mLauncher.getWorkspace().setStateWithAnimation( - toWorkspaceState, -1, animated, layerViews); + Animator workspaceAnim = mLauncher.startWorkspaceStateChangeAnimation(toWorkspaceState, -1, + animated, layerViews); if (animated && initialized) { mStateAnimation = LauncherAnimUtils.createAnimatorSet(); @@ -546,8 +546,8 @@ public class LauncherStateTransitionAnimation { // Create the workspace animation. // NOTE: this call apparently also sets the state for the workspace if !animated - Animator workspaceAnim = mLauncher.getWorkspace().setStateWithAnimation( - toWorkspaceState, toWorkspacePage, animated, layerViews); + Animator workspaceAnim = mLauncher.startWorkspaceStateChangeAnimation(toWorkspaceState, + toWorkspacePage, animated, layerViews); if (animated && initialized) { mStateAnimation = LauncherAnimUtils.createAnimatorSet(); diff --git a/src/com/android/launcher3/SearchDropTargetBar.java b/src/com/android/launcher3/SearchDropTargetBar.java index 44a76b73b..4cdf1cac9 100644 --- a/src/com/android/launcher3/SearchDropTargetBar.java +++ b/src/com/android/launcher3/SearchDropTargetBar.java @@ -180,9 +180,6 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D prepareStartAnimation(mDropTargetBar); mShowDropTargetBarAnim.start(); hideSearchBar(true); - if (mQSBSearchBar != null) { - mQSBSearchBar.setVisibility(View.GONE); - } } /** @@ -193,9 +190,6 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D prepareStartAnimation(mDropTargetBar); mShowDropTargetBarAnim.reverse(); showSearchBar(true); - if (mQSBSearchBar != null) { - mQSBSearchBar.setVisibility(View.VISIBLE); - } } /* diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 2efd20739..9acdcae98 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -2040,14 +2040,6 @@ public class Workspace extends SmoothPagedView return -offsetFromTopEdge + mInsets.top + offsetToCenterInOverview; } - public void updateInteractionForState() { - if (mState != State.NORMAL) { - mLauncher.onInteractionBegin(); - } else { - mLauncher.onInteractionEnd(); - } - } - /** * Sets the current workspace {@link State}, returning an animation transitioning the workspace * to that new state. @@ -2060,7 +2052,6 @@ public class Workspace extends SmoothPagedView // Update the current state mState = toState; - updateInteractionForState(); updateAccessibilityFlags(); return workspaceAnim; |