Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1067d943 authored by Adrian Roos's avatar Adrian Roos Committed by android-build-merger
Browse files

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

am: 1273dd6b

Change-Id: I0c561af8d1d7a9213b4f14fcf29d3550672cc92c
parents 63f68c7e 1273dd6b
Loading
Loading
Loading
Loading
+29 −8
Original line number Diff line number Diff line
@@ -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);
        }
    }

+24 −2
Original line number Diff line number Diff line
@@ -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);
    }
}