summaryrefslogtreecommitdiff
path: root/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/BatteryMeterView.java')
-rw-r--r--packages/SystemUI/src/com/android/systemui/BatteryMeterView.java46
1 files changed, 43 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
index 053ea67b92c8..04c427f87125 100644
--- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
+++ b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
@@ -88,6 +88,9 @@ public class BatteryMeterView extends LinearLayout implements
private int mShowPercentMode = MODE_DEFAULT;
private boolean mForceShowPercent;
private boolean mShowPercentAvailable;
+ // Some places may need to show the battery conditionally, and not obey the tuner
+ private boolean mIgnoreTunerUpdates;
+ private boolean mIsSubscribedForTunerUpdates;
private int mDarkModeBackgroundColor;
private int mDarkModeFillColor;
@@ -183,6 +186,44 @@ public class BatteryMeterView extends LinearLayout implements
}
/**
+ * Set {@code true} to turn off BatteryMeterView's subscribing to the tuner for updates, and
+ * thus avoid it controlling its own visibility
+ *
+ * @param ignore whether to ignore the tuner or not
+ */
+ public void setIgnoreTunerUpdates(boolean ignore) {
+ mIgnoreTunerUpdates = ignore;
+ updateTunerSubscription();
+ }
+
+ private void updateTunerSubscription() {
+ if (mIgnoreTunerUpdates) {
+ unsubscribeFromTunerUpdates();
+ } else {
+ subscribeForTunerUpdates();
+ }
+ }
+
+ private void subscribeForTunerUpdates() {
+ if (mIsSubscribedForTunerUpdates || mIgnoreTunerUpdates) {
+ return;
+ }
+
+ Dependency.get(TunerService.class)
+ .addTunable(this, StatusBarIconController.ICON_BLACKLIST);
+ mIsSubscribedForTunerUpdates = true;
+ }
+
+ private void unsubscribeFromTunerUpdates() {
+ if (!mIsSubscribedForTunerUpdates) {
+ return;
+ }
+
+ Dependency.get(TunerService.class).removeTunable(this);
+ mIsSubscribedForTunerUpdates = false;
+ }
+
+ /**
* Sets whether the battery meter view uses the wallpaperTextColor. If we're not using it, we'll
* revert back to dark-mode-based/tinted colors.
*
@@ -247,8 +288,7 @@ public class BatteryMeterView extends LinearLayout implements
getContext().getContentResolver().registerContentObserver(
Settings.System.getUriFor(SHOW_BATTERY_PERCENT), false, mSettingObserver, mUser);
updateShowPercent();
- Dependency.get(TunerService.class)
- .addTunable(this, StatusBarIconController.ICON_BLACKLIST);
+ subscribeForTunerUpdates();
Dependency.get(ConfigurationController.class).addCallback(this);
mUserTracker.startTracking();
}
@@ -259,7 +299,7 @@ public class BatteryMeterView extends LinearLayout implements
mUserTracker.stopTracking();
mBatteryController.removeCallback(this);
getContext().getContentResolver().unregisterContentObserver(mSettingObserver);
- Dependency.get(TunerService.class).removeTunable(this);
+ unsubscribeFromTunerUpdates();
Dependency.get(ConfigurationController.class).removeCallback(this);
}