summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorDavid van Tonder <david.vantonder@gmail.com>2013-06-19 15:42:52 -0700
committerGerrit Code Review <gerrit@cyanogenmod.org>2013-06-19 15:42:52 -0700
commit7acf668f2d1fa5439fd1eb23f749906611af882a (patch)
tree2ca4fe02f5acc6bc6bf86175ef9a0552b18573b1 /packages
parent10d83fd6efc7f4093ec9c61519091534f3e103ab (diff)
parentc8b337f05aa3a5ea2d8867685dd30b4280843533 (diff)
downloadframeworks_base-7acf668f2d1fa5439fd1eb23f749906611af882a.zip
frameworks_base-7acf668f2d1fa5439fd1eb23f749906611af882a.tar.gz
frameworks_base-7acf668f2d1fa5439fd1eb23f749906611af882a.tar.bz2
Merge "Cleanup." into cm-10.1
Diffstat (limited to 'packages')
-rw-r--r--packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java48
-rw-r--r--packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java35
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java192
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleDockBattery.java29
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java6
9 files changed, 132 insertions, 207 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java b/packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java
index 2c9af05..b6b9b32 100644
--- a/packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java
+++ b/packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java
@@ -3,7 +3,7 @@ package com.android.systemui.quicksettings;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
-import android.graphics.drawable.LevelListDrawable;
+import android.os.BatteryManager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
@@ -18,12 +18,9 @@ import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChang
public class BatteryTile extends QuickSettingsTile implements BatteryStateChangeCallback{
private BatteryController mController;
- private boolean charging = false;
- private int batteryLevel = 0;
- private Drawable batteryIcon;
-
- private LevelListDrawable batteryLevels;
- private LevelListDrawable chargingBatteryLevels;
+ private int mBatteryLevel = 0;
+ private int mBatteryStatus;
+ private Drawable mBatteryIcon;
public BatteryTile(Context context, QuickSettingsController qsc, BatteryController controller) {
super(context, qsc, R.layout.quick_settings_tile_battery);
@@ -52,9 +49,9 @@ public class BatteryTile extends QuickSettingsTile implements BatteryStateChange
}
@Override
- public void onBatteryLevelChanged(int level, boolean pluggedIn) {
- batteryLevel = level;
- charging = pluggedIn;
+ public void onBatteryLevelChanged(int level, int status) {
+ mBatteryLevel = level;
+ mBatteryStatus = status;
updateResources();
}
@@ -65,29 +62,30 @@ public class BatteryTile extends QuickSettingsTile implements BatteryStateChange
}
private synchronized void updateTile() {
- batteryLevels = (LevelListDrawable) mContext.getResources().getDrawable(R.drawable.qs_sys_battery);
- chargingBatteryLevels = (LevelListDrawable) mContext.getResources().getDrawable(R.drawable.qs_sys_battery_charging);
- batteryIcon = charging
- ? chargingBatteryLevels :
- batteryLevels;
- if(batteryLevel == 100) {
+ final int drawableResId = mBatteryStatus == BatteryManager.BATTERY_STATUS_CHARGING
+ ? R.drawable.qs_sys_battery_charging : R.drawable.qs_sys_battery;
+
+ mBatteryIcon = mContext.getResources().getDrawable(drawableResId);
+
+ if (mBatteryStatus == BatteryManager.BATTERY_STATUS_FULL) {
mLabel = mContext.getString(R.string.quick_settings_battery_charged_label);
- }else{
- mLabel = charging
- ? mContext.getString(R.string.quick_settings_battery_charging_label,
- batteryLevel)
- : mContext.getString(R.string.status_bar_settings_battery_meter_format,
- batteryLevel);
+ } else if (mBatteryStatus == BatteryManager.BATTERY_STATUS_CHARGING) {
+ mLabel = mContext.getString(R.string.quick_settings_battery_charging_label,
+ mBatteryLevel);
+ } else {
+ mLabel = mContext.getString(R.string.status_bar_settings_battery_meter_format,
+ mBatteryLevel);
}
}
@Override
void updateQuickSettings() {
TextView tv = (TextView) mTile.findViewById(R.id.battery_textview);
- tv.setText(mLabel);
ImageView iv = (ImageView) mTile.findViewById(R.id.battery_image);
- iv.setImageDrawable(batteryIcon);
- iv.setImageLevel(batteryLevel);
+
+ tv.setText(mLabel);
+ iv.setImageDrawable(mBatteryIcon);
+ iv.setImageLevel(mBatteryLevel);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java b/packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java
index 4b09fd7..ce373fb 100644
--- a/packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java
+++ b/packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java
@@ -3,7 +3,7 @@ package com.android.systemui.quicksettings;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
-import android.graphics.drawable.LevelListDrawable;
+import android.os.BatteryManager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
@@ -18,13 +18,10 @@ import com.android.systemui.statusbar.policy.DockBatteryController.DockBatterySt
public class DockBatteryTile extends QuickSettingsTile implements DockBatteryStateChangeCallback {
private DockBatteryController mController;
private boolean mPresent = false;
- private boolean mCharging = false;
private int mDockBatteryLevel = 0;
+ private int mDockBatteryStatus;
private Drawable mDockBatteryIcon;
- private LevelListDrawable mDockBatteryLevels;
- private LevelListDrawable mChargingDockBatteryLevels;
-
public DockBatteryTile(Context context, QuickSettingsController qsc, DockBatteryController controller) {
super(context, qsc, R.layout.quick_settings_tile_dock_battery);
@@ -52,9 +49,9 @@ public class DockBatteryTile extends QuickSettingsTile implements DockBatterySta
}
@Override
- public void onDockBatteryLevelChanged(int level, boolean present, boolean pluggedIn) {
+ public void onDockBatteryLevelChanged(int level, boolean present, int status) {
mDockBatteryLevel = level;
- mCharging = pluggedIn;
+ mDockBatteryStatus = status;
mPresent = present;
updateResources();
}
@@ -66,20 +63,20 @@ public class DockBatteryTile extends QuickSettingsTile implements DockBatterySta
}
private synchronized void updateTile() {
+ int drawableResId = mDockBatteryStatus == BatteryManager.BATTERY_STATUS_CHARGING
+ ? R.drawable.qs_sys_dock_battery_charging : R.drawable.qs_sys_dock_battery;
+
mTile.setVisibility(mPresent ? View.VISIBLE : View.GONE);
- mDockBatteryLevels = (LevelListDrawable) mContext.getResources().getDrawable(R.drawable.qs_sys_dock_battery);
- mChargingDockBatteryLevels = (LevelListDrawable) mContext.getResources().getDrawable(R.drawable.qs_sys_dock_battery_charging);
- mDockBatteryIcon = mCharging
- ? mChargingDockBatteryLevels :
- mDockBatteryLevels;
- if(mDockBatteryLevel == 100) {
+ mDockBatteryIcon = mContext.getResources().getDrawable(drawableResId);
+
+ if (mDockBatteryStatus == BatteryManager.BATTERY_STATUS_FULL) {
mLabel = mContext.getString(R.string.quick_settings_battery_charged_label);
- }else{
- mLabel = mCharging
- ? mContext.getString(R.string.quick_settings_battery_charging_label,
- mDockBatteryLevel)
- : mContext.getString(R.string.status_bar_settings_battery_meter_format,
- mDockBatteryLevel);
+ } else if (mDockBatteryStatus == BatteryManager.BATTERY_STATUS_CHARGING) {
+ mLabel = mContext.getString(R.string.quick_settings_battery_charging_label,
+ mDockBatteryLevel);
+ } else {
+ mLabel = mContext.getString(R.string.status_bar_settings_battery_meter_format,
+ mDockBatteryLevel);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 84578f6..1c21f22 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -98,6 +98,8 @@ import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.SignalClusterView;
import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.policy.BatteryController;
+import com.android.systemui.statusbar.policy.CircleBattery;
+import com.android.systemui.statusbar.policy.CircleDockBattery;
import com.android.systemui.statusbar.policy.DockBatteryController;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.statusbar.policy.DateView;
@@ -607,6 +609,10 @@ public class PhoneStatusBar extends BaseStatusBar {
mBatteryController.addIconView((ImageView)mStatusBarView.findViewById(R.id.battery));
mBatteryController.addLabelView((TextView)mStatusBarView.findViewById(R.id.battery_text));
+ final CircleBattery circleBattery =
+ (CircleBattery) mStatusBarView.findViewById(R.id.circle_battery);
+ mBatteryController.addStateChangedCallback(circleBattery);
+
// Dock Battery support
mHasDockBattery = mContext.getResources().getBoolean(
com.android.internal.R.bool.config_hasDockBattery);
@@ -617,6 +623,12 @@ public class PhoneStatusBar extends BaseStatusBar {
(ImageView)mStatusBarView.findViewById(R.id.dock_battery));
mDockBatteryController.addLabelView(
(TextView)mStatusBarView.findViewById(R.id.dock_battery_text));
+
+ final CircleDockBattery dockCircleBattery =
+ (CircleDockBattery) mStatusBarView.findViewById(R.id.circle_dock_battery);
+ final DockBatteryController.DockBatteryStateChangeCallback callback =
+ (DockBatteryController.DockBatteryStateChangeCallback) dockCircleBattery;
+ mDockBatteryController.addStateChangedCallback(callback);
} else {
// Remove dock battery icons if device doesn't hava dock battery support
View v = mStatusBarView.findViewById(R.id.dock_battery);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java
index 72938c4..5bb5f5f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java
@@ -31,6 +31,7 @@ import android.database.ContentObserver;
import android.graphics.drawable.Drawable;
import android.hardware.display.WifiDisplayStatus;
import android.net.ConnectivityManager;
+import android.os.BatteryManager;
import android.os.Handler;
import android.os.UserHandle;
import android.provider.Settings;
@@ -509,9 +510,9 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
}
// BatteryController callback
@Override
- public void onBatteryLevelChanged(int level, boolean pluggedIn) {
+ public void onBatteryLevelChanged(int level, int status) {
mBatteryState.batteryLevel = level;
- mBatteryState.pluggedIn = pluggedIn;
+ mBatteryState.pluggedIn = status == BatteryManager.BATTERY_STATUS_CHARGING;
mBatteryCallback.refreshView(mBatteryTile, mBatteryState);
}
void refreshBatteryTile() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
index 56cad64..0ed886e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
@@ -86,7 +86,7 @@ public class BatteryController extends BroadcastReceiver {
new ArrayList<BatteryStateChangeCallback>();
public interface BatteryStateChangeCallback {
- public void onBatteryLevelChanged(int level, boolean pluggedIn);
+ public void onBatteryLevelChanged(int level, int status);
}
public BatteryController(Context context) {
@@ -120,7 +120,7 @@ public class BatteryController extends BroadcastReceiver {
public void addStateChangedCallback(BatteryStateChangeCallback cb) {
mChangeCallbacks.add(cb);
// trigger initial update
- cb.onBatteryLevelChanged(getBatteryLevel(), isBatteryStatusCharging());
+ cb.onBatteryLevelChanged(getBatteryLevel(), getBatteryStatus());
}
public void removeStateChangedCallback(BatteryStateChangeCallback cb) {
@@ -209,7 +209,7 @@ public class BatteryController extends BroadcastReceiver {
}
for (BatteryStateChangeCallback cb : mChangeCallbacks) {
- cb.onBatteryLevelChanged(level, isBatteryStatusCharging());
+ cb.onBatteryLevelChanged(level, getBatteryStatus());
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java
index 9aeb200..c4bd4b4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java
@@ -41,28 +41,18 @@ import android.widget.ImageView;
import com.android.internal.R;
-/***
- * Note about CircleBattery Implementation:
- *
- * Unfortunately, we cannot use BatteryController here,
- * since communication between controller and this view is not possible without
- * huge changes. As a result, this Class is doing everything by itself,
- * monitoring battery level and battery settings.
- */
-
-public class CircleBattery extends ImageView {
+public class CircleBattery extends ImageView implements BatteryController.BatteryStateChangeCallback {
private Handler mHandler;
private Context mContext;
- private BatteryReceiver mBatteryReceiver = null;
private SettingsObserver mObserver;
// state variables
private boolean mAttached; // whether or not attached to a window
private boolean mActivated; // whether or not activated due to system settings
private boolean mPercentage; // whether or not to show percentage number
- private boolean mBatteryPlugged;// whether or not battery is currently plugged
private int mBatteryStatus; // current battery status
private int mLevel; // current battery level
+ private int mWarningLevel; // battery level under which circle should become red
private int mAnimOffset; // current level of charging animation
private boolean mIsAnimating; // stores charge-animation status to reliably remove callbacks
@@ -73,7 +63,7 @@ public class CircleBattery extends ImageView {
private Float mTextLeftX; // precalculated x position for drawText() to appear centered
private Float mTextY; // precalculated y position for drawText() to appear vertical-centered
- // quiet a lot of paint variables. helps to move cpu-usage from actual drawing to initialization
+ // quite a lot of paint variables. helps to move cpu-usage from actual drawing to initialization
private Paint mPaintFont;
private Paint mPaintGray;
private Paint mPaintSystem;
@@ -82,7 +72,7 @@ public class CircleBattery extends ImageView {
// runnable to invalidate view via mHandler.postDelayed() call
private final Runnable mInvalidate = new Runnable() {
public void run() {
- if(mActivated && mAttached) {
+ if (mActivated && mAttached) {
invalidate();
}
}
@@ -107,74 +97,14 @@ public class CircleBattery extends ImageView {
@Override
public void onChange(boolean selfChange) {
- int batteryStyle = (Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.STATUS_BAR_BATTERY, 0));
+ int batteryStyle = Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.STATUS_BAR_BATTERY, 0);
- mActivated = (batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE || batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE_PERCENT);
+ mActivated = (batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE
+ || batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE_PERCENT);
mPercentage = (batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE_PERCENT);
- setVisibility(mActivated && isBatteryPresent() ? View.VISIBLE : View.GONE);
- if (mBatteryReceiver != null) {
- mBatteryReceiver.updateRegistration();
- }
-
- if (mActivated && mAttached) {
- invalidate();
- }
- }
- }
-
- // keeps track of current battery level and charger-plugged-state
- class BatteryReceiver extends BroadcastReceiver {
- private boolean mIsRegistered = false;
-
- public BatteryReceiver(Context context) {
- }
-
- @Override
- public void onReceive(Context context, Intent intent) {
- final String action = intent.getAction();
- if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
- onBatteryStatusChange(intent);
-
- int visibility = mActivated && isBatteryPresent() ? View.VISIBLE : View.GONE;
- if (getVisibility() != visibility) {
- setVisibility(visibility);
- }
-
- if (mActivated && mAttached) {
- LayoutParams l = getLayoutParams();
- l.width = mCircleSize + getPaddingLeft();
- setLayoutParams(l);
-
- invalidate();
- }
- }
- }
-
- private void registerSelf() {
- if (!mIsRegistered) {
- mIsRegistered = true;
-
- IntentFilter filter = new IntentFilter();
- filter.addAction(Intent.ACTION_BATTERY_CHANGED);
- mContext.registerReceiver(mBatteryReceiver, filter);
- }
- }
-
- private void unregisterSelf() {
- if (mIsRegistered) {
- mIsRegistered = false;
- mContext.unregisterReceiver(this);
- }
- }
-
- private void updateRegistration() {
- if (mActivated && mAttached) {
- registerSelf();
- } else {
- unregisterSelf();
- }
+ updateVisibility();
}
}
@@ -196,7 +126,6 @@ public class CircleBattery extends ImageView {
mHandler = new Handler();
mObserver = new SettingsObserver(mHandler);
- mBatteryReceiver = new BatteryReceiver(mContext);
// initialize and setup all paint variables
// stroke width is later set in initSizeBasedStuff()
@@ -225,38 +154,8 @@ public class CircleBattery extends ImageView {
// font needs some extra settings
mPaintFont.setTextAlign(Align.CENTER);
mPaintFont.setFakeBoldText(true);
- }
-
- protected int getLevel() {
- return mLevel;
- }
-
- protected int getBatteryStatus() {
- return mBatteryStatus;
- }
- protected boolean isBatteryPlugged() {
- return mBatteryPlugged;
- }
-
- protected boolean isBatteryPresent() {
- // the battery widget always is shown.
- return true;
- }
-
- private boolean isBatteryStatusUnknown() {
- return getBatteryStatus() == BatteryManager.BATTERY_STATUS_UNKNOWN;
- }
-
- private boolean isBatteryStatusCharging() {
- return getBatteryStatus() == BatteryManager.BATTERY_STATUS_CHARGING;
- }
-
- protected void onBatteryStatusChange(Intent intent) {
- mLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
- mBatteryPlugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0;
- mBatteryStatus = intent.getIntExtra(BatteryManager.EXTRA_STATUS,
- BatteryManager.BATTERY_STATUS_UNKNOWN);
+ mWarningLevel = context.getResources().getInteger(R.integer.config_lowBatteryWarningLevel);
}
@Override
@@ -265,7 +164,6 @@ public class CircleBattery extends ImageView {
if (!mAttached) {
mAttached = true;
mObserver.observe();
- mBatteryReceiver.updateRegistration();
mHandler.postDelayed(mInvalidate, 250);
}
}
@@ -276,7 +174,6 @@ public class CircleBattery extends ImageView {
if (mAttached) {
mAttached = false;
mObserver.unobserve();
- mBatteryReceiver.updateRegistration();
mRectLeft = null; // makes sure, size based variables get
// recalculated on next attach
mCircleSize = 0; // makes sure, mCircleSize is reread from icons on
@@ -285,6 +182,21 @@ public class CircleBattery extends ImageView {
}
@Override
+ public void onBatteryLevelChanged(int level, int status) {
+ mLevel = level;
+ mBatteryStatus = status;
+ updateVisibility();
+ }
+
+ protected void updateVisibility() {
+ setVisibility(mActivated && isBatteryPresent() ? View.VISIBLE : View.GONE);
+
+ if (mActivated && mAttached) {
+ invalidate();
+ }
+ }
+
+ @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mCircleSize == 0) {
initSizeMeasureIconHeight();
@@ -293,38 +205,43 @@ public class CircleBattery extends ImageView {
setMeasuredDimension(mCircleSize + getPaddingLeft(), mCircleSize);
}
+ protected int getBatteryLevel() {
+ return mLevel;
+ }
+
+ protected int getBatteryStatus() {
+ return mBatteryStatus;
+ }
+
+ protected boolean isBatteryPresent() {
+ return true;
+ }
+
protected void drawCircle(Canvas canvas, int level, int animOffset, float textX, RectF drawRect) {
Paint usePaint = mPaintSystem;
- int internalLevel = level;
- boolean unknownStatus = isBatteryStatusUnknown();
- // turn red at 14% - same level android battery warning appears
+ boolean unknownStatus = getBatteryStatus() == BatteryManager.BATTERY_STATUS_UNKNOWN;
+
if (unknownStatus) {
usePaint = mPaintGray;
- internalLevel = 100; // Draw all the circle;
- } else if (internalLevel <= 14) {
+ level = 100; // Draw all the circle;
+ } else if (level < mWarningLevel) {
usePaint = mPaintRed;
- }
-
- // pad circle percentage to 100% once it reaches 97%
- // for one, the circle looks odd with a too small gap,
- // for another, some phones never reach 100% due to hardware design
- int padLevel = internalLevel;
- if (padLevel >= 97) {
- padLevel = 100;
+ } else if (getBatteryStatus() == BatteryManager.BATTERY_STATUS_FULL) {
+ level = 100;
}
// draw thin gray ring first
canvas.drawArc(drawRect, 270, 360, false, mPaintGray);
// draw colored arc representing charge level
- canvas.drawArc(drawRect, 270 + animOffset, 3.6f * padLevel, false, usePaint);
+ canvas.drawArc(drawRect, 270 + animOffset, 3.6f * level, false, usePaint);
// if chosen by options, draw percentage text in the middle
// always skip percentage when 100, so layout doesnt break
if (unknownStatus) {
mPaintFont.setColor(usePaint.getColor());
canvas.drawText("?", textX, mTextY, mPaintFont);
- } else if (internalLevel < 100 && mPercentage) {
+ } else if (level < 100 && mPercentage) {
mPaintFont.setColor(usePaint.getColor());
- canvas.drawText(Integer.toString(internalLevel), textX, mTextY, mPaintFont);
+ canvas.drawText(Integer.toString(level), textX, mTextY, mPaintFont);
}
}
@@ -337,18 +254,19 @@ public class CircleBattery extends ImageView {
updateChargeAnim();
- drawCircle(canvas,
- getLevel(),
- (isBatteryStatusCharging() ? mAnimOffset : 0), mTextLeftX, mRectLeft);
+ boolean charging = getBatteryStatus() == BatteryManager.BATTERY_STATUS_CHARGING;
+ int offset = charging ? mAnimOffset : 0;
+
+ drawCircle(canvas, getBatteryLevel(), offset, mTextLeftX, mRectLeft);
}
- /***
+ /**
* updates the animation counter
* cares for timed callbacks to continue animation cycles
* uses mInvalidate for delayed invalidate() callbacks
*/
private void updateChargeAnim() {
- if (!isBatteryStatusCharging() || getLevel() >= 97) {
+ if (getBatteryStatus() != BatteryManager.BATTERY_STATUS_CHARGING) {
if (mIsAnimating) {
mIsAnimating = false;
mAnimOffset = 0;
@@ -369,7 +287,7 @@ public class CircleBattery extends ImageView {
mHandler.postDelayed(mInvalidate, 50);
}
- /***
+ /**
* initializes all size dependent variables
* sets stroke width and text size of all involved paints
* YES! i think the method name is appropriate
@@ -402,11 +320,11 @@ public class CircleBattery extends ImageView {
onMeasure(0, 0);
}
- /***
+ /**
* we need to measure the size of the circle battery by checking another
* resource. unfortunately, those resources have transparent/empty borders
* so we have to count the used pixel manually and deduct the size from
- * it. quiet complicated, but the only way to fit properly into the
+ * it. Quite complicated, but the only way to fit properly into the
* statusbar for all resolutions
*/
private void initSizeMeasureIconHeight() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleDockBattery.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleDockBattery.java
index dba10b8..b0fe80a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleDockBattery.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleDockBattery.java
@@ -34,11 +34,11 @@ import com.android.systemui.R;
* @see CircleBattery
*/
-public class CircleDockBattery extends CircleBattery {
+public class CircleDockBattery extends CircleBattery
+ implements DockBatteryController.DockBatteryStateChangeCallback {
private int mLevel;
private int mDockBatteryStatus = BatteryManager.BATTERY_STATUS_UNKNOWN;
- private boolean mBatteryPlugged = false;
private boolean mBatteryPresent = false;
private final Context mContext;
@@ -94,18 +94,21 @@ public class CircleDockBattery extends CircleBattery {
}
@Override
- protected int getLevel() {
- return mLevel;
+ public void onDockBatteryLevelChanged(int level, boolean present, int status) {
+ mLevel = level;
+ mBatteryPresent = present;
+ mDockBatteryStatus = status;
+ updateVisibility();
}
@Override
- protected int getBatteryStatus() {
- return mDockBatteryStatus;
+ protected int getBatteryLevel() {
+ return mLevel;
}
@Override
- protected boolean isBatteryPlugged() {
- return mBatteryPlugged;
+ protected int getBatteryStatus() {
+ return mDockBatteryStatus;
}
@Override
@@ -114,16 +117,6 @@ public class CircleDockBattery extends CircleBattery {
}
@Override
- protected void onBatteryStatusChange(Intent intent) {
- mLevel = 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);
- }
-
- @Override
protected void drawCircle(Canvas canvas, int level, int animOffset, float textX, RectF drawRect) {
super.drawCircle(canvas, level, animOffset, textX, drawRect);
if (mDockIcon != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java
index cde5e2c..265dfd2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java
@@ -62,7 +62,7 @@ public class DockBatteryController extends BatteryController {
}
for (DockBatteryStateChangeCallback cb : mChangeCallbacks) {
- cb.onDockBatteryLevelChanged(getBatteryLevel(), isBatteryPresent(), isBatteryStatusCharging());
+ cb.onDockBatteryLevelChanged(getBatteryLevel(), isBatteryPresent(), getBatteryStatus());
}
}
@@ -70,13 +70,13 @@ public class DockBatteryController extends BatteryController {
new ArrayList<DockBatteryStateChangeCallback>();
public interface DockBatteryStateChangeCallback {
- public void onDockBatteryLevelChanged(int level, boolean present, boolean pluggedIn);
+ public void onDockBatteryLevelChanged(int level, boolean present, int status);
}
public void addStateChangedCallback(DockBatteryStateChangeCallback cb) {
mChangeCallbacks.add(cb);
// trigger initial update
- cb.onDockBatteryLevelChanged(getBatteryLevel(), isBatteryPresent(), isBatteryStatusCharging());
+ cb.onDockBatteryLevelChanged(getBatteryLevel(), isBatteryPresent(), getBatteryStatus());
}
public void removeStateChangedCallback(DockBatteryStateChangeCallback cb) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
index 3e7aa3a..5d37af2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -75,6 +75,7 @@ import com.android.systemui.statusbar.SignalClusterView;
import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BluetoothController;
+import com.android.systemui.statusbar.policy.CircleBattery;
import com.android.systemui.statusbar.policy.CompatModeButton;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.NetworkController;
@@ -549,6 +550,11 @@ public class TabletStatusBar extends BaseStatusBar implements
mBatteryController = new BatteryController(mContext);
mBatteryController.addIconView((ImageView)sb.findViewById(R.id.battery));
+
+ final CircleBattery circleBattery =
+ (CircleBattery) sb.findViewById(R.id.circle_battery);
+ mBatteryController.addStateChangedCallback(circleBattery);
+
mBluetoothController = new BluetoothController(mContext);
mBluetoothController.addIconView((ImageView)sb.findViewById(R.id.bluetooth));