summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java')
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java42
1 files changed, 31 insertions, 11 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
index 37d8d73..1a60fa9 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
@@ -25,6 +25,8 @@ import android.provider.Settings;
import com.android.systemui.qs.QSTile;
import com.android.systemui.R;
+import com.android.systemui.statusbar.policy.BatteryController;
+import com.android.systemui.statusbar.policy.BatteryStateRegistar;
import cyanogenmod.power.PerformanceManager;
@@ -36,13 +38,15 @@ public class BatterySaverTile extends QSTile<QSTile.BooleanState> {
private static final Intent BATTERY_SETTINGS = new Intent(Intent.ACTION_POWER_USAGE_SUMMARY);
private final PowerManager mPm;
- private final PerformanceManager mPerformanceManager;
+ private final boolean mHasPowerProfiles;
+
private boolean mListening;
+ private boolean mPluggedIn;
public BatterySaverTile(Host host) {
super(host);
mPm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
- mPerformanceManager = PerformanceManager.getInstance(mContext);
+ mHasPowerProfiles = PerformanceManager.getInstance(mContext).getNumberOfProfiles() > 0;
}
@Override
@@ -53,7 +57,7 @@ public class BatterySaverTile extends QSTile<QSTile.BooleanState> {
@Override
public void handleClick() {
mPm.setPowerSaveMode(!mState.value);
- refreshState();
+ refreshState(!mState.value);
}
@Override
@@ -63,8 +67,8 @@ public class BatterySaverTile extends QSTile<QSTile.BooleanState> {
@Override
protected void handleUpdateState(BooleanState state, Object arg) {
- state.value = mPm.isPowerSaveMode();
- state.visible = mPerformanceManager.getNumberOfProfiles() == 0;
+ state.value = arg instanceof Boolean ? (boolean) arg : mPm.isPowerSaveMode();
+ state.visible = !mHasPowerProfiles;
state.label = mContext.getString(R.string.quick_settings_battery_saver_label);
if (state.value) {
state.icon = ResourceIcon.get(R.drawable.ic_qs_battery_saver_on);
@@ -75,6 +79,11 @@ public class BatterySaverTile extends QSTile<QSTile.BooleanState> {
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_battery_saver_off);
}
+
+ state.enabled = !mPluggedIn;
+ if (mPluggedIn) {
+ state.label = mContext.getString(R.string.quick_settings_battery_saver_label_charging);
+ }
}
@Override
@@ -93,11 +102,24 @@ public class BatterySaverTile extends QSTile<QSTile.BooleanState> {
return CMMetricsLogger.TILE_BATTERY_SAVER;
}
- private ContentObserver mObserver = new ContentObserver(mHandler) {
+ private BatteryStateRegistar.BatteryStateChangeCallback mBatteryState
+ = new BatteryStateRegistar.BatteryStateChangeCallback() {
+ @Override
+ public void onBatteryLevelChanged(boolean present, int level, boolean pluggedIn,
+ boolean charging) {
+ mPluggedIn = pluggedIn || charging;
+ refreshState();
+ }
+
@Override
- public void onChange(boolean selfChange, Uri uri) {
+ public void onPowerSaveChanged() {
refreshState();
}
+
+ @Override
+ public void onBatteryStyleChanged(int style, int percentMode) {
+ // ignore
+ }
};
@Override
@@ -106,11 +128,9 @@ public class BatterySaverTile extends QSTile<QSTile.BooleanState> {
mListening = listening;
if (listening) {
- mContext.getContentResolver().registerContentObserver(
- Settings.Global.getUriFor(Settings.Global.LOW_POWER_MODE),
- false, mObserver);
+ getHost().getBatteryController().addStateChangedCallback(mBatteryState);
} else {
- mContext.getContentResolver().unregisterContentObserver(mObserver);
+ getHost().getBatteryController().removeStateChangedCallback(mBatteryState);
}
}
}