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

Commit 24ef9996 authored by Sunny Goyal's avatar Sunny Goyal Committed by Automerger Merge Worker
Browse files

Merge "Updating TaskbarStashController API" into tm-qpr-dev am: ff569730

parents 73f1fa59 ff569730
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -73,12 +73,12 @@ public class FallbackTaskbarUIController extends TaskbarUIController {
        boolean useStashedLauncherState = toState.hasOverviewActions();
        boolean stashedLauncherState =
                useStashedLauncherState && !FeatureFlags.ENABLE_TASKBAR_IN_OVERVIEW.get();
        TaskbarStashController controller = mControllers.taskbarStashController;
        TaskbarStashController stashController = mControllers.taskbarStashController;
        // Set both FLAG_IN_STASHED_LAUNCHER_STATE and FLAG_IN_APP to ensure the state is respected.
        // For all other states, just use the current stashed-in-app setting (e.g. if long clicked).
        controller.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE, stashedLauncherState);
        controller.updateStateForFlag(FLAG_IN_APP, !useStashedLauncherState);
        return controller.applyStateWithoutStart(duration);
        stashController.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE, stashedLauncherState);
        stashController.updateStateForFlag(FLAG_IN_APP, !useStashedLauncherState);
        return stashController.createApplyStateAnimator(duration);
    }

    private void animateToRecentsState(RecentsState toState) {
+2 −2
Original line number Diff line number Diff line
@@ -183,7 +183,7 @@ import java.util.StringJoiner;
        stashController.updateStateForFlag(FLAG_IN_APP, false);

        updateStateForFlag(FLAG_RECENTS_ANIMATION_RUNNING, true);
        animatorSet.play(stashController.applyStateWithoutStart(duration));
        animatorSet.play(stashController.createApplyStateAnimator(duration));
        animatorSet.play(applyState(duration, false));

        if (mTaskBarRecentsAnimationListener != null) {
@@ -397,7 +397,7 @@ import java.util.StringJoiner;
        boolean isInStashedState = mLauncherState.isTaskbarStashed(mLauncher);
        TaskbarStashController stashController = mControllers.taskbarStashController;
        stashController.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE, isInStashedState);
        Animator stashAnimator = stashController.applyStateWithoutStart(duration);
        Animator stashAnimator = stashController.createApplyStateAnimator(duration);
        if (stashAnimator != null) {
            stashAnimator.addListener(new AnimatorListenerAdapter() {
                @Override
+22 −47
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_S
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ValueAnimator;
import android.annotation.Nullable;
import android.content.SharedPreferences;
import android.content.res.Resources;
@@ -69,8 +70,6 @@ import java.util.function.IntPredicate;
 */
public class TaskbarStashController implements TaskbarControllers.LoggableTaskbarController {

    private static final String TAG = "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_STASHED_IN_SYSUI_STATE = 1 << 2; // app pinning, keyguard, etc.
@@ -374,8 +373,8 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba

    /**
     * Returns the height that taskbar will inset when inside apps.
     * @see WindowInsets.Type#navigationBars()
     * @see WindowInsets.Type#systemBars()
     * @see android.view.WindowInsets.Type#navigationBars()
     * @see android.view.WindowInsets.Type#systemBars()
     */
    public int getContentHeightToReportToApps() {
        if ((isPhoneMode() && !mActivity.isThreeButtonNav())
@@ -408,7 +407,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba

    /**
     * Returns the height that taskbar will inset when inside apps.
     * @see WindowInsets.Type#tappableElement()
     * @see android.view.WindowInsets.Type#tappableElement()
     */
    public int getTappableHeightToReportToApps() {
        int contentHeight = getContentHeightToReportToApps();
@@ -494,7 +493,6 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
        createAnimToIsStashed(
                /* isStashed= */ false,
                placeholderDuration,
                /* startDelay= */ 0,
                /* animateBg= */ false,
                /* changedFlags=*/ 0);
        animation.play(mAnimator);
@@ -504,11 +502,10 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
     * Create a stash animation and save to {@link #mAnimator}.
     * @param isStashed whether it's a stash animation or an unstash animation
     * @param duration duration of the animation
     * @param startDelay how many milliseconds to delay the animation after starting it.
     * @param animateBg whether the taskbar's background should be animated
     */
    private void createAnimToIsStashed(boolean isStashed, long duration, long startDelay,
            boolean animateBg, int changedFlags) {
    private void createAnimToIsStashed(boolean isStashed, long duration, boolean animateBg,
            int changedFlags) {
        if (mAnimator != null) {
            mAnimator.cancel();
        }
@@ -528,13 +525,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
                    .setDuration(duration));
            mAnimator.play(mTaskbarImeBgAlpha.animateToValue(
                    hasAnyFlag(FLAG_STASHED_IN_APP_IME) ? 0 : 1).setDuration(duration));
            mAnimator.setStartDelay(startDelay);
            mAnimator.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    mAnimator = null;
                }
            });
            mAnimator.addListener(AnimatorListeners.forEndCallback(() -> mAnimator = null));
            return;
        }

@@ -615,7 +606,6 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba

        mAnimator.playTogether(fullLengthAnimatorSet, firstHalfAnimatorSet,
                secondHalfAnimatorSet);
        mAnimator.setStartDelay(startDelay);
        mAnimator.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationStart(Animator animation) {
@@ -701,19 +691,17 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
    }

    public void applyState(long duration) {
        mStatePropertyHolder.setState(mState, duration, true);
        createApplyStateAnimator(duration).start();
    }

    public void applyState(long duration, long startDelay) {
        mStatePropertyHolder.setState(mState, duration, startDelay, true);
        Animator animator = createApplyStateAnimator(duration);
        animator.setStartDelay(startDelay);
        animator.start();
    }

    public Animator applyStateWithoutStart() {
        return applyStateWithoutStart(TASKBAR_STASH_DURATION);
    }

    public Animator applyStateWithoutStart(long duration) {
        return mStatePropertyHolder.setState(mState, duration, false);
    public Animator createApplyStateAnimator(long duration) {
        return mStatePropertyHolder.createSetStateAnimator(mState, duration);
    }

    /**
@@ -948,22 +936,14 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
        }

        /**
         * @see #setState(int, long, long, boolean) with a default startDelay = 0.
         */
        public Animator setState(int flags, long duration, boolean start) {
            return setState(flags, duration, 0 /* startDelay */, start);
        }

        /**
         * Applies the latest state, potentially calling onStateChangeApplied() and creating a new
         * animation (stored in mAnimator) which is started if {@param start} is true.
         * Creates an animator (stored in mAnimator) which applies the latest state, potentially
         * creating a new animation (stored in mAnimator).
         * @param flags The latest flags to apply (see the top of this file).
         * @param duration The length of the animation.
         * @param startDelay How long to delay the animation after calling start().
         * @param start Whether to start mAnimator immediately.
         * @return mAnimator if mIsStashed changed, else null.
         * @return mAnimator if mIsStashed changed or an empty animator.
         */
        public Animator setState(int flags, long duration, long startDelay, boolean start) {
        @NonNull
        public Animator createSetStateAnimator(int flags, long duration) {
            int changedFlags = mPrevFlags ^ flags;
            if (mPrevFlags != flags) {
                onStateChangeApplied(changedFlags);
@@ -979,24 +959,19 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
                    && mAnimator != null && mAnimator.isStarted())) {
                if (TestProtocol.sDebugTracing) {
                    Log.d(TestProtocol.TASKBAR_IN_APP_STATE, String.format(
                            "setState: mIsStashed=%b, isStashed=%b, duration=%d, start=:%b",
                            "setState: mIsStashed=%b, isStashed=%b, duration=%d",
                            mIsStashed,
                            isStashed,
                            duration,
                            start));
                            duration));
                }
                mIsStashed = isStashed;
                mIsHotseatIconOnTopWhenAligned = isHotseatIconOnTopWhenAligned;

                // This sets mAnimator.
                createAnimToIsStashed(
                        mIsStashed, duration, startDelay, /* animateBg= */ true, changedFlags);
                if (start) {
                    mAnimator.start();
                }
                createAnimToIsStashed(mIsStashed, duration, /* animateBg= */ true, changedFlags);
                return mAnimator;
            }
            return null;
            return ValueAnimator.ofFloat(0, 1).setDuration(duration);
        }
    }
}