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

Commit ce14518d authored by Evan Laird's avatar Evan Laird
Browse files

[battery][old] use the NewStatusBarIcons object instead of the flag value

The old-new battery icon was relying solely on the newStatusBarIcons()
flag value directly.

The bug is that when status_bar_root_modernization is on but the
new_status_bar_icons flag is off, then users will see an old legacy code
path + old-new battery.

The simplest and safest fix is to simply replace the calls to
newStatusBarIcons() with NewStatusBarIcons.isEnabled. This logically
ensures that users will only see _either_ the old-old battery or the
new-new battery, but never the old-new battery.

All of BatteryMeterView can be removed once the new_status_bar_icons
flag fully rolls out anyway, so a minimal code change is justifiable
here imho

Test: manual
Bug: 314812750
Flag: com.android.settingslib.flags.new_status_bar_icons
Flag: com.android.systemui.status_bar_root_modernization
Change-Id: I30216a54900b0c67bee8c80623a01bb8355e4b38
parent b9a00040
Loading
Loading
Loading
Loading
+16 −16
Original line number Original line Diff line number Diff line
@@ -17,7 +17,6 @@ package com.android.systemui.battery;


import static android.provider.Settings.System.SHOW_BATTERY_PERCENT;
import static android.provider.Settings.System.SHOW_BATTERY_PERCENT;


import static com.android.settingslib.flags.Flags.newStatusBarIcons;
import static com.android.systemui.DejankUtils.whitelistIpcs;
import static com.android.systemui.DejankUtils.whitelistIpcs;


import static java.lang.annotation.RetentionPolicy.SOURCE;
import static java.lang.annotation.RetentionPolicy.SOURCE;
@@ -57,6 +56,7 @@ import com.android.systemui.battery.unified.ColorProfile;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.res.R;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.core.NewStatusBarIcons;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BatteryController;


import java.io.PrintWriter;
import java.io.PrintWriter;
@@ -98,7 +98,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {


    private BatteryEstimateFetcher mBatteryEstimateFetcher;
    private BatteryEstimateFetcher mBatteryEstimateFetcher;


    // for Flags.newStatusBarIcons. The unified battery icon can show percent inside
    // for NewStatusBarIcons. The unified battery icon can show percent inside
    @Nullable private BatteryLayersDrawable mUnifiedBattery;
    @Nullable private BatteryLayersDrawable mUnifiedBattery;
    private BatteryColors mUnifiedBatteryColors = BatteryColors.LIGHT_THEME_COLORS;
    private BatteryColors mUnifiedBatteryColors = BatteryColors.LIGHT_THEME_COLORS;
    private BatteryDrawableState mUnifiedBatteryState =
    private BatteryDrawableState mUnifiedBatteryState =
@@ -129,7 +129,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
        setupLayoutTransition();
        setupLayoutTransition();


        mBatteryIconView = new ImageView(context);
        mBatteryIconView = new ImageView(context);
        if (newStatusBarIcons()) {
        if (NewStatusBarIcons.isEnabled()) {
            mUnifiedBattery = BatteryLayersDrawable.Companion
            mUnifiedBattery = BatteryLayersDrawable.Companion
                    .newBatteryDrawable(context, mUnifiedBatteryState);
                    .newBatteryDrawable(context, mUnifiedBatteryState);
            mBatteryIconView.setImageDrawable(mUnifiedBattery);
            mBatteryIconView.setImageDrawable(mUnifiedBattery);
@@ -161,7 +161,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {




    private void setBatteryDrawableState(BatteryDrawableState newState) {
    private void setBatteryDrawableState(BatteryDrawableState newState) {
        if (!newStatusBarIcons()) return;
        if (!NewStatusBarIcons.isEnabled()) return;


        mUnifiedBatteryState = newState;
        mUnifiedBatteryState = newState;
        mUnifiedBattery.setBatteryState(mUnifiedBatteryState);
        mUnifiedBattery.setBatteryState(mUnifiedBatteryState);
@@ -243,7 +243,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
        mDrawable.setBatteryLevel(level);
        mDrawable.setBatteryLevel(level);
        updatePercentText();
        updatePercentText();


        if (newStatusBarIcons()) {
        if (NewStatusBarIcons.isEnabled()) {
            Drawable attr = mUnifiedBatteryState.getAttribution();
            Drawable attr = mUnifiedBatteryState.getAttribution();
            if (isCharging != wasCharging) {
            if (isCharging != wasCharging) {
                attr = getBatteryAttribution(isCharging);
                attr = getBatteryAttribution(isCharging);
@@ -264,7 +264,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
    // Potentially reloads any attribution. Should not be called if the state hasn't changed
    // Potentially reloads any attribution. Should not be called if the state hasn't changed
    @SuppressLint("UseCompatLoadingForDrawables")
    @SuppressLint("UseCompatLoadingForDrawables")
    private Drawable getBatteryAttribution(boolean isCharging) {
    private Drawable getBatteryAttribution(boolean isCharging) {
        if (!newStatusBarIcons()) return null;
        if (!NewStatusBarIcons.isEnabled()) return null;


        int resId = 0;
        int resId = 0;
        if (mPowerSaveEnabled) {
        if (mPowerSaveEnabled) {
@@ -312,7 +312,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
            return;
            return;
        }
        }
        mPowerSaveEnabled = isPowerSave;
        mPowerSaveEnabled = isPowerSave;
        if (!newStatusBarIcons()) {
        if (!NewStatusBarIcons.isEnabled()) {
            mDrawable.setPowerSaveEnabled(isPowerSave);
            mDrawable.setPowerSaveEnabled(isPowerSave);
        } else {
        } else {
            setBatteryDrawableState(
            setBatteryDrawableState(
@@ -335,7 +335,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
        }
        }


        updateContentDescription();
        updateContentDescription();
        if (!newStatusBarIcons()) {
        if (!NewStatusBarIcons.isEnabled()) {
            // The battery drawable is a different size depending on whether it's currently
            // The battery drawable is a different size depending on whether it's currently
            // overheated or not, so we need to re-scale the view when overheated changes.
            // overheated or not, so we need to re-scale the view when overheated changes.
            scaleBatteryMeterViews();
            scaleBatteryMeterViews();
@@ -355,7 +355,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
        boolean valueChanged = mIsIncompatibleCharging != isIncompatibleCharging;
        boolean valueChanged = mIsIncompatibleCharging != isIncompatibleCharging;
        mIsIncompatibleCharging = isIncompatibleCharging;
        mIsIncompatibleCharging = isIncompatibleCharging;
        if (valueChanged) {
        if (valueChanged) {
            if (newStatusBarIcons()) {
            if (NewStatusBarIcons.isEnabled()) {
                setBatteryDrawableState(
                setBatteryDrawableState(
                        new BatteryDrawableState(
                        new BatteryDrawableState(
                                mUnifiedBatteryState.getLevel(),
                                mUnifiedBatteryState.getLevel(),
@@ -410,7 +410,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
    }
    }


    void updatePercentText() {
    void updatePercentText() {
        if (!newStatusBarIcons()) {
        if (!NewStatusBarIcons.isEnabled()) {
            updatePercentTextLegacy();
            updatePercentTextLegacy();
            return;
            return;
        }
        }
@@ -522,7 +522,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
    }
    }


    void updateShowPercent() {
    void updateShowPercent() {
        if (!newStatusBarIcons()) {
        if (!NewStatusBarIcons.isEnabled()) {
            updateShowPercentLegacy();
            updateShowPercentLegacy();
            return;
            return;
        }
        }
@@ -611,7 +611,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
    }
    }


    void scaleBatteryMeterViews() {
    void scaleBatteryMeterViews() {
        if (!newStatusBarIcons()) {
        if (!NewStatusBarIcons.isEnabled()) {
            scaleBatteryMeterViewsLegacy();
            scaleBatteryMeterViewsLegacy();
            return;
            return;
        }
        }
@@ -690,7 +690,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
    public void onDarkChanged(ArrayList<Rect> areas, float darkIntensity, int tint) {
    public void onDarkChanged(ArrayList<Rect> areas, float darkIntensity, int tint) {
        if (mIsStaticColor) return;
        if (mIsStaticColor) return;


        if (!newStatusBarIcons()) {
        if (!NewStatusBarIcons.isEnabled()) {
            onDarkChangedLegacy(areas, darkIntensity, tint);
            onDarkChangedLegacy(areas, darkIntensity, tint);
            return;
            return;
        }
        }
@@ -748,9 +748,9 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
        }
        }
    }
    }


    /** For newStatusBarIcons(), we use a BatteryColors object to declare the theme */
    /** For NewStatusBarIcons, we use a BatteryColors object to declare the theme */
    public void setUnifiedBatteryColors(BatteryColors colors) {
    public void setUnifiedBatteryColors(BatteryColors colors) {
        if (!newStatusBarIcons()) return;
        if (!NewStatusBarIcons.isEnabled()) return;


        mUnifiedBatteryColors = colors;
        mUnifiedBatteryColors = colors;
        mUnifiedBattery.setColors(mUnifiedBatteryColors);
        mUnifiedBattery.setColors(mUnifiedBatteryColors);
@@ -777,7 +777,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
        pw.println("    mPluggedIn: " + mPluggedIn);
        pw.println("    mPluggedIn: " + mPluggedIn);
        pw.println("    mLevel: " + mLevel);
        pw.println("    mLevel: " + mLevel);
        pw.println("    mMode: " + mShowPercentMode);
        pw.println("    mMode: " + mShowPercentMode);
        if (newStatusBarIcons()) {
        if (NewStatusBarIcons.isEnabled()) {
            pw.println("    mUnifiedBatteryState: " + mUnifiedBatteryState);
            pw.println("    mUnifiedBatteryState: " + mUnifiedBatteryState);
        }
        }
    }
    }
+2 −8
Original line number Original line Diff line number Diff line
@@ -22,9 +22,7 @@ import android.util.AttributeSet
import android.view.View
import android.view.View
import android.widget.FrameLayout
import android.widget.FrameLayout
import android.widget.LinearLayout
import android.widget.LinearLayout
import com.android.settingslib.flags.Flags.newStatusBarIcons
import com.android.systemui.battery.BatteryMeterView
import com.android.systemui.battery.BatteryMeterView
import com.android.systemui.battery.unified.BatteryColors
import com.android.systemui.res.R
import com.android.systemui.res.R
import com.android.systemui.statusbar.core.NewStatusBarIcons
import com.android.systemui.statusbar.core.NewStatusBarIcons
import com.android.systemui.statusbar.events.BackgroundAnimatableView
import com.android.systemui.statusbar.events.BackgroundAnimatableView
@@ -44,12 +42,8 @@ class BatteryStatusChip @JvmOverloads constructor(context: Context, attrs: Attri
        roundedContainer = requireViewById(R.id.rounded_container)
        roundedContainer = requireViewById(R.id.rounded_container)
        batteryMeterView = requireViewById(R.id.battery_meter_view)
        batteryMeterView = requireViewById(R.id.battery_meter_view)
        batteryMeterView.setStaticColor(true)
        batteryMeterView.setStaticColor(true)
        if (newStatusBarIcons()) {
            batteryMeterView.setUnifiedBatteryColors(BatteryColors.LightThemeColors)
        } else {
        val primaryColor = context.resources.getColor(android.R.color.black, context.theme)
        val primaryColor = context.resources.getColor(android.R.color.black, context.theme)
        batteryMeterView.updateColors(primaryColor, primaryColor, primaryColor)
        batteryMeterView.updateColors(primaryColor, primaryColor, primaryColor)
        }
        updateResources()
        updateResources()
    }
    }