Merge "BrightnessMirror: When reinflating, notify QSPanel" into oc-dr1-dev

This commit is contained in:
TreeHugger Robot
2017-08-09 16:22:29 +00:00
committed by Android (Google) Code Review
2 changed files with 53 additions and 10 deletions

View File

@@ -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);
}
}

View File

@@ -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);
}
}