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

Commit 6a74e659 authored by Tony Wickham's avatar Tony Wickham
Browse files

Explicitly set which taskbar view is visible at each caller

This makes it more clear which taskbar view is expected for particular
code flows. Also makes it easier to set it to null in cleanup().

Test: call cleanup() while taskbarOnHome is invisible, ensure hotseat
icons go back to being visible
Bug: 182512211
Fixes: 183633496

Change-Id: I680a15582c8034a049b20e035b4d54f5ea5aee04
parent e78a70ba
Loading
Loading
Loading
Loading
+13 −18
Original line number Diff line number Diff line
@@ -88,7 +88,6 @@ public class TaskbarController {

    private @Nullable Animator mAnimator;
    private boolean mIsAnimatingToLauncher;
    private boolean mIsAnimatingToApp;

    public TaskbarController(BaseQuickstepLauncher launcher,
            TaskbarContainerView taskbarContainerView, TaskbarView taskbarViewOnHome) {
@@ -250,7 +249,9 @@ public class TaskbarController {
        mHotseatController.init();
        mRecentsController.init();

        updateWhichTaskbarViewIsVisible();
        setWhichTaskbarViewIsVisible(mLauncher.hasBeenResumed()
                ? mTaskbarViewOnHome
                : mTaskbarViewInApp);
    }

    private TaskbarStateHandlerCallbacks createTaskbarStateHandlerCallbacks() {
@@ -284,6 +285,8 @@ public class TaskbarController {
        mTaskbarAnimationController.cleanup();
        mHotseatController.cleanup();
        mRecentsController.cleanup();

        setWhichTaskbarViewIsVisible(null);
    }

    private void removeFromWindowManager() {
@@ -364,7 +367,7 @@ public class TaskbarController {
            @Override
            public void onAnimationEnd(Animator animation) {
                mIsAnimatingToLauncher = false;
                updateWhichTaskbarViewIsVisible();
                setWhichTaskbarViewIsVisible(mTaskbarViewOnHome);
            }
        });

@@ -377,14 +380,12 @@ public class TaskbarController {
        anim.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationStart(Animator animation) {
                mIsAnimatingToApp = true;
                mTaskbarViewInApp.updateHotseatItemsVisibility();
                updateWhichTaskbarViewIsVisible();
                setWhichTaskbarViewIsVisible(mTaskbarViewInApp);
            }

            @Override
            public void onAnimationEnd(Animator animation) {
                mIsAnimatingToApp = false;
            }
        });
        return anim.buildAnim();
@@ -487,18 +488,12 @@ public class TaskbarController {
                mTaskbarViewOnHome.getHeight() - hotseatBounds.bottom);
    }

    private void updateWhichTaskbarViewIsVisible() {
        boolean isInApp = !mLauncher.hasBeenResumed() || mIsAnimatingToLauncher
                || mIsAnimatingToApp;
        if (isInApp) {
            mTaskbarViewInApp.setVisibility(View.VISIBLE);
            mTaskbarViewOnHome.setVisibility(View.INVISIBLE);
            mLauncher.getHotseat().setIconsAlpha(0);
        } else {
            mTaskbarViewInApp.setVisibility(View.INVISIBLE);
            mTaskbarViewOnHome.setVisibility(View.VISIBLE);
            mLauncher.getHotseat().setIconsAlpha(1);
        }
    private void setWhichTaskbarViewIsVisible(@Nullable TaskbarView visibleTaskbar) {
        mTaskbarViewInApp.setVisibility(visibleTaskbar == mTaskbarViewInApp
                ? View.VISIBLE : View.INVISIBLE);
        mTaskbarViewOnHome.setVisibility(visibleTaskbar == mTaskbarViewOnHome
                ? View.VISIBLE : View.INVISIBLE);
        mLauncher.getHotseat().setIconsAlpha(visibleTaskbar != mTaskbarViewInApp ? 1f : 0f);
    }

    /**