summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI/src')
-rw-r--r--packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java91
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java20
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java53
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessController.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java30
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java1
8 files changed, 180 insertions, 23 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java b/packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java
index 3c3e206..06aad14 100644
--- a/packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java
+++ b/packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java
@@ -41,7 +41,7 @@ public class BatteryTile extends QuickSettingsTile implements BatteryStateChange
@Override
void onPostCreate() {
updateTile();
- BatteryController controller = new BatteryController(mContext);
+ BatteryController controller = new BatteryController(mContext, false);
controller.addStateChangedCallback(this);
super.onPostCreate();
}
diff --git a/packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java b/packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java
new file mode 100644
index 0000000..9367fcb
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java
@@ -0,0 +1,91 @@
+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.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.systemui.R;
+import com.android.systemui.statusbar.phone.QuickSettingsContainerView;
+import com.android.systemui.statusbar.phone.QuickSettingsController;
+import com.android.systemui.statusbar.policy.DockBatteryController;
+import com.android.systemui.statusbar.policy.DockBatteryController.DockBatteryStateChangeCallback;
+
+public class DockBatteryTile extends QuickSettingsTile implements DockBatteryStateChangeCallback {
+
+ private boolean mPresent = false;
+ private boolean mCharging = false;
+ private int mDockBatteryLevel = 0;
+ private Drawable mDockBatteryIcon;
+
+ private LevelListDrawable mDockBatteryLevels;
+ private LevelListDrawable mChargingDockBatteryLevels;
+
+ public DockBatteryTile(Context context, LayoutInflater inflater,
+ QuickSettingsContainerView container, QuickSettingsController qsc) {
+ super(context, inflater, container, qsc);
+
+ mTileLayout = R.layout.quick_settings_tile_dock_battery;
+
+ mOnClick = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ startSettingsActivity(Intent.ACTION_POWER_USAGE_SUMMARY);
+ }
+ };
+ }
+
+ @Override
+ void onPostCreate() {
+ updateTile();
+ DockBatteryController controller = new DockBatteryController(mContext);
+ controller.addStateChangedCallback(this);
+ super.onPostCreate();
+ }
+
+ @Override
+ public void onDockBatteryLevelChanged(int level, boolean present, boolean pluggedIn) {
+ mDockBatteryLevel = level;
+ mCharging = pluggedIn;
+ mPresent = present;
+ updateResources();
+ }
+
+ @Override
+ public void updateResources() {
+ updateTile();
+ super.updateResources();
+ }
+
+ private synchronized void updateTile() {
+ 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) {
+ 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);
+ }
+ }
+
+ @Override
+ void updateQuickSettings() {
+ TextView tv = (TextView) mTile.findViewById(R.id.dock_battery_textview);
+ tv.setText(mLabel);
+ ImageView iv = (ImageView) mTile.findViewById(R.id.dock_battery_image);
+ iv.setImageDrawable(mDockBatteryIcon);
+ iv.setImageLevel(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 ee5bae0..a620f61 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -2960,6 +2960,10 @@ public class PhoneStatusBar extends BaseStatusBar {
false, this);
cr.registerContentObserver(
+ Settings.System.getUriFor(Settings.System.QS_DYNAMIC_DOCK_BATTERY),
+ false, this);
+
+ cr.registerContentObserver(
Settings.System.getUriFor(Settings.System.QS_DYNAMIC_IME),
false, this);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java
index 782af23..16d087f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java
@@ -43,6 +43,7 @@ import static com.android.internal.util.cm.QSConstants.TILE_WIFI;
import static com.android.internal.util.cm.QSConstants.TILE_WIFIAP;
import static com.android.internal.util.cm.QSConstants.TILE_WIMAX;
import static com.android.internal.util.cm.QSUtils.deviceSupportsBluetooth;
+import static com.android.internal.util.cm.QSUtils.deviceSupportsDockBattery;
import static com.android.internal.util.cm.QSUtils.deviceSupportsImeSwitcher;
import static com.android.internal.util.cm.QSUtils.deviceSupportsTelephony;
import static com.android.internal.util.cm.QSUtils.deviceSupportsUsbTether;
@@ -69,6 +70,7 @@ import com.android.systemui.quicksettings.BatteryTile;
import com.android.systemui.quicksettings.BluetoothTile;
import com.android.systemui.quicksettings.BrightnessTile;
import com.android.systemui.quicksettings.BugReportTile;
+import com.android.systemui.quicksettings.DockBatteryTile;
import com.android.systemui.quicksettings.GPSTile;
import com.android.systemui.quicksettings.InputMethodTile;
import com.android.systemui.quicksettings.LteTile;
@@ -159,6 +161,7 @@ public class QuickSettingsController {
Log.i(TAG, "Tiles list: " + tiles);
// Split out the tile names and add to the list
+ boolean dockBatteryLoaded = false;
for (String tile : tiles.split("\\|")) {
QuickSettingsTile qs = null;
if (tile.equals(TILE_USER)) {
@@ -215,6 +218,12 @@ public class QuickSettingsController {
if (qs != null) {
qs.setupQuickSettingsTile();
mQuickSettingsTiles.add(qs);
+
+ // Add dock battery beside main battery when possible
+ if (qs instanceof BatteryTile) {
+ loadDockBatteryTile(resolver, inflater);
+ dockBatteryLoaded = true;
+ }
}
}
@@ -231,6 +240,9 @@ public class QuickSettingsController {
qs.setupQuickSettingsTile();
mQuickSettingsTiles.add(qs);
}
+ if (!dockBatteryLoaded) {
+ loadDockBatteryTile(resolver, inflater);
+ }
if (Settings.System.getInt(resolver, Settings.System.QS_DYNAMIC_WIFI, 1) == 1) {
QuickSettingsTile qs = new WiFiDisplayTile(mContext, inflater, mContainerView, this);
qs.setupQuickSettingsTile();
@@ -248,6 +260,14 @@ public class QuickSettingsController {
}
}
+ private void loadDockBatteryTile(final ContentResolver resolver, final LayoutInflater inflater) {
+ if (deviceSupportsDockBattery(mContext) && Settings.System.getInt(resolver, Settings.System.QS_DYNAMIC_DOCK_BATTERY, 1) == 1) {
+ QuickSettingsTile qs = new DockBatteryTile(mContext, inflater, mContainerView, this);
+ qs.setupQuickSettingsTile();
+ mQuickSettingsTiles.add(qs);
+ }
+ }
+
protected void setupQuickSettings() {
mQuickSettingsTiles.clear();
mContainerView.removeAllViews();
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 95fede4..a2b425b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
@@ -63,6 +63,8 @@ public class BatteryController extends BroadcastReceiver {
Handler mHandler;
+ private final boolean mUiController;
+
class SettingsObserver extends ContentObserver {
SettingsObserver(Handler handler) {
super(handler);
@@ -87,12 +89,19 @@ public class BatteryController extends BroadcastReceiver {
}
public BatteryController(Context context) {
+ this(context, true);
+ }
+
+ public BatteryController(Context context, boolean ui) {
mContext = context;
mHandler = new Handler();
+ mUiController = ui;
- SettingsObserver settingsObserver = new SettingsObserver(mHandler);
- settingsObserver.observe();
- updateSettings();
+ if (mUiController) {
+ SettingsObserver settingsObserver = new SettingsObserver(mHandler);
+ settingsObserver.observe();
+ updateSettings();
+ }
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
@@ -145,14 +154,18 @@ public class BatteryController extends BroadcastReceiver {
return true;
}
- private boolean isBatteryStatusUnknown() {
+ protected boolean isBatteryStatusUnknown() {
return getBatteryStatus() == BatteryManager.BATTERY_STATUS_UNKNOWN;
}
- private boolean isBatteryStatusCharging() {
+ protected boolean isBatteryStatusCharging() {
return getBatteryStatus() == BatteryManager.BATTERY_STATUS_CHARGING;
}
+ protected boolean isUiController() {
+ return mUiController;
+ }
+
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
@@ -161,23 +174,27 @@ public class BatteryController extends BroadcastReceiver {
mBatteryStatus = intent.getIntExtra(BatteryManager.EXTRA_STATUS,
BatteryManager.BATTERY_STATUS_UNKNOWN);
updateViews(level);
- updateBattery();
+ if (mUiController) {
+ updateBattery();
+ }
}
}
protected void updateViews(int level) {
- int N = mIconViews.size();
- for (int i=0; i<N; i++) {
- ImageView v = mIconViews.get(i);
- v.setImageLevel(level);
- v.setContentDescription(mContext.getString(R.string.accessibility_battery_level,
- level));
- }
- N = mLabelViews.size();
- for (int i=0; i<N; i++) {
- TextView v = mLabelViews.get(i);
- v.setText(mContext.getString(BATTERY_TEXT_STYLE_MIN,
- level));
+ if (mUiController) {
+ int N = mIconViews.size();
+ for (int i=0; i<N; i++) {
+ ImageView v = mIconViews.get(i);
+ v.setImageLevel(level);
+ v.setContentDescription(mContext.getString(R.string.accessibility_battery_level,
+ level));
+ }
+ N = mLabelViews.size();
+ for (int i=0; i<N; i++) {
+ TextView v = mLabelViews.get(i);
+ v.setText(mContext.getString(BATTERY_TEXT_STYLE_MIN,
+ level));
+ }
}
for (BatteryStateChangeCallback cb : mChangeCallbacks) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessController.java
index e18b28a..769e5b2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessController.java
@@ -30,8 +30,6 @@ import android.view.IWindowManager;
import android.widget.CompoundButton;
import android.widget.ImageView;
-import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
-
import java.util.ArrayList;
public class BrightnessController implements ToggleSlider.Listener {
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 fae6572..83639ee 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java
@@ -22,6 +22,8 @@ import android.os.BatteryManager;
import com.android.systemui.R;
+import java.util.ArrayList;
+
public class DockBatteryController extends BatteryController {
private static final String TAG = "StatusBar.DockBatteryController";
@@ -30,7 +32,11 @@ public class DockBatteryController extends BatteryController {
private boolean mBatteryPresent = false;
public DockBatteryController(Context context) {
- super(context);
+ this(context, true);
+ }
+
+ public DockBatteryController(Context context, boolean ui) {
+ super(context, ui);
}
@Override
@@ -49,6 +55,28 @@ public class DockBatteryController extends BatteryController {
}
@Override
+ protected void updateViews(int level) {
+ if (isUiController()) {
+ super.updateViews(level);
+ }
+
+ for (DockBatteryStateChangeCallback cb : mChangeCallbacks) {
+ cb.onDockBatteryLevelChanged(level, isBatteryPresent(), isBatteryStatusCharging());
+ }
+ }
+
+ private ArrayList<DockBatteryStateChangeCallback> mChangeCallbacks =
+ new ArrayList<DockBatteryStateChangeCallback>();
+
+ public interface DockBatteryStateChangeCallback {
+ public void onDockBatteryLevelChanged(int level, boolean present, boolean pluggedIn);
+ }
+
+ public void addStateChangedCallback(DockBatteryStateChangeCallback cb) {
+ mChangeCallbacks.add(cb);
+ }
+
+ @Override
public int getIconStyleUnknown() {
return R.drawable.stat_sys_kb_battery_unknown;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java
index 776cf36..5db0934 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java
@@ -37,7 +37,6 @@ import android.app.INotificationManager;
import com.android.internal.statusbar.StatusBarNotification;
import com.android.systemui.R;
-import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
public class LocationController extends BroadcastReceiver {
private static final String TAG = "StatusBar.LocationController";