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

Commit 8e516c17 authored by Jay Wang's avatar Jay Wang Committed by Android (Google) Code Review
Browse files

Merge "Update battery icon for incompatible charging" into udc-qpr-dev

parents f86743bf 33f1cd66
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -178,6 +178,11 @@ class AccessorizedBatteryDrawable(
        mainBatteryDrawable.charging = charging
    }

    /** Returns whether the battery is currently charging. */
    fun getCharging(): Boolean {
        return mainBatteryDrawable.charging
    }

    /** Sets the current level (out of 100) of the battery. */
    fun setBatteryLevel(level: Int) {
        mainBatteryDrawable.setBatteryLevel(level)
+24 −6
Original line number Diff line number Diff line
@@ -77,8 +77,9 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
    private int mShowPercentMode = MODE_DEFAULT;
    private boolean mShowPercentAvailable;
    private String mEstimateText = null;
    private boolean mCharging;
    private boolean mPluggedIn;
    private boolean mIsBatteryDefender;
    private boolean mIsIncompatibleCharging;
    private boolean mDisplayShieldEnabled;
    // Error state where we know nothing about the current battery state
    private boolean mBatteryStateUnknown;
@@ -202,10 +203,10 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
     * @param pluggedIn whether the device is plugged in or not
     */
    public void onBatteryLevelChanged(@IntRange(from = 0, to = 100) int level, boolean pluggedIn) {
        mDrawable.setCharging(pluggedIn);
        mDrawable.setBatteryLevel(level);
        mCharging = pluggedIn;
        mPluggedIn = pluggedIn;
        mLevel = level;
        mDrawable.setCharging(isCharging());
        mDrawable.setBatteryLevel(level);
        updatePercentText();
    }

@@ -224,6 +225,15 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
        }
    }

    void onIsIncompatibleChargingChanged(boolean isIncompatibleCharging) {
        boolean valueChanged = mIsIncompatibleCharging != isIncompatibleCharging;
        mIsIncompatibleCharging = isIncompatibleCharging;
        if (valueChanged) {
            mDrawable.setCharging(isCharging());
            updateContentDescription();
        }
    }

    private TextView loadPercentView() {
        return (TextView) LayoutInflater.from(getContext())
                .inflate(R.layout.battery_percentage_view, null);
@@ -263,7 +273,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
        }

        if (mBatteryPercentView != null) {
            if (mShowPercentMode == MODE_ESTIMATE && !mCharging) {
            if (mShowPercentMode == MODE_ESTIMATE && !isCharging()) {
                mBatteryEstimateFetcher.fetchBatteryTimeRemainingEstimate(
                        (String estimate) -> {
                    if (mBatteryPercentView == null) {
@@ -316,7 +326,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
        } else if (mIsBatteryDefender) {
            contentDescription =
                    context.getString(R.string.accessibility_battery_level_charging_paused, mLevel);
        } else if (mCharging) {
        } else if (isCharging()) {
            contentDescription =
                    context.getString(R.string.accessibility_battery_level_charging, mLevel);
        } else {
@@ -462,16 +472,24 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
        }
    }

    private boolean isCharging() {
        return mPluggedIn && !mIsIncompatibleCharging;
    }

    public void dump(PrintWriter pw, String[] args) {
        String powerSave = mDrawable == null ? null : mDrawable.getPowerSaveEnabled() + "";
        String displayShield = mDrawable == null ? null : mDrawable.getDisplayShield() + "";
        String charging = mDrawable == null ? null : mDrawable.getCharging() + "";
        CharSequence percent = mBatteryPercentView == null ? null : mBatteryPercentView.getText();
        pw.println("  BatteryMeterView:");
        pw.println("    mDrawable.getPowerSave: " + powerSave);
        pw.println("    mDrawable.getDisplayShield: " + displayShield);
        pw.println("    mDrawable.getCharging: " + charging);
        pw.println("    mBatteryPercentView.getText(): " + percent);
        pw.println("    mTextColor: #" + Integer.toHexString(mTextColor));
        pw.println("    mBatteryStateUnknown: " + mBatteryStateUnknown);
        pw.println("    mIsIncompatibleCharging: " + mIsIncompatibleCharging);
        pw.println("    mPluggedIn: " + mPluggedIn);
        pw.println("    mLevel: " + mLevel);
        pw.println("    mMode: " + mShowPercentMode);
    }
+12 −0
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ import androidx.annotation.NonNull;

import com.android.systemui.R;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarLocation;
@@ -50,6 +52,7 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView>
    private final TunerService mTunerService;
    private final Handler mMainHandler;
    private final ContentResolver mContentResolver;
    private final FeatureFlags mFeatureFlags;
    private final BatteryController mBatteryController;

    private final String mSlotBattery;
@@ -98,6 +101,13 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView>
                    mView.onIsBatteryDefenderChanged(isBatteryDefender);
                }

                @Override
                public void onIsIncompatibleChargingChanged(boolean isIncompatibleCharging) {
                    if (mFeatureFlags.isEnabled(Flags.INCOMPATIBLE_CHARGING_BATTERY_ICON)) {
                        mView.onIsIncompatibleChargingChanged(isIncompatibleCharging);
                    }
                }

                @Override
                public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
                    pw.print(super.toString());
@@ -129,6 +139,7 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView>
            TunerService tunerService,
            @Main Handler mainHandler,
            ContentResolver contentResolver,
            FeatureFlags featureFlags,
            BatteryController batteryController) {
        super(view);
        mLocation = location;
@@ -137,6 +148,7 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView>
        mTunerService = tunerService;
        mMainHandler = mainHandler;
        mContentResolver = contentResolver;
        mFeatureFlags = featureFlags;
        mBatteryController = batteryController;

        mView.setBatteryEstimateFetcher(mBatteryController::getEstimatedTimeRemainingString);
+2 −0
Original line number Diff line number Diff line
@@ -273,6 +273,7 @@ abstract class ShadeViewProviderModule {
            tunerService: TunerService,
            @Main mainHandler: Handler,
            contentResolver: ContentResolver,
            featureFlags: FeatureFlags,
            batteryController: BatteryController,
        ): BatteryMeterViewController {
            return BatteryMeterViewController(
@@ -283,6 +284,7 @@ abstract class ShadeViewProviderModule {
                tunerService,
                mainHandler,
                contentResolver,
                featureFlags,
                batteryController,
            )
        }
+3 −0
Original line number Diff line number Diff line
@@ -162,6 +162,9 @@ public interface BatteryController extends DemoMode,
        default void onIsBatteryDefenderChanged(boolean isBatteryDefender) {
        }

        default void onIsIncompatibleChargingChanged(boolean isIncompatibleCharging) {
        }

        @Override
        default void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
            pw.println(this);
Loading