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

Commit 78025ceb authored by Danesh Mondegarian's avatar Danesh Mondegarian Committed by Danny Baumann
Browse files

QuickSettings : Battery initial status

Battery tile upon being added relies on a battery level changed call
to update its status. Thus if upon adding, the battery level is not changing
or till the period when it updates, the tile shows an unknown state.

This patchset resolves this issue by making the controller store its last received value
and distributing it to the tiles when they register for changes.

https://jira.cyanogenmod.org/browse/CYAN-1374

Change-Id: Ia2e887e545430ed02c179a3c8f4b7e269a4817c8
parent 44d22ba5
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ public class BatteryController extends BroadcastReceiver {

    private boolean mBatteryPlugged = false;
    private int mBatteryStatus = BatteryManager.BATTERY_STATUS_UNKNOWN;
    private int mBatteryLevel = 0;
    private int mBatteryStyle;

    Handler mHandler;
@@ -118,6 +119,8 @@ public class BatteryController extends BroadcastReceiver {

    public void addStateChangedCallback(BatteryStateChangeCallback cb) {
        mChangeCallbacks.add(cb);
        // trigger initial update
        cb.onBatteryLevelChanged(mBatteryLevel, isBatteryStatusCharging());
    }

    public void removeStateChangedCallback(BatteryStateChangeCallback cb) {
@@ -173,36 +176,36 @@ public class BatteryController extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        final String action = intent.getAction();
        if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
            final int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
            mBatteryLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
            mBatteryPlugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0;
            mBatteryStatus = intent.getIntExtra(BatteryManager.EXTRA_STATUS,
                                                BatteryManager.BATTERY_STATUS_UNKNOWN);
            updateViews(level);
            updateViews();
            if (mUiController) {
                updateBattery();
            }
        }
    }

    protected void updateViews(int level) {
    protected void updateViews() {
        if (mUiController) {
            int N = mIconViews.size();
            for (int i=0; i<N; i++) {
                ImageView v = mIconViews.get(i);
                v.setImageLevel(level);
                v.setImageLevel(mBatteryLevel);
                v.setContentDescription(mContext.getString(R.string.accessibility_battery_level,
                        level));
                        mBatteryLevel));
            }
            N = mLabelViews.size();
            for (int i=0; i<N; i++) {
                TextView v = mLabelViews.get(i);
                v.setText(mContext.getString(BATTERY_TEXT_STYLE_MIN,
                        level));
                        mBatteryLevel));
            }
        }

        for (BatteryStateChangeCallback cb : mChangeCallbacks) {
            cb.onBatteryLevelChanged(level, isBatteryStatusCharging());
            cb.onBatteryLevelChanged(mBatteryLevel, isBatteryStatusCharging());
        }
    }

+8 −5
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ public class DockBatteryController extends BatteryController {
    private static final String TAG = "StatusBar.DockBatteryController";

    private int mDockBatteryStatus = BatteryManager.BATTERY_STATUS_UNKNOWN;
    private int mBatteryLevel = 0;
    private boolean mBatteryPlugged = false;
    private boolean mBatteryPresent = false;

@@ -43,25 +44,25 @@ public class DockBatteryController extends BatteryController {
    public void onReceive(Context context, Intent intent) {
        final String action = intent.getAction();
        if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
            final int level = intent.getIntExtra(BatteryManager.EXTRA_DOCK_LEVEL, 0);
            mBatteryLevel = intent.getIntExtra(BatteryManager.EXTRA_DOCK_LEVEL, 0);
            mDockBatteryStatus = intent.getIntExtra(
                                        BatteryManager.EXTRA_DOCK_STATUS,
                                        BatteryManager.BATTERY_STATUS_UNKNOWN);
            mBatteryPlugged = intent.getIntExtra(BatteryManager.EXTRA_DOCK_PLUGGED, 0) != 0;
            mBatteryPresent = intent.getBooleanExtra(BatteryManager.EXTRA_DOCK_PRESENT, false);
            updateViews(level);
            updateViews();
            updateBattery();
        }
    }

    @Override
    protected void updateViews(int level) {
    protected void updateViews() {
        if (isUiController()) {
            super.updateViews(level);
            super.updateViews();
        }

        for (DockBatteryStateChangeCallback cb : mChangeCallbacks) {
            cb.onDockBatteryLevelChanged(level, isBatteryPresent(), isBatteryStatusCharging());
            cb.onDockBatteryLevelChanged(mBatteryLevel, isBatteryPresent(), isBatteryStatusCharging());
        }
    }

@@ -74,6 +75,8 @@ public class DockBatteryController extends BatteryController {

    public void addStateChangedCallback(DockBatteryStateChangeCallback cb) {
        mChangeCallbacks.add(cb);
        // trigger initial update
        cb.onDockBatteryLevelChanged(mBatteryLevel, isBatteryPresent(), isBatteryStatusCharging());
    }

    public void removeStateChangedCallback(DockBatteryStateChangeCallback cb) {