diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java index a35151068bee4..80bfa79aa7532 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java @@ -35,7 +35,7 @@ import com.android.systemui.qs.customize.QSCustomizer; import com.android.wm.shell.animation.PhysicsAnimator; /** - * Wrapper view with background which contains {@link QSPanel} and {@link BaseStatusBarHeader} + * Wrapper view with background which contains {@link QSPanel} and {@link QuickStatusBarHeader} */ public class QSContainerImpl extends FrameLayout { @@ -57,7 +57,6 @@ public class QSContainerImpl extends FrameLayout { SpringForce.DAMPING_RATIO_LOW_BOUNCY); private int mBackgroundBottom = -1; private int mHeightOverride = -1; - private QSPanel mQSPanel; private View mQSDetail; private QuickStatusBarHeader mHeader; private float mQsExpansion; @@ -81,7 +80,6 @@ public class QSContainerImpl extends FrameLayout { @Override protected void onFinishInflate() { super.onFinishInflate(); - mQSPanel = findViewById(R.id.quick_settings_panel); mQSPanelContainer = findViewById(R.id.expanded_qs_scroll_view); mQSDetail = findViewById(R.id.qs_detail); mHeader = findViewById(R.id.header); @@ -90,22 +88,18 @@ public class QSContainerImpl extends FrameLayout { mBackground = findViewById(R.id.quick_settings_background); mStatusBarBackground = findViewById(R.id.quick_settings_status_bar_background); mBackgroundGradient = findViewById(R.id.quick_settings_gradient_view); - updateResources(); mHeader.getHeaderQsPanel().setMediaVisibilityChangedListener((visible) -> { if (mHeader.getHeaderQsPanel().isShown()) { mAnimateBottomOnNextLayout = true; } }); - mQSPanel.setMediaVisibilityChangedListener((visible) -> { - if (mQSPanel.isShown()) { - mAnimateBottomOnNextLayout = true; - } - }); - - setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); } + void onMediaVisibilityChanged(boolean qsVisible) { + mAnimateBottomOnNextLayout = qsVisible; + } + private void setBackgroundBottom(int value) { // We're saving the bottom separately since otherwise the bottom would be overridden in // the layout and the animation wouldn't properly start at the old position. @@ -124,7 +118,6 @@ public class QSContainerImpl extends FrameLayout { protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); setBackgroundGradientVisibility(newConfig); - updateResources(); mSizePoint.set(0, 0); // Will be retrieved on next measure pass. } @@ -197,7 +190,7 @@ public class QSContainerImpl extends FrameLayout { mBackground.setVisibility(mQsDisabled ? View.GONE : View.VISIBLE); } - private void updateResources() { + void updateResources(QSPanelController qsPanelController) { LayoutParams layoutParams = (LayoutParams) mQSPanelContainer.getLayoutParams(); layoutParams.topMargin = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.quick_qs_offset_height); @@ -209,7 +202,7 @@ public class QSContainerImpl extends FrameLayout { boolean marginsChanged = padding != mContentPadding; mContentPadding = padding; if (marginsChanged) { - updatePaddingsAndMargins(); + updatePaddingsAndMargins(qsPanelController); } } @@ -275,7 +268,7 @@ public class QSContainerImpl extends FrameLayout { updateExpansion(); } - private void updatePaddingsAndMargins() { + private void updatePaddingsAndMargins(QSPanelController qsPanelController) { for (int i = 0; i < getChildCount(); i++) { View view = getChildAt(i); if (view == mStatusBarBackground || view == mBackgroundGradient @@ -288,8 +281,8 @@ public class QSContainerImpl extends FrameLayout { lp.leftMargin = mSideMargins; if (view == mQSPanelContainer) { // QS panel lays out some of its content full width - mQSPanel.setContentMargins(mContentPadding, mContentPadding); - Pair margins = mQSPanel.getVisualSideMargins(); + qsPanelController.setContentMargins(mContentPadding, mContentPadding); + Pair margins = qsPanelController.getVisualSideMargins(); // Apply paddings based on QSPanel mQSCustomizer.setContentPaddings(margins.first, margins.second); } else if (view == mHeader) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java index 4b9f4316f2bf2..27d3221b8e98f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java @@ -16,7 +16,10 @@ package com.android.systemui.qs; +import android.content.res.Configuration; + import com.android.systemui.qs.dagger.QSScope; +import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.util.ViewController; import javax.inject.Inject; @@ -24,13 +27,26 @@ import javax.inject.Inject; /** */ @QSScope public class QSContainerImplController extends ViewController { + private final QSPanelController mQsPanelController; private final QuickStatusBarHeaderController mQuickStatusBarHeaderController; + private final ConfigurationController mConfigurationController; + + private final ConfigurationController.ConfigurationListener mConfigurationListener = + new ConfigurationController.ConfigurationListener() { + @Override + public void onConfigChanged(Configuration newConfig) { + mView.updateResources(mQsPanelController); + } + }; @Inject - QSContainerImplController(QSContainerImpl view, - QuickStatusBarHeaderController quickStatusBarHeaderController) { + QSContainerImplController(QSContainerImpl view, QSPanelController qsPanelController, + QuickStatusBarHeaderController quickStatusBarHeaderController, + ConfigurationController configurationController) { super(view); + mQsPanelController = qsPanelController; mQuickStatusBarHeaderController = quickStatusBarHeaderController; + mConfigurationController = configurationController; } @Override @@ -44,10 +60,19 @@ public class QSContainerImplController extends ViewController { @Override protected void onViewAttached() { + mView.updateResources(mQsPanelController); + mQsPanelController.setMediaVisibilityChangedListener((visible) -> { + if (mQsPanelController.isShown()) { + mView.onMediaVisibilityChanged(true); + } + }); + + mConfigurationController.addCallback(mConfigurationListener); } @Override protected void onViewDetached() { + mConfigurationController.removeCallback(mConfigurationListener); } public QSContainerImpl getView() { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java index 4f87825a49186..eb82a7200c21f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java @@ -20,6 +20,7 @@ import static com.android.systemui.qs.QSPanel.QS_SHOW_BRIGHTNESS; import android.annotation.NonNull; import android.content.res.Configuration; +import android.util.Pair; import android.view.View; import android.view.ViewGroup; @@ -35,6 +36,8 @@ import com.android.systemui.settings.BrightnessController; import com.android.systemui.statusbar.policy.BrightnessMirrorController; import com.android.systemui.tuner.TunerService; +import java.util.function.Consumer; + import javax.inject.Inject; /** @@ -222,5 +225,24 @@ public class QSPanelController extends QSPanelControllerBase { public void setPageListener(PagedTileLayout.PageListener listener) { mView.setPageListener(listener); } + + /** */ + public void setMediaVisibilityChangedListener(Consumer visibilityChangedListener) { + mView.setMediaVisibilityChangedListener(visibilityChangedListener); + } + + public boolean isShown() { + return mView.isShown(); + } + + /** */ + public void setContentMargins(int startMargin, int endMargin) { + mView.setContentMargins(startMargin, endMargin); + } + + /** */ + public Pair getVisualSideMargins() { + return mView.getVisualSideMargins(); + } }