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

Commit ff46d4c9 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Fixes for increased usage of light navigation bar

- Fix an issue where IME doesn't really cover nav area but still
became window to deterine light navigation.
- Only invert nav bar icons when expanding the shade if the scrim
is dark.
- Fix logic such that status bar always becomes the window to
dermine light nav bar on lockscreen.

Test: Open shade with light nav
Test: Open Keyguard in landscape in all apps
Test: Unlock phone with light nav

Change-Id: If024a8b81942a6675243b703c0509cd88de8d932
Fixes: 63539478
Fixes: 63533427
Fixes: 63577858
parent f54dbc52
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -202,8 +202,7 @@ public class ScrimView extends View implements ConfigurationController.Configura
        return mDrawable;
    }

    @VisibleForTesting
    ColorExtractor.GradientColors getColors() {
    public ColorExtractor.GradientColors getColors() {
        return mColors;
    }

+21 −2
Original line number Diff line number Diff line
@@ -16,11 +16,16 @@

package com.android.systemui.statusbar.phone;

import android.app.WallpaperColors;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Rect;
import android.view.View;

import com.android.internal.colorextraction.ColorExtractor.GradientColors;
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.DarkIconDispatcher;

@@ -49,6 +54,7 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
    private boolean mDockedLight;
    private int mLastStatusBarMode;
    private int mLastNavigationBarMode;
    private final Color mDarkModeColor;

    /**
     * Whether the navigation bar should be light factoring in already how much alpha the scrim has
@@ -61,12 +67,14 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
     */
    private boolean mHasLightNavigationBar;
    private boolean mScrimAlphaBelowThreshold;
    private boolean mInvertLightNavBarWithScrim;
    private float mScrimAlpha;

    private final Rect mLastFullscreenBounds = new Rect();
    private final Rect mLastDockedBounds = new Rect();

    public LightBarController() {
    public LightBarController(Context ctx) {
        mDarkModeColor = Color.valueOf(ctx.getColor(R.color.dark_mode_icon_color_single_tone));
        mStatusBarIconController = Dependency.get(DarkIconDispatcher.class);
        mBatteryController = Dependency.get(BatteryController.class);
        mBatteryController.addCallback(this);
@@ -74,6 +82,7 @@ public class LightBarController implements BatteryController.BatteryStateChangeC

    public void setNavigationBar(LightBarTransitionsController navigationBar) {
        mNavigationBarController = navigationBar;
        updateNavigation();
    }

    public void setFingerprintUnlockController(
@@ -119,7 +128,8 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
            boolean last = mNavigationLight;
            mHasLightNavigationBar = isLight(vis, navigationBarMode,
                    View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
            mNavigationLight = mHasLightNavigationBar && mScrimAlphaBelowThreshold;
            mNavigationLight = mHasLightNavigationBar
                    && (mScrimAlphaBelowThreshold || !mInvertLightNavBarWithScrim);
            if (mNavigationLight != last) {
                updateNavigation();
            }
@@ -145,6 +155,15 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
        }
    }

    public void setScrimColor(GradientColors colors) {
        boolean invertLightNavBarWithScrimBefore = mInvertLightNavBarWithScrim;
        mInvertLightNavBarWithScrim = !colors.supportsDarkText();
        if (mHasLightNavigationBar
                && invertLightNavBarWithScrimBefore != mInvertLightNavBarWithScrim) {
            reevaluate();
        }
    }

    private boolean isLight(int vis, int barMode, int flag) {
        boolean isTransparentBar = (barMode == MODE_TRANSPARENT
                || barMode == MODE_LIGHTS_OUT_TRANSPARENT);
+5 −5
Original line number Diff line number Diff line
@@ -23,8 +23,8 @@ import android.os.Handler;
import android.os.SystemClock;
import android.util.TimeUtils;

import com.android.systemui.Dumpable;
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
import com.android.systemui.Interpolators;
import com.android.systemui.SysUiServiceProvider;
import com.android.systemui.statusbar.CommandQueue;
@@ -55,7 +55,6 @@ public class LightBarTransitionsController implements Dumpable, Callbacks {
    private ValueAnimator mTintAnimator;
    private float mDarkIntensity;
    private float mNextDarkIntensity;

    private final Runnable mTransitionDeferringDoneRunnable = new Runnable() {
        @Override
        public void run() {
@@ -130,6 +129,7 @@ public class LightBarTransitionsController implements Dumpable, Callbacks {
    public void setIconsDark(boolean dark, boolean animate) {
        if (!animate) {
            setIconTintInternal(dark ? 1.0f : 0.0f);
            mNextDarkIntensity = dark ? 1.0f : 0.0f;
        } else if (mTransitionPending) {
            deferIconTintChange(dark ? 1.0f : 0.0f);
        } else if (mTransitionDeferring) {
@@ -155,12 +155,12 @@ public class LightBarTransitionsController implements Dumpable, Callbacks {

    private void animateIconTint(float targetDarkIntensity, long delay,
            long duration) {
        if (mNextDarkIntensity == targetDarkIntensity) {
            return;
        }
        if (mTintAnimator != null) {
            mTintAnimator.cancel();
        }
        if (mDarkIntensity == targetDarkIntensity) {
            return;
        }
        mNextDarkIntensity = targetDarkIntensity;
        mTintAnimator = ValueAnimator.ofFloat(mDarkIntensity, targetDarkIntensity);
        mTintAnimator.addUpdateListener(
+1 −0
Original line number Diff line number Diff line
@@ -313,6 +313,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
                mScrimInFront.setColors(mSystemColors, animateScrimInFront);
                mScrimBehind.setColors(mSystemColors, animateScrimBehind);
            }
            mLightBarController.setScrimColor(mScrimInFront.getColors());
        }

        if (mAnimateKeyguardFadingOut || mForceHideScrims) {
+1 −1
Original line number Diff line number Diff line
@@ -1110,7 +1110,7 @@ public class StatusBar extends SystemUI implements DemoMode,
            }
        });

        mLightBarController = new LightBarController();
        mLightBarController = new LightBarController(context);
        if (mNavigationBar != null) {
            mNavigationBar.setLightBarController(mLightBarController);
        }
Loading