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

Commit db0c2f1b authored by Tony Wickham's avatar Tony Wickham
Browse files

Add flags to stash taskbar for app pinning and empty hotseat

Test: pin an app from overview, watch taskbar stash automatically until unpinning
Test: turn off suggestions for hotseat, remove all items and watch taskbar stash automatically when opening an app
Fixes: 190192993
Fixes: 193937948
Change-Id: Ia7260c60a820af1a48c9e4a400a52753baf34d41
parent 772732de
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -321,6 +321,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ
        mControllers.taskbarViewController.setRecentsButtonDisabled(
                mControllers.navbarButtonsViewController.isRecentsDisabled());
        mControllers.taskbarKeyguardController.updateStateForSysuiFlags(systemUiStateFlags);
        mControllers.taskbarStashController.updateStateForSysuiFlags(systemUiStateFlags);
    }

    public void onRotationProposal(int rotation, boolean isValid) {
+15 −0
Original line number Diff line number Diff line
@@ -45,6 +45,9 @@ public class TaskbarModelCallbacks implements
    private final TaskbarActivityContext mContext;
    private final TaskbarView mContainer;

    // Initialized in init.
    private TaskbarControllers mControllers;

    private boolean mBindInProgress = false;

    public TaskbarModelCallbacks(
@@ -53,6 +56,10 @@ public class TaskbarModelCallbacks implements
        mContainer = container;
    }

    public void init(TaskbarControllers controllers) {
        mControllers = controllers;
    }

    @Override
    public void startBinding() {
        mBindInProgress = true;
@@ -161,6 +168,7 @@ public class TaskbarModelCallbacks implements
        int predictionSize = mPredictedItems.size();
        int predictionNextIndex = 0;

        boolean isHotseatEmpty = true;
        for (int i = 0; i < hotseatItemInfos.length; i++) {
            hotseatItemInfos[i] = mHotseatItems.get(i);
            if (hotseatItemInfos[i] == null && predictionNextIndex < predictionSize) {
@@ -168,7 +176,14 @@ public class TaskbarModelCallbacks implements
                hotseatItemInfos[i].screenId = i;
                predictionNextIndex++;
            }
            if (hotseatItemInfos[i] != null) {
                isHotseatEmpty = false;
            }
        }
        mContainer.updateHotseatItems(hotseatItemInfos);

        mControllers.taskbarStashController.updateStateForFlag(
                TaskbarStashController.FLAG_STASHED_IN_APP_EMPTY, isHotseatEmpty);
        mControllers.taskbarStashController.applyState();
    }
}
+13 −2
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ import static android.view.HapticFeedbackConstants.LONG_PRESS;

import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_LONGPRESS_HIDE;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_LONGPRESS_SHOW;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -44,10 +45,13 @@ public class TaskbarStashController {

    public static final int FLAG_IN_APP = 1 << 0;
    public static final int FLAG_STASHED_IN_APP_MANUAL = 1 << 1; // long press, persisted
    public static final int FLAG_IN_STASHED_LAUNCHER_STATE = 1 << 2;
    public static final int FLAG_STASHED_IN_APP_PINNED = 1 << 2; // app pinning
    public static final int FLAG_STASHED_IN_APP_EMPTY = 1 << 3; // no hotseat icons
    public static final int FLAG_IN_STASHED_LAUNCHER_STATE = 1 << 4;

    // If we're in an app and any of these flags are enabled, taskbar should be stashed.
    public static final int FLAGS_STASHED_IN_APP = FLAG_STASHED_IN_APP_MANUAL;
    public static final int FLAGS_STASHED_IN_APP = FLAG_STASHED_IN_APP_MANUAL
            | FLAG_STASHED_IN_APP_PINNED | FLAG_STASHED_IN_APP_EMPTY;

    /**
     * How long to stash/unstash when manually invoked via long press.
@@ -368,6 +372,13 @@ public class TaskbarStashController {
        return mStatePropertyHolder.setState(mState, duration, false);
    }

    /** Called when some system ui state has changed. (See SYSUI_STATE_... in QuickstepContract) */
    public void updateStateForSysuiFlags(int systemUiStateFlags) {
        updateStateForFlag(FLAG_STASHED_IN_APP_PINNED,
                hasAnyFlag(systemUiStateFlags, SYSUI_STATE_SCREEN_PINNING));
        applyState();
    }

    /**
     * Updates the proper flag to indicate whether the task bar should be stashed.
     *
+2 −0
Original line number Diff line number Diff line
@@ -85,6 +85,8 @@ public class TaskbarViewController {
        mTaskbarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarSize;

        mTaskbarIconScaleForStash.updateValue(1f);

        mModelCallbacks.init(controllers);
        LauncherAppState.getInstance(mActivity).getModel().addCallbacksAndLoad(mModelCallbacks);
    }