Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19795603 authored by Winson Chung's avatar Winson Chung Committed by Android Git Automerger
Browse files

am 76648c58: Making long-press of AllApps to jump directly to search.

* commit '76648c58':
  Making long-press of AllApps to jump directly to search.
parents 6d5fd2ae 76648c58
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -123,9 +123,10 @@ public class Hotseat extends FrameLayout
        allAppsButton.setContentDescription(context.getString(R.string.all_apps_button_label));
        allAppsButton.setOnKeyListener(new HotseatIconKeyEventListener());
        if (mLauncher != null) {
            allAppsButton.setOnTouchListener(mLauncher.getHapticFeedbackTouchListener());
            mLauncher.setAllAppsButton(allAppsButton);
            allAppsButton.setOnTouchListener(mLauncher.getHapticFeedbackTouchListener());
            allAppsButton.setOnClickListener(mLauncher);
            allAppsButton.setOnLongClickListener(mLauncher);
            allAppsButton.setOnFocusChangeListener(mLauncher.mFocusHandler);
        }

+23 −12
Original line number Diff line number Diff line
@@ -986,7 +986,7 @@ public class Launcher extends Activity
            // view after launching an app, as they may be depending on the UI to be static to
            // switch to another app, otherwise, if it was
            showAppsView(false /* animated */, false /* resetListToTop */,
                    !launchedFromApp /* updatePredictedApps */);
                    !launchedFromApp /* updatePredictedApps */, false /* focusSearchBar */);
        } else if (mOnResumeState == State.WIDGETS) {
            showWidgetsView(false, false);
        }
@@ -2531,12 +2531,17 @@ public class Launcher extends Activity
     */
    protected void onClickAllAppsButton(View v) {
        if (LOGD) Log.d(TAG, "onClickAllAppsButton");
        if (isAppsViewVisible()) {
            showWorkspace(true);
        } else {
            // Try and refresh the set of predicted apps before we enter launcher
        if (!isAppsViewVisible()) {
            showAppsView(true /* animated */, false /* resetListToTop */,
                    true /* updatePredictedApps */, false /* focusSearchBar */);
        }
    }

    protected void onLongClickAllAppsButton(View v) {
        if (LOGD) Log.d(TAG, "onLongClickAllAppsButton");
        if (!isAppsViewVisible()) {
            showAppsView(true /* animated */, false /* resetListToTop */,
                    true /* updatePredictedApps */);
                    true /* updatePredictedApps */, true /* focusSearchBar */);
        }
    }

@@ -3113,6 +3118,11 @@ public class Launcher extends Activity
        if (isWorkspaceLocked()) return false;
        if (mState != State.WORKSPACE) return false;

        if (v == mAllAppsButton) {
            onLongClickAllAppsButton(v);
            return true;
        }

        if (v instanceof Workspace) {
            if (!mWorkspace.isInOverviewMode()) {
                if (!mWorkspace.isTouchActive()) {
@@ -3305,14 +3315,15 @@ public class Launcher extends Activity
    /**
     * Shows the apps view.
     */
    void showAppsView(boolean animated, boolean resetListToTop, boolean updatePredictedApps) {
    void showAppsView(boolean animated, boolean resetListToTop, boolean updatePredictedApps,
            boolean focusSearchBar) {
        if (resetListToTop) {
            mAppsView.scrollToTop();
        }
        if (updatePredictedApps) {
            tryAndUpdatePredictedApps();
        }
        showAppsOrWidgets(animated, State.APPS);
        showAppsOrWidgets(State.APPS, animated, focusSearchBar);
    }

    /**
@@ -3323,7 +3334,7 @@ public class Launcher extends Activity
        if (resetPageToZero) {
            mWidgetsView.scrollToTop();
        }
        showAppsOrWidgets(animated, State.WIDGETS);
        showAppsOrWidgets(State.WIDGETS, animated, false);

        mWidgetsView.post(new Runnable() {
            @Override
@@ -3340,7 +3351,7 @@ public class Launcher extends Activity
     */
    // TODO: calling method should use the return value so that when {@code false} is returned
    // the workspace transition doesn't fall into invalid state.
    private boolean showAppsOrWidgets(boolean animated, State toState) {
    private boolean showAppsOrWidgets(State toState, boolean animated, boolean focusSearchBar) {
        if (mState != State.WORKSPACE &&  mState != State.APPS_SPRING_LOADED &&
                mState != State.WIDGETS_SPRING_LOADED) {
            return false;
@@ -3350,7 +3361,7 @@ public class Launcher extends Activity
        }

        if (toState == State.APPS) {
            mStateTransitionAnimation.startAnimationToAllApps(mState, animated);
            mStateTransitionAnimation.startAnimationToAllApps(animated, focusSearchBar);
        } else {
            mStateTransitionAnimation.startAnimationToWidgets(animated);
        }
@@ -3420,7 +3431,7 @@ public class Launcher extends Activity
    void exitSpringLoadedDragMode() {
        if (mState == State.APPS_SPRING_LOADED) {
            showAppsView(true /* animated */, false /* resetListToTop */,
                    false /* updatePredictedApps */);
                    false /* updatePredictedApps */, false /* focusSearchBar */);
        } else if (mState == State.WIDGETS_SPRING_LOADED) {
            showWidgetsView(true, false);
        }
+18 −7
Original line number Diff line number Diff line
@@ -91,7 +91,6 @@ public class LauncherStateTransitionAnimation {
     */
    static abstract class PrivateTransitionCallbacks {
        void onRevealViewVisible(View revealView, View contentView, View allAppsButtonView) {}
        void onAnimationComplete(View revealView, View contentView, View allAppsButtonView) {}
        float getMaterialRevealViewFinalAlpha(View revealView) {
            return 0;
        }
@@ -108,6 +107,7 @@ public class LauncherStateTransitionAnimation {
                View allAppsButtonView) {
            return null;
        }
        void onTransitionComplete() {}
    }

    public static final String TAG = "LauncherStateTransitionAnimation";
@@ -128,8 +128,12 @@ public class LauncherStateTransitionAnimation {

    /**
     * Starts an animation to the apps view.
     *
     * @param startSearchAfterTransition Immediately starts app search after the transition to
     *                                   All Apps is completed.
     */
    public void startAnimationToAllApps(final Launcher.State fromState, final boolean animated) {
    public void startAnimationToAllApps(final boolean animated,
            final boolean startSearchAfterTransition) {
        final AllAppsContainerView toView = mLauncher.getAppsView();
        PrivateTransitionCallbacks cb = new PrivateTransitionCallbacks() {
            private int[] mAllAppsToPanelDelta;
@@ -171,10 +175,17 @@ public class LauncherStateTransitionAnimation {
                    }
                };
            }
            @Override
            void onTransitionComplete() {
                if (startSearchAfterTransition) {
                    toView.startAppsSearch();
                }
            }
        };
        // Only animate the search bar if animating from spring loaded mode back to all apps
        startAnimationToOverlay(Workspace.State.NORMAL_HIDDEN, toView, toView.getContentView(),
                toView.getRevealView(), toView.getSearchBarView(), animated, true, cb);
                toView.getRevealView(), toView.getSearchBarView(), animated,
                true /* hideSearchBar */, cb);
    }

    /**
@@ -348,7 +359,6 @@ public class LauncherStateTransitionAnimation {

                    // Hide the reveal view
                    revealView.setVisibility(View.INVISIBLE);
                    pCb.onAnimationComplete(revealView, contentView, allAppsButtonView);

                    // Disable all necessary layers
                    for (View v : layerViews.keySet()) {
@@ -363,6 +373,7 @@ public class LauncherStateTransitionAnimation {

                    // This can hold unnecessary references to views.
                    mStateAnimation = null;
                    pCb.onTransitionComplete();
                }

            });
@@ -428,6 +439,7 @@ public class LauncherStateTransitionAnimation {
            dispatchOnLauncherTransitionPrepare(toView, animated, false);
            dispatchOnLauncherTransitionStart(toView, animated, false);
            dispatchOnLauncherTransitionEnd(toView, animated, false);
            pCb.onTransitionComplete();
        }
    }

@@ -682,9 +694,6 @@ public class LauncherStateTransitionAnimation {
                        onCompleteRunnable.run();
                    }

                    // Animation complete callback
                    pCb.onAnimationComplete(revealView, contentView, allAppsButtonView);

                    // Disable all necessary layers
                    for (View v : layerViews.keySet()) {
                        if (layerViews.get(v) == BUILD_AND_SET_LAYER) {
@@ -704,6 +713,7 @@ public class LauncherStateTransitionAnimation {

                    // This can hold unnecessary references to views.
                    mStateAnimation = null;
                    pCb.onTransitionComplete();
                }
            });

@@ -739,6 +749,7 @@ public class LauncherStateTransitionAnimation {
            dispatchOnLauncherTransitionPrepare(toView, animated, true);
            dispatchOnLauncherTransitionStart(toView, animated, true);
            dispatchOnLauncherTransitionEnd(toView, animated, true);
            pCb.onTransitionComplete();

            // Run any queued runnables
            if (onCompleteRunnable != null) {
+9 −0
Original line number Diff line number Diff line
@@ -284,6 +284,15 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
        return new DefaultAppSearchController(getContext(), this, mAppsRecyclerView);
    }

    /**
     * Focuses the search field and begins an app search.
     */
    public void startAppsSearch() {
        if (mSearchBarController != null) {
            mSearchBarController.focusSearchField();
        }
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();