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

Commit 345bff3c authored by Tony Wickham's avatar Tony Wickham
Browse files

Some minor fixes for extracted status bar.

- setLightStatusBar() is now updateStatusBar(), with a forceLight
  parameter. We set the status bar to be light if forceLight or
  shouldBeLightStatusBar() (based on wallpaper).
- Force status bar to be light if all apps is open.
- Default to dark status bar, not light (light == dark icons)

Bug: 29452834
Change-Id: I7b102ceff2f1ef2ab8defd4a46c698df4feaf2a5
parent 9311387a
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);
    }

    /**