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

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

Merge "Some minor fixes for extracted status bar." into ub-launcher3-calgary-polish

parents d5e1ca2d 345bff3c
Loading
Loading
Loading
Loading
+19 −19
Original line number Diff line number Diff line
@@ -280,7 +280,6 @@ public class Launcher extends Activity
    private boolean mVisible;
    private boolean mHasFocus;
    private boolean mAttached;
    private boolean mIsLightStatusBar;

    /** Maps launcher activity components to their list of shortcut ids. */
    private MultiHashMap<ComponentKey, String> mDeepShortcutMap = new MultiHashMap<>();
@@ -485,33 +484,34 @@ public class Launcher extends Activity

    private void loadExtractedColorsAndColorItems() {
        // TODO: do this in pre-N as well, once the extraction part is complete.
        if (mExtractedColors != null && Utilities.isNycOrAbove()) {
        if (Utilities.isNycOrAbove()) {
            mExtractedColors.load(this);
            mHotseat.updateColor(mExtractedColors, !mPaused);
            mWorkspace.getPageIndicator().updateColor(mExtractedColors);
            setLightStatusBar(shouldBeLightStatusBar());
            // It's possible that All Apps is visible when this is run,
            // so always use light status bar in that case.
            activateLightStatusBar(isAllAppsVisible());
        }
    }

    /** Returns whether a light status bar (dark icons) should be used based on the wallpaper. */
    public boolean shouldBeLightStatusBar() {
        return mExtractedColors.getColor(ExtractedColors.STATUS_BAR_INDEX,
                ExtractedColors.DEFAULT_LIGHT) == ExtractedColors.DEFAULT_LIGHT;
    }

    public void setLightStatusBar(boolean lightStatusBar) {
        // Already set correctly
        if (mIsLightStatusBar == lightStatusBar) {
            return;
        }
        mIsLightStatusBar = lightStatusBar;
        int systemUiFlags = getWindow().getDecorView().getSystemUiVisibility();
    /**
     * Sets the status bar to be light or not. Light status bar means dark icons.
     * @param activate if true, make sure the status bar is light, otherwise base on wallpaper.
     */
    public void activateLightStatusBar(boolean activate) {
        boolean lightStatusBar = activate
                || mExtractedColors.getColor(ExtractedColors.STATUS_BAR_INDEX,
                ExtractedColors.DEFAULT_DARK) == ExtractedColors.DEFAULT_LIGHT;
        int oldSystemUiFlags = getWindow().getDecorView().getSystemUiVisibility();
        int newSystemUiFlags = oldSystemUiFlags;
        if (lightStatusBar) {
            systemUiFlags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
            newSystemUiFlags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
        } else {
            systemUiFlags &= ~(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
            newSystemUiFlags &= ~(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
        }
        if (newSystemUiFlags != oldSystemUiFlags) {
            getWindow().getDecorView().setSystemUiVisibility(newSystemUiFlags);
        }
        getWindow().getDecorView().setSystemUiVisibility(systemUiFlags);
    }

    private LauncherCallbacks mLauncherCallbacks;
+2 −2
Original line number Diff line number Diff line
@@ -277,8 +277,8 @@ public class AllAppsTransitionController implements TouchController, VerticalPul
        }
        // Use a light status bar (dark icons) if all apps is behind at least half of the status
        // bar. If the status bar is already light due to wallpaper extraction, keep it that way.
        boolean enable = shift <= mStatusBarHeight / 2 || mLauncher.shouldBeLightStatusBar();
        mLauncher.setLightStatusBar(enable);
        boolean forceLight = shift <= mStatusBarHeight / 2;
        mLauncher.activateLightStatusBar(forceLight);
    }

    /**