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

Commit 30f8e7f4 authored by Tony Wickham's avatar Tony Wickham
Browse files

Merge "Recreate taskbar when dark mode changes" into sc-v2-dev am: d71a4288 am: 446dfa8b

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/16144065

Change-Id: Iff95244b9cc0b75ee4e1ea4e88031d3057b5a025
parents 5c446d9e 446dfa8b
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -130,10 +130,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 -> {
@@ -303,12 +302,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
@@ -197,6 +197,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);
    }
@@ -331,26 +332,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(
@@ -360,6 +363,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);
        rotationButtonController.init();
        taskbarDragLayerController.init(this);
        taskbarViewController.init(this);
+2 −2
Original line number Diff line number Diff line
@@ -100,7 +100,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();
@@ -230,7 +230,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