summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
diff options
context:
space:
mode:
authorWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2016-12-12 15:03:40 +0100
committerWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2016-12-12 15:03:40 +0100
commitae08d65dc25290d8d411ff44d7eb07f4cb74e8c6 (patch)
tree1afe8d827942011eafc2afebd0ae158b24f8b38e /packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
parent90e1e6b2e9b79d444545d729561cf7fc099a8f10 (diff)
parent2df190c3a2ed1e339bb34c175fa227f90e7cbb02 (diff)
downloadframeworks_base-ae08d65dc25290d8d411ff44d7eb07f4cb74e8c6.zip
frameworks_base-ae08d65dc25290d8d411ff44d7eb07f4cb74e8c6.tar.gz
frameworks_base-ae08d65dc25290d8d411ff44d7eb07f4cb74e8c6.tar.bz2
Merge branch 'cm-13.0' of https://github.com/CyanogenMod/android_frameworks_base into replicant-6.0
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);
}
}
}