diff options
author | Evan Laird <evanlaird@google.com> | 2018-12-05 15:49:12 -0500 |
---|---|---|
committer | Evan Laird <evanlaird@google.com> | 2018-12-05 15:49:12 -0500 |
commit | 698839be62c8790feb71d13de7b75c7aeadc450a (patch) | |
tree | 23906f175a9df2b472a75ed9e44c935f88aff20f /packages/SystemUI/src | |
parent | ce7357ad97b0e2af2e91ce1cda79f3ca8c1d6965 (diff) |
Fix battery icon showing in QQS when it shouldn't
BatteryMeterView was listening to sysui tuner for its visibility, but in
QQS we want to control it via settings
Test: visual
Change-Id: I52f1e389b82e7a75c30e66c1d4547e5b4875a37e
Diffstat (limited to 'packages/SystemUI/src')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/BatteryMeterView.java | 46 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java | 2 |
2 files changed, 45 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); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index 427f638b0d30..3cecff033c91 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -232,6 +232,8 @@ public class QuickStatusBarHeader extends RelativeLayout implements // Tint for the battery icons are handled in setupHost() mBatteryRemainingIcon = findViewById(R.id.batteryRemainingIcon); mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_OFF); + // Don't need to worry about tuner settings for this icon + mBatteryRemainingIcon.setIgnoreTunerUpdates(true); mBatteryRemainingText = findViewById(R.id.batteryRemainingText); mBatteryRemainingText.setTextColor(fillColor); |