diff options
| author | 2017-08-09 14:34:55 +0200 | |
|---|---|---|
| committer | 2017-08-09 15:03:53 +0200 | |
| commit | b01793f8d0bb6222d6afb50188c20d76ad38d04a (patch) | |
| tree | 2f857d4943c173f6844c02027c03b4be511b9f20 | |
| parent | 9f3bac52ee2590b757929b9c237bbac3c71aa886 (diff) | |
BrightnessMirror: When reinflating, notify QSPanel
Fixes an issue where after reinflating the brightness mirror,
the QSPanel was not notified.
Change-Id: I3974f31c2d3c67b5a283b10690cb103ca13fff6a
Fixes: 64460731
Test: Change to white / black wallpaper (opposite of current); verify brightness slider works.
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/QSPanel.java | 37 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java | 26 |
2 files changed, 53 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index c4d88aec7b8c..8f41084b2b2c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -46,6 +46,7 @@ import com.android.systemui.qs.external.CustomTile; import com.android.systemui.settings.BrightnessController; import com.android.systemui.settings.ToggleSliderView; import com.android.systemui.statusbar.policy.BrightnessMirrorController; +import com.android.systemui.statusbar.policy.BrightnessMirrorController.BrightnessMirrorListener; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService.Tunable; @@ -53,7 +54,7 @@ import java.util.ArrayList; import java.util.Collection; /** View that represents the quick settings tile panel. **/ -public class QSPanel extends LinearLayout implements Tunable, Callback { +public class QSPanel extends LinearLayout implements Tunable, Callback, BrightnessMirrorListener { public static final String QS_SHOW_BRIGHTNESS = "qs_show_brightness"; @@ -152,6 +153,9 @@ public class QSPanel extends LinearLayout implements Tunable, Callback { if (mHost != null) { setTiles(mHost.getTiles()); } + if (mBrightnessMirrorController != null) { + mBrightnessMirrorController.addCallback(this); + } } @Override @@ -163,6 +167,9 @@ public class QSPanel extends LinearLayout implements Tunable, Callback { for (TileRecord record : mRecords) { record.tile.removeCallbacks(); } + if (mBrightnessMirrorController != null) { + mBrightnessMirrorController.removeCallback(this); + } super.onDetachedFromWindow(); } @@ -194,12 +201,19 @@ public class QSPanel extends LinearLayout implements Tunable, Callback { } public void setBrightnessMirror(BrightnessMirrorController c) { + if (mBrightnessMirrorController != null) { + mBrightnessMirrorController.removeCallback(this); + } mBrightnessMirrorController = c; - ToggleSliderView brightnessSlider = findViewById(R.id.brightness_slider); - ToggleSliderView mirror = c.getMirror().findViewById( - R.id.brightness_slider); - brightnessSlider.setMirror(mirror); - brightnessSlider.setMirrorController(c); + if (mBrightnessMirrorController != null) { + mBrightnessMirrorController.addCallback(this); + } + updateBrightnessMirror(); + } + + @Override + public void onBrightnessMirrorReinflated(View brightnessMirror) { + updateBrightnessMirror(); } View getBrightnessView() { @@ -246,9 +260,16 @@ public class QSPanel extends LinearLayout implements Tunable, Callback { super.onConfigurationChanged(newConfig); mFooter.onConfigurationChanged(); + updateBrightnessMirror(); + } + + public void updateBrightnessMirror() { if (mBrightnessMirrorController != null) { - // Reload the mirror in case it got reinflated but we didn't. - setBrightnessMirror(mBrightnessMirrorController); + ToggleSliderView brightnessSlider = findViewById(R.id.brightness_slider); + ToggleSliderView mirrorSlider = mBrightnessMirrorController.getMirror() + .findViewById(R.id.brightness_slider); + brightnessSlider.setMirror(mirrorSlider); + brightnessSlider.setMirrorController(mBrightnessMirrorController); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java index 718c34859afa..42ce4c5bf2dc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java @@ -16,14 +16,15 @@ package com.android.systemui.statusbar.policy; +import android.util.ArraySet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewPropertyAnimator; import android.widget.FrameLayout; +import com.android.internal.util.Preconditions; import com.android.systemui.Interpolators; import com.android.systemui.R; -import com.android.systemui.statusbar.ScrimView; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.phone.StatusBarWindowView; import com.android.systemui.statusbar.stack.NotificationStackScrollLayout; @@ -31,7 +32,8 @@ import com.android.systemui.statusbar.stack.NotificationStackScrollLayout; /** * Controls showing and hiding of the brightness mirror. */ -public class BrightnessMirrorController { +public class BrightnessMirrorController + implements CallbackController<BrightnessMirrorController.BrightnessMirrorListener> { private final NotificationStackScrollLayout mStackScroller; public long TRANSITION_DURATION_OUT = 150; @@ -40,6 +42,7 @@ public class BrightnessMirrorController { private final StatusBarWindowView mStatusBarWindow; private final ScrimController mScrimController; private final View mNotificationPanel; + private final ArraySet<BrightnessMirrorListener> mBrightnessMirrorListeners = new ArraySet<>(); private final int[] mInt2Cache = new int[2]; private View mBrightnessMirror; @@ -130,5 +133,24 @@ public class BrightnessMirrorController { mBrightnessMirror = LayoutInflater.from(mBrightnessMirror.getContext()).inflate( R.layout.brightness_mirror, mStatusBarWindow, false); mStatusBarWindow.addView(mBrightnessMirror, index); + + for (int i = 0; i < mBrightnessMirrorListeners.size(); i++) { + mBrightnessMirrorListeners.valueAt(i).onBrightnessMirrorReinflated(mBrightnessMirror); + } + } + + @Override + public void addCallback(BrightnessMirrorListener listener) { + Preconditions.checkNotNull(listener); + mBrightnessMirrorListeners.add(listener); + } + + @Override + public void removeCallback(BrightnessMirrorListener listener) { + mBrightnessMirrorListeners.remove(listener); + } + + public interface BrightnessMirrorListener { + void onBrightnessMirrorReinflated(View brightnessMirror); } } |