diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java index f4571d7d36095..19a8dabb31fc0 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java @@ -17,7 +17,6 @@ package com.android.systemui.qs; import static android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS; -import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import android.content.Context; import android.content.res.Configuration; @@ -184,7 +183,8 @@ public class QSContainerImpl extends FrameLayout { mBackground.setVisibility(mQsDisabled ? View.GONE : View.VISIBLE); } - void updateResources(QSPanelController qsPanelController) { + void updateResources(QSPanelController qsPanelController, + QuickStatusBarHeaderController quickStatusBarHeaderController) { LayoutParams layoutParams = (LayoutParams) mQSPanelContainer.getLayoutParams(); layoutParams.topMargin = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.quick_qs_offset_height); @@ -196,7 +196,7 @@ public class QSContainerImpl extends FrameLayout { boolean marginsChanged = padding != mContentPadding; mContentPadding = padding; if (marginsChanged) { - updatePaddingsAndMargins(qsPanelController); + updatePaddingsAndMargins(qsPanelController, quickStatusBarHeaderController); } } @@ -252,7 +252,8 @@ public class QSContainerImpl extends FrameLayout { updateExpansion(); } - private void updatePaddingsAndMargins(QSPanelController qsPanelController) { + private void updatePaddingsAndMargins(QSPanelController qsPanelController, + QuickStatusBarHeaderController quickStatusBarHeaderController) { for (int i = 0; i < getChildCount(); i++) { View view = getChildAt(i); if (view == mQSCustomizer) { @@ -271,7 +272,7 @@ public class QSContainerImpl extends FrameLayout { } else if (view == mHeader) { // The header contains the QQS panel which needs to have special padding, to // visually align them. - mHeader.setContentMargins(mContentPadding, mContentPadding); + quickStatusBarHeaderController.setContentMargins(mContentPadding, mContentPadding); } else { view.setPaddingRelative( mContentPadding, diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java index 27d3221b8e98f..3638395be29e2 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java @@ -35,7 +35,7 @@ public class QSContainerImplController extends ViewController { new ConfigurationController.ConfigurationListener() { @Override public void onConfigChanged(Configuration newConfig) { - mView.updateResources(mQsPanelController); + mView.updateResources(mQsPanelController, mQuickStatusBarHeaderController); } }; @@ -60,7 +60,7 @@ public class QSContainerImplController extends ViewController { @Override protected void onViewAttached() { - mView.updateResources(mQsPanelController); + mView.updateResources(mQsPanelController, mQuickStatusBarHeaderController); mQsPanelController.setMediaVisibilityChangedListener((visible) -> { if (mQsPanelController.isShown()) { mView.onMediaVisibilityChanged(true); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 337f31e8efd77..9bc5c2de3ea2b 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -16,7 +16,6 @@ package com.android.systemui.qs; -import static com.android.systemui.media.dagger.MediaModule.QS_PANEL; import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT; import static com.android.systemui.util.Utils.useQsMediaPlayer; @@ -42,7 +41,6 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.widget.RemeasuringLinearLayout; import com.android.systemui.Dependency; import com.android.systemui.R; -import com.android.systemui.media.MediaHost; import com.android.systemui.plugins.qs.DetailAdapter; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.logging.QSLogger; @@ -50,7 +48,6 @@ import com.android.systemui.settings.brightness.BrightnessSlider; import com.android.systemui.statusbar.policy.BrightnessMirrorController; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService.Tunable; -import com.android.systemui.util.animation.DisappearParameters; import java.util.ArrayList; import java.util.List; @@ -68,7 +65,6 @@ public class QSPanel extends LinearLayout implements Tunable { private static final String TAG = "QSPanel"; protected final Context mContext; - private final MediaHost mMediaHost; /** * The index where the content starts that needs to be moved between parents @@ -135,14 +131,12 @@ public class QSPanel extends LinearLayout implements Tunable { @Named(VIEW_CONTEXT) Context context, AttributeSet attrs, QSLogger qsLogger, - @Named(QS_PANEL) MediaHost mediaHost, UiEventLogger uiEventLogger ) { super(context, attrs); mUsingMediaPlayer = useQsMediaPlayer(context); mMediaTotalBottomMargin = getResources().getDimensionPixelSize( R.dimen.quick_settings_bottom_margin_media); - mMediaHost = mediaHost; mContext = context; mQSLogger = qsLogger; mUiEventLogger = uiEventLogger; @@ -213,36 +207,6 @@ public class QSPanel extends LinearLayout implements Tunable { return createRegularTileLayout(); } - /** - * Update the way the media disappears based on if we're using the horizontal layout - */ - void updateMediaDisappearParameters() { - if (!mUsingMediaPlayer) { - return; - } - DisappearParameters parameters = mMediaHost.getDisappearParameters(); - if (mUsingHorizontalLayout) { - // Only height remaining - parameters.getDisappearSize().set(0.0f, 0.4f); - // Disappearing on the right side on the bottom - parameters.getGonePivot().set(1.0f, 1.0f); - // translating a bit horizontal - parameters.getContentTranslationFraction().set(0.25f, 1.0f); - parameters.setDisappearEnd(0.6f); - } else { - // Only width remaining - parameters.getDisappearSize().set(1.0f, 0.0f); - // Disappearing on the bottom - parameters.getGonePivot().set(0.0f, 1.0f); - // translating a bit vertical - parameters.getContentTranslationFraction().set(0.0f, 1.05f); - parameters.setDisappearEnd(0.95f); - } - parameters.setFadeStartPosition(0.95f); - parameters.setDisappearStart(0.0f); - mMediaHost.setDisappearParameters(parameters); - } - @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (mTileLayout instanceof PagedTileLayout) { @@ -403,56 +367,6 @@ public class QSPanel extends LinearLayout implements Tunable { mDivider = findViewById(R.id.divider); } - boolean switchTileLayout(boolean force, List records) { - /** Whether or not the QuickQSPanel currently contains a media player. */ - boolean horizontal = shouldUseHorizontalLayout(); - if (mDivider != null) { - if (!horizontal && mUsingMediaPlayer && mMediaHost.getVisible()) { - mDivider.setVisibility(View.VISIBLE); - } else { - mDivider.setVisibility(View.GONE); - } - } - if (horizontal != mUsingHorizontalLayout || force) { - mUsingHorizontalLayout = horizontal; - View visibleView = horizontal ? mHorizontalLinearLayout : (View) mRegularTileLayout; - View hiddenView = horizontal ? (View) mRegularTileLayout : mHorizontalLinearLayout; - ViewGroup newParent = horizontal ? mHorizontalContentContainer : this; - QSTileLayout newLayout = horizontal ? mHorizontalTileLayout : mRegularTileLayout; - if (hiddenView != null && - (mRegularTileLayout != mHorizontalTileLayout || - hiddenView != mRegularTileLayout)) { - // Only hide the view if the horizontal and the regular view are different, - // otherwise its reattached. - hiddenView.setVisibility(View.GONE); - } - visibleView.setVisibility(View.VISIBLE); - switchAllContentToParent(newParent, newLayout); - reAttachMediaHost(); - if (mTileLayout != null) { - mTileLayout.setListening(false); - for (QSPanelControllerBase.TileRecord record : records) { - mTileLayout.removeTile(record); - record.tile.removeCallback(record.callback); - } - } - mTileLayout = newLayout; - if (needsDynamicRowsAndColumns()) { - newLayout.setMinRows(horizontal ? 2 : 1); - // Let's use 3 columns to match the current layout - newLayout.setMaxColumns(horizontal ? 3 : TileLayout.NO_MAX_COLUMNS); - } - updateTileLayoutMargins(); - updateFooterMargin(); - updateDividerMargin(); - updateMediaDisappearParameters(); - updateMediaHostContentMargins(); - updateHorizontalLinearLayoutMargins(); - updatePadding(); - return true; - } - return false; - } /** * Sets the listening state of the current layout to the state of the view. Used after @@ -524,27 +438,19 @@ public class QSPanel extends LinearLayout implements Tunable { } } - private boolean shouldUseHorizontalLayout() { - return mUsingMediaPlayer && mMediaHost.getVisible() - && getResources().getConfiguration().orientation - == Configuration.ORIENTATION_LANDSCAPE; - } - - protected void reAttachMediaHost() { + /** Call when orientation has changed and MediaHost needs to be adjusted. */ + private void reAttachMediaHost(ViewGroup hostView, boolean horizontal) { if (!mUsingMediaPlayer) { return; } - boolean horizontal = shouldUseHorizontalLayout(); - ViewGroup host = mMediaHost.getHostView(); - ViewGroup newParent = horizontal ? mHorizontalLinearLayout : this; - ViewGroup currentParent = (ViewGroup) host.getParent(); + ViewGroup currentParent = (ViewGroup) hostView.getParent(); if (currentParent != newParent) { if (currentParent != null) { - currentParent.removeView(host); + currentParent.removeView(hostView); } - newParent.addView(host); - LinearLayout.LayoutParams layoutParams = (LayoutParams) host.getLayoutParams(); + newParent.addView(hostView); + LinearLayout.LayoutParams layoutParams = (LayoutParams) hostView.getLayoutParams(); layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT; layoutParams.width = horizontal ? 0 : ViewGroup.LayoutParams.MATCH_PARENT; layoutParams.weight = horizontal ? 1.2f : 0; @@ -763,14 +669,15 @@ public class QSPanel extends LinearLayout implements Tunable { return mDivider; } - public void setContentMargins(int startMargin, int endMargin) { + /** */ + public void setContentMargins(int startMargin, int endMargin, ViewGroup mediaHostView) { // Only some views actually want this content padding, others want to go all the way // to the edge like the brightness slider mContentMarginStart = startMargin; mContentMarginEnd = endMargin; updateTileLayoutMargins(mContentMarginStart - mVisualTilePadding, mContentMarginEnd - mVisualTilePadding); - updateMediaHostContentMargins(); + updateMediaHostContentMargins(mediaHostView); updateFooterMargin(); updateDividerMargin(); } @@ -826,13 +733,13 @@ public class QSPanel extends LinearLayout implements Tunable { /** * Update the margins of the media hosts */ - protected void updateMediaHostContentMargins() { + protected void updateMediaHostContentMargins(ViewGroup mediaHostView) { if (mUsingMediaPlayer) { int marginStart = mContentMarginStart; if (mUsingHorizontalLayout) { marginStart = 0; } - updateMargins(mMediaHost.getHostView(), marginStart, mContentMarginEnd); + updateMargins(mediaHostView, marginStart, mContentMarginEnd); } } @@ -871,6 +778,44 @@ public class QSPanel extends LinearLayout implements Tunable { mSecurityFooter = view; } + void setUsingHorizontalLayout(boolean horizontal, ViewGroup mediaHostView, boolean force) { + if (horizontal != mUsingHorizontalLayout || force) { + mUsingHorizontalLayout = horizontal; + View visibleView = horizontal ? mHorizontalLinearLayout : (View) mRegularTileLayout; + View hiddenView = horizontal ? (View) mRegularTileLayout : mHorizontalLinearLayout; + ViewGroup newParent = horizontal ? mHorizontalContentContainer : this; + QSPanel.QSTileLayout newLayout = horizontal + ? mHorizontalTileLayout : mRegularTileLayout; + if (hiddenView != null + && (mRegularTileLayout != mHorizontalTileLayout + || hiddenView != mRegularTileLayout)) { + // Only hide the view if the horizontal and the regular view are different, + // otherwise its reattached. + hiddenView.setVisibility(View.GONE); + } + visibleView.setVisibility(View.VISIBLE); + switchAllContentToParent(newParent, newLayout); + reAttachMediaHost(mediaHostView, horizontal); + mTileLayout = newLayout; + newLayout.setListening(mListening); + if (needsDynamicRowsAndColumns()) { + newLayout.setMinRows(horizontal ? 2 : 1); + // Let's use 3 columns to match the current layout + newLayout.setMaxColumns(horizontal ? 3 : TileLayout.NO_MAX_COLUMNS); + } + updateMargins(mediaHostView); + } + } + + private void updateMargins(ViewGroup mediaHostView) { + updateTileLayoutMargins(); + updateFooterMargin(); + updateDividerMargin(); + updateMediaHostContentMargins(mediaHostView); + updateHorizontalLinearLayoutMargins(); + updatePadding(); + } + private class H extends Handler { private static final int SHOW_DETAIL = 1; private static final int SET_TILE_VISIBILITY = 2; diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java index eaa3ed059c340..5ad4a43c1909a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java @@ -18,6 +18,7 @@ package com.android.systemui.qs; import static com.android.systemui.media.dagger.MediaModule.QS_PANEL; import static com.android.systemui.qs.QSPanel.QS_SHOW_BRIGHTNESS; +import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER; import android.annotation.NonNull; import android.content.res.Configuration; @@ -77,13 +78,14 @@ public class QSPanelController extends QSPanelControllerBase { @Inject QSPanelController(QSPanel view, QSSecurityFooter qsSecurityFooter, TunerService tunerService, QSTileHost qstileHost, QSCustomizerController qsCustomizerController, + @Named(QS_USING_MEDIA_PLAYER) boolean usingMediaPlayer, @Named(QS_PANEL) MediaHost mediaHost, QSTileRevealController.Factory qsTileRevealControllerFactory, DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, BrightnessController.Factory brightnessControllerFactory, BrightnessSlider.Factory brightnessSliderFactory) { - super(view, qstileHost, qsCustomizerController, mediaHost, metricsLogger, uiEventLogger, - dumpManager); + super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost, metricsLogger, + uiEventLogger, dumpManager); mQsSecurityFooter = qsSecurityFooter; mTunerService = tunerService; mQsCustomizerController = qsCustomizerController; @@ -111,7 +113,7 @@ public class QSPanelController extends QSPanelControllerBase { protected void onViewAttached() { super.onViewAttached(); - mView.updateMediaDisappearParameters(); + updateMediaDisappearParameters(); mTunerService.addTunable(mView, QS_SHOW_BRIGHTNESS); mView.updateResources(); @@ -142,11 +144,6 @@ public class QSPanelController extends QSPanelControllerBase { super.onViewDetached(); } - /** TODO(b/168904199): Remove this method once view is controllerized. */ - QSPanel getView() { - return mView; - } - /** * Set the header container of quick settings. */ @@ -277,7 +274,7 @@ public class QSPanelController extends QSPanelControllerBase { /** */ public void setContentMargins(int startMargin, int endMargin) { - mView.setContentMargins(startMargin, endMargin); + mView.setContentMargins(startMargin, endMargin, mMediaHost.getHostView()); } /** */ diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java index 2c4c8c2a498b6..9e828e9b997a3 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java @@ -17,10 +17,12 @@ package com.android.systemui.qs; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER; import android.content.ComponentName; import android.content.res.Configuration; import android.metrics.LogMaker; +import android.view.View; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; @@ -32,6 +34,7 @@ import com.android.systemui.plugins.qs.QSTileView; import com.android.systemui.qs.customize.QSCustomizerController; import com.android.systemui.qs.external.CustomTile; import com.android.systemui.util.ViewController; +import com.android.systemui.util.animation.DisappearParameters; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -39,6 +42,8 @@ import java.util.ArrayList; import java.util.Collection; import java.util.stream.Collectors; +import javax.inject.Named; + import kotlin.Unit; import kotlin.jvm.functions.Function1; @@ -51,6 +56,7 @@ public abstract class QSPanelControllerBase extends ViewContr implements Dumpable{ protected final QSTileHost mHost; private final QSCustomizerController mQsCustomizerController; + private final boolean mUsingMediaPlayer; protected final MediaHost mMediaHost; private final MetricsLogger mMetricsLogger; private final UiEventLogger mUiEventLogger; @@ -81,12 +87,16 @@ public abstract class QSPanelControllerBase extends ViewContr return null; }; + private boolean mUsingHorizontalLayout; + protected QSPanelControllerBase(T view, QSTileHost host, - QSCustomizerController qsCustomizerController, MediaHost mediaHost, + QSCustomizerController qsCustomizerController, + @Named(QS_USING_MEDIA_PLAYER) boolean usingMediaPlayer, MediaHost mediaHost, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, DumpManager dumpManager) { super(view); mHost = host; mQsCustomizerController = qsCustomizerController; + mUsingMediaPlayer = usingMediaPlayer; mMediaHost = mediaHost; mMetricsLogger = metricsLogger; mUiEventLogger = uiEventLogger; @@ -242,13 +252,67 @@ public abstract class QSPanelControllerBase extends ViewContr } boolean switchTileLayout(boolean force) { - if (mView.switchTileLayout(force, mRecords)) { + /** Whether or not the QuickQSPanel currently contains a media player. */ + boolean horizontal = shouldUseHorizontalLayout(); + if (mView.getDivider() != null) { + if (!horizontal && mUsingMediaPlayer && mMediaHost.getVisible()) { + mView.getDivider().setVisibility(View.VISIBLE); + } else { + mView.getDivider().setVisibility(View.GONE); + } + } + if (horizontal != mUsingHorizontalLayout || force) { + mUsingHorizontalLayout = horizontal; + for (QSPanelControllerBase.TileRecord record : mRecords) { + mView.removeTile(record); + record.tile.removeCallback(record.callback); + } + mView.setUsingHorizontalLayout(mUsingHorizontalLayout, mMediaHost.getHostView(), force); + updateMediaDisappearParameters(); + setTiles(); + return true; } return false; } + /** + * Update the way the media disappears based on if we're using the horizontal layout + */ + void updateMediaDisappearParameters() { + if (!mUsingMediaPlayer) { + return; + } + DisappearParameters parameters = mMediaHost.getDisappearParameters(); + if (mUsingHorizontalLayout) { + // Only height remaining + parameters.getDisappearSize().set(0.0f, 0.4f); + // Disappearing on the right side on the bottom + parameters.getGonePivot().set(1.0f, 1.0f); + // translating a bit horizontal + parameters.getContentTranslationFraction().set(0.25f, 1.0f); + parameters.setDisappearEnd(0.6f); + } else { + // Only width remaining + parameters.getDisappearSize().set(1.0f, 0.0f); + // Disappearing on the bottom + parameters.getGonePivot().set(0.0f, 1.0f); + // translating a bit vertical + parameters.getContentTranslationFraction().set(0.0f, 1.05f); + parameters.setDisappearEnd(0.95f); + } + parameters.setFadeStartPosition(0.95f); + parameters.setDisappearStart(0.0f); + mMediaHost.setDisappearParameters(parameters); + } + + boolean shouldUseHorizontalLayout() { + return mUsingMediaPlayer && mMediaHost.getVisible() + && getResources().getConfiguration().orientation + == Configuration.ORIENTATION_LANDSCAPE; + } + private void logTiles() { for (int i = 0; i < mRecords.size(); i++) { QSTile tile = mRecords.get(i).tile; diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java index 84c2ac24f1442..dfb2a4afd5ea2 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java @@ -16,7 +16,6 @@ package com.android.systemui.qs; -import static com.android.systemui.media.dagger.MediaModule.QUICK_QS_PANEL; import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT; import android.content.Context; @@ -29,7 +28,6 @@ import android.widget.LinearLayout; import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; -import com.android.systemui.media.MediaHost; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.plugins.qs.QSTile.SignalState; import com.android.systemui.plugins.qs.QSTile.State; @@ -57,9 +55,8 @@ public class QuickQSPanel extends QSPanel { @Named(VIEW_CONTEXT) Context context, AttributeSet attrs, QSLogger qsLogger, - @Named(QUICK_QS_PANEL) MediaHost mediaHost, UiEventLogger uiEventLogger) { - super(context, attrs, qsLogger, mediaHost, uiEventLogger); + super(context, attrs, qsLogger, uiEventLogger); mMaxTiles = Math.min(DEFAULT_MAX_TILES, getResources().getInteger(R.integer.quick_qs_panel_max_columns)); applyBottomMargin((View) mRegularTileLayout); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java index 174a81f1d9191..bb5cb9edff623 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java @@ -17,6 +17,7 @@ package com.android.systemui.qs; import static com.android.systemui.media.dagger.MediaModule.QUICK_QS_PANEL; +import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; @@ -51,11 +52,12 @@ public class QuickQSPanelController extends QSPanelControllerBase @Inject QuickQSPanelController(QuickQSPanel view, QSTileHost qsTileHost, QSCustomizerController qsCustomizerController, + @Named(QS_USING_MEDIA_PLAYER) boolean usingMediaPlayer, @Named(QUICK_QS_PANEL) MediaHost mediaHost, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, DumpManager dumpManager) { - super(view, qsTileHost, qsCustomizerController, mediaHost, metricsLogger, uiEventLogger, - dumpManager); + super(view, qsTileHost, qsCustomizerController, usingMediaPlayer, mediaHost, metricsLogger, + uiEventLogger, dumpManager); } @Override @@ -99,6 +101,11 @@ public class QuickQSPanelController extends QSPanelControllerBase super.setTiles(mAllTiles.subList(0, mView.getNumQuickTiles()), true); } + /** */ + public void setContentMargins(int marginStart, int marginEnd) { + mView.setContentMargins(marginStart, marginEnd, mMediaHost.getHostView()); + } + public int getNumQuickTiles() { return mView.getNumQuickTiles(); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index 09894e58231ab..6020e21035a83 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -51,8 +51,6 @@ import com.android.systemui.BatteryMeterView; import com.android.systemui.DualToneHandler; import com.android.systemui.Interpolators; import com.android.systemui.R; -import com.android.systemui.plugins.DarkIconDispatcher; -import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import com.android.systemui.privacy.OngoingPrivacyChip; import com.android.systemui.qs.QSDetail.Callback; import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager; @@ -466,14 +464,15 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn } /** */ - public void setContentMargins(int marginStart, int marginEnd) { + public void setContentMargins(int marginStart, int marginEnd, + QuickQSPanelController quickQSPanelController) { mContentMarginStart = marginStart; mContentMarginEnd = marginEnd; for (int i = 0; i < getChildCount(); i++) { View view = getChildAt(i); if (view == mHeaderQsPanel) { // QS panel doesn't lays out some of its content full width - mHeaderQsPanel.setContentMargins(marginStart, marginEnd); + quickQSPanelController.setContentMargins(marginStart, marginEnd); } else { MarginLayoutParams lp = (MarginLayoutParams) view.getLayoutParams(); lp.setMarginStart(marginStart); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java index 5ee9df4783429..c5b76feb7cb39 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java @@ -379,6 +379,11 @@ class QuickStatusBarHeaderController extends ViewController controller = new QSPanelControllerBase( - mQSPanel, mQSTileHost, mQSCustomizerController, mMediaHost, mMetricsLogger, + mQSPanel, mQSTileHost, mQSCustomizerController, true, mMediaHost, mMetricsLogger, mUiEventLogger, mDumpManager) { @Override protected QSTileRevealController createTileRevealController() { diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java index 9090b9bc0e6f6..ee4ef8ad9524c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java @@ -112,9 +112,9 @@ public class QSPanelControllerTest extends SysuiTestCase { when(mMediaHost.getDisappearParameters()).thenReturn(new DisappearParameters()); mController = new QSPanelController(mQSPanel, mQSSecurityFooter, mTunerService, - mQSTileHost, mQSCustomizerController, mMediaHost, mQSTileRevealControllerFactory, - mDumpManager, mMetricsLogger, mUiEventLogger, mBrightnessControllerFactory, - mToggleSliderViewControllerFactory); + mQSTileHost, mQSCustomizerController, true, mMediaHost, + mQSTileRevealControllerFactory, mDumpManager, mMetricsLogger, mUiEventLogger, + mBrightnessControllerFactory, mToggleSliderViewControllerFactory); mController.init(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.java index 450ffac081383..2e8c7f1f5b0e4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.java @@ -36,14 +36,11 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.testing.UiEventLoggerFake; import com.android.systemui.Dependency; import com.android.systemui.SysuiTestCase; -import com.android.systemui.media.MediaHost; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.qs.QSTileView; import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.statusbar.policy.SecurityController; -import com.android.systemui.util.animation.DisappearParameters; -import com.android.systemui.util.animation.UniqueObjectHostView; import org.junit.Before; import org.junit.Test; @@ -75,8 +72,6 @@ public class QSPanelTest extends SysuiTestCase { @Mock private QSTileView mQSTileView; @Mock - private MediaHost mMediaHost; - @Mock private ActivityStarter mActivityStarter; private UiEventLoggerFake mUiEventLogger; @@ -90,15 +85,13 @@ public class QSPanelTest extends SysuiTestCase { mDependency.injectMockDependency(SecurityController.class); mDependency.injectTestDependency(Dependency.BG_LOOPER, mTestableLooper.getLooper()); mContext.addMockSystemService(Context.USER_SERVICE, mock(UserManager.class)); - when(mMediaHost.getHostView()).thenReturn(new UniqueObjectHostView(getContext())); - when(mMediaHost.getDisappearParameters()).thenReturn(new DisappearParameters()); mDndTileRecord.tile = dndTile; mDndTileRecord.tileView = mQSTileView; mUiEventLogger = new UiEventLoggerFake(); mTestableLooper.runWithLooper(() -> { mMetricsLogger = mDependency.injectMockDependency(MetricsLogger.class); - mQsPanel = new QSPanel(mContext, null, mQSLogger, mMediaHost, mUiEventLogger); + mQsPanel = new QSPanel(mContext, null, mQSLogger, mUiEventLogger); mQsPanel.onFinishInflate(); // Provides a parent with non-zero size for QSPanel mParentView = new FrameLayout(mContext);