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

Commit d71a4288 authored by Tony Wickham's avatar Tony Wickham Committed by Android (Google) Code Review
Browse files

Merge "Recreate taskbar when dark mode changes" into sc-v2-dev

parents 75c97f53 5a5a9269
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -121,10 +121,9 @@ public class NavbarButtonsViewController {
    /**
     * Initializes the controller
     */
    public void init(TaskbarControllers controllers, TaskbarSharedState sharedState) {
    public void init(TaskbarControllers controllers) {
        mControllers = controllers;
        mNavButtonsView.getLayoutParams().height = mContext.getDeviceProfile().taskbarSize;
        parseSystemUiFlags(sharedState.sysuiStateFlags);
        mNavButtonTranslationYMultiplier.value = 1;

        mA11yLongClickListener = view -> {
@@ -290,12 +289,15 @@ public class NavbarButtonsViewController {
        }
    }

    public void updateStateForSysuiFlags(int systemUiStateFlags) {
    public void updateStateForSysuiFlags(int systemUiStateFlags, boolean skipAnim) {
        if (systemUiStateFlags == mSysuiStateFlags) {
            return;
        }
        parseSystemUiFlags(systemUiStateFlags);
        applyState();
        if (skipAnim) {
            mPropertyHolders.forEach(StatePropertyHolder::endAnimation);
        }
    }

    /**
+12 −6
Original line number Diff line number Diff line
@@ -191,6 +191,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ

        // Initialize controllers after all are constructed.
        mControllers.init(sharedState);
        updateSysuiStateFlags(sharedState.sysuiStateFlags, true /* fromInit */);

        mWindowManager.addView(mDragLayer, mWindowLayoutParams);
    }
@@ -325,26 +326,28 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ
        mWindowManager.removeViewImmediate(mDragLayer);
    }

    public void updateSysuiStateFlags(int systemUiStateFlags) {
        mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags);
    public void updateSysuiStateFlags(int systemUiStateFlags, boolean fromInit) {
        mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags,
                fromInit);
        mControllers.taskbarViewController.setImeIsVisible(
                mControllers.navbarButtonsViewController.isImeVisible());
        int shadeExpandedFlags = SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED
                | SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
        onNotificationShadeExpandChanged((systemUiStateFlags & shadeExpandedFlags) != 0);
        onNotificationShadeExpandChanged((systemUiStateFlags & shadeExpandedFlags) != 0, fromInit);
        mControllers.taskbarViewController.setRecentsButtonDisabled(
                mControllers.navbarButtonsViewController.isRecentsDisabled());
        mControllers.stashedHandleViewController.setIsHomeButtonDisabled(
                mControllers.navbarButtonsViewController.isHomeDisabled());
        mControllers.taskbarKeyguardController.updateStateForSysuiFlags(systemUiStateFlags);
        mControllers.taskbarStashController.updateStateForSysuiFlags(systemUiStateFlags);
        mControllers.taskbarScrimViewController.updateStateForSysuiFlags(systemUiStateFlags);
        mControllers.taskbarStashController.updateStateForSysuiFlags(systemUiStateFlags, fromInit);
        mControllers.taskbarScrimViewController.updateStateForSysuiFlags(systemUiStateFlags,
                fromInit);
    }

    /**
     * Hides the taskbar icons and background when the notication shade is expanded.
     */
    private void onNotificationShadeExpandChanged(boolean isExpanded) {
    private void onNotificationShadeExpandChanged(boolean isExpanded, boolean skipAnim) {
        float alpha = isExpanded ? 0 : 1;
        AnimatorSet anim = new AnimatorSet();
        anim.play(mControllers.taskbarViewController.getTaskbarIconAlpha().getProperty(
@@ -354,6 +357,9 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ
                    .animateToValue(alpha));
        }
        anim.start();
        if (skipAnim) {
            anim.end();
        }
    }

    public void onRotationProposal(int rotation, boolean isValid) {
+1 −1
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ public class TaskbarControllers {
     */
    public void init(TaskbarSharedState sharedState) {
        taskbarDragController.init(this);
        navbarButtonsViewController.init(this, sharedState);
        navbarButtonsViewController.init(this);
        if (taskbarActivityContext.isThreeButtonNav()) {
            rotationButtonController.init();
        }
+2 −2
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen
            public void onConfigurationChanged(Configuration newConfig) {
                int configDiff = mOldConfig.diff(newConfig);
                int configsRequiringRecreate = ActivityInfo.CONFIG_ASSETS_PATHS
                        | ActivityInfo.CONFIG_LAYOUT_DIRECTION;
                        | ActivityInfo.CONFIG_LAYOUT_DIRECTION | ActivityInfo.CONFIG_UI_MODE;
                if ((configDiff & configsRequiringRecreate) != 0) {
                    // Color has changed, recreate taskbar to reload background color & icons.
                    recreateTaskbar();
@@ -231,7 +231,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen
    public void onSystemUiFlagsChanged(int systemUiStateFlags) {
        mSharedState.sysuiStateFlags = systemUiStateFlags;
        if (mTaskbarActivityContext != null) {
            mTaskbarActivityContext.updateSysuiStateFlags(systemUiStateFlags);
            mTaskbarActivityContext.updateSysuiStateFlags(systemUiStateFlags, false /* fromInit */);
        }
    }

+6 −3
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ public class TaskbarScrimViewController {
    /**
     * Updates the scrim state based on the flags.
     */
    public void updateStateForSysuiFlags(int stateFlags) {
    public void updateStateForSysuiFlags(int stateFlags, boolean skipAnim) {
        final boolean bubblesExpanded = (stateFlags & SYSUI_STATE_BUBBLES_EXPANDED) != 0;
        final boolean manageMenuExpanded =
                (stateFlags & SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED) != 0;
@@ -73,15 +73,18 @@ public class TaskbarScrimViewController {
                // what the total transparency would be.
                ? (SCRIM_ALPHA + (SCRIM_ALPHA * (1 - SCRIM_ALPHA)))
                : showScrim ? SCRIM_ALPHA : 0;
        showScrim(showScrim, scrimAlpha);
        showScrim(showScrim, scrimAlpha, skipAnim);
    }

    private void showScrim(boolean showScrim, float alpha) {
    private void showScrim(boolean showScrim, float alpha, boolean skipAnim) {
        mScrimView.setOnClickListener(showScrim ? (view) -> onClick() : null);
        mScrimView.setClickable(showScrim);
        ObjectAnimator anim = mScrimAlpha.animateToValue(showScrim ? alpha : 0);
        anim.setInterpolator(showScrim ? SCRIM_ALPHA_IN : SCRIM_ALPHA_OUT);
        anim.start();
        if (skipAnim) {
            anim.end();
        }
    }

    private void updateScrimAlpha() {
Loading