From 708f7721e910d2c1fe984d2b8a6bf10565a00a61 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Wed, 20 Aug 2014 17:30:38 +0200 Subject: [PATCH] Remove battery color when in power save Also changes to color to our consistent warning color. Bug: 16849393 Change-Id: I71737c1b7c18af569b5f4e957b006db579266cd1 --- packages/SystemUI/res/values/arrays.xml | 2 +- .../android/systemui/BatteryMeterView.java | 31 ++++++++++++++++++- .../phone/KeyguardStatusBarView.java | 2 ++ .../statusbar/phone/PhoneStatusBar.java | 3 ++ 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/res/values/arrays.xml b/packages/SystemUI/res/values/arrays.xml index 630a48de0d936..6102aa6e1a976 100644 --- a/packages/SystemUI/res/values/arrays.xml +++ b/packages/SystemUI/res/values/arrays.xml @@ -25,7 +25,7 @@ 100 - #FFFF3300 + @*android:color/battery_saver_mode_color #FFFFFFFF diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java index b9ffdbb929e15..5e2f784ec96ca 100755 --- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java +++ b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java @@ -33,7 +33,10 @@ import android.provider.Settings; import android.util.AttributeSet; import android.view.View; -public class BatteryMeterView extends View implements DemoMode { +import com.android.systemui.statusbar.policy.BatteryController; + +public class BatteryMeterView extends View implements DemoMode, + BatteryController.BatteryStateChangeCallback { public static final String TAG = BatteryMeterView.class.getSimpleName(); public static final String ACTION_LEVEL_TEST = "com.android.systemui.BATTERY_LEVEL_TEST"; @@ -68,6 +71,9 @@ public class BatteryMeterView extends View implements DemoMode { private final Path mClipPath = new Path(); private final Path mTextPath = new Path(); + private BatteryController mBatteryController; + private boolean mPowerSaveEnabled; + private class BatteryTracker extends BroadcastReceiver { public static final int UNKNOWN_LEVEL = -1; @@ -155,6 +161,7 @@ public class BatteryMeterView extends View implements DemoMode { // preload the battery level mTracker.onReceive(getContext(), sticky); } + mBatteryController.addStateChangedCallback(this); } @Override @@ -162,6 +169,7 @@ public class BatteryMeterView extends View implements DemoMode { super.onDetachedFromWindow(); getContext().unregisterReceiver(mTracker); + mBatteryController.removeStateChangedCallback(this); } public BatteryMeterView(Context context) { @@ -227,6 +235,22 @@ public class BatteryMeterView extends View implements DemoMode { mBoltPoints = loadBoltPoints(res); } + public void setBatteryController(BatteryController batteryController) { + mBatteryController = batteryController; + mPowerSaveEnabled = mBatteryController.isPowerSave(); + } + + @Override + public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) { + // TODO: Use this callback instead of own broadcast receiver. + } + + @Override + public void onPowerSaveChanged() { + mPowerSaveEnabled = mBatteryController.isPowerSave(); + invalidate(); + } + private static float[] loadBoltPoints(Resources res) { final int[] pts = res.getIntArray(R.array.batterymeter_bolt_points); int maxX = 0, maxY = 0; @@ -251,6 +275,11 @@ public class BatteryMeterView extends View implements DemoMode { } private int getColorForLevel(int percent) { + + // If we are in power save mode, always use the normal color. + if (mPowerSaveEnabled) { + return mColors[mColors.length-1]; + } int thresh, color = 0; for (int i=0; i