9/N Remove MediaHost from QSPanel

QSPanel no longer requires a MediaHost to be injected.

Bug: 168904199
Test: atest SystemUITests

Change-Id: I6f8c54bb8a1276885cd4617c7d66e1b5f2648153
This commit is contained in:
Dave Mankoff
2020-10-23 12:19:04 -04:00
parent 026e127e3f
commit 4a9d884391
13 changed files with 167 additions and 145 deletions

View File

@@ -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,

View File

@@ -35,7 +35,7 @@ public class QSContainerImplController extends ViewController<QSContainerImpl> {
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<QSContainerImpl> {
@Override
protected void onViewAttached() {
mView.updateResources(mQsPanelController);
mView.updateResources(mQsPanelController, mQuickStatusBarHeaderController);
mQsPanelController.setMediaVisibilityChangedListener((visible) -> {
if (mQsPanelController.isShown()) {
mView.onMediaVisibilityChanged(true);

View File

@@ -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<QSPanelControllerBase.TileRecord> 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;

View File

@@ -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<QSPanel> {
@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<QSPanel> {
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<QSPanel> {
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<QSPanel> {
/** */
public void setContentMargins(int startMargin, int endMargin) {
mView.setContentMargins(startMargin, endMargin);
mView.setContentMargins(startMargin, endMargin, mMediaHost.getHostView());
}
/** */

View File

@@ -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<T extends QSPanel> 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<T extends QSPanel> 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<T extends QSPanel> 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;

View File

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

View File

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

View File

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

View File

@@ -379,6 +379,11 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
mZenModeController.getConsolidatedPolicy());
}
public void setContentMargins(int contentPaddingStart, int contentPaddingEnd) {
mView.setContentMargins(contentPaddingStart, contentPaddingEnd, mHeaderQsPanelController);
}
private static class ClockDemoModeReceiver implements DemoMode {
private Clock mClockView;

View File

@@ -16,6 +16,9 @@
package com.android.systemui.qs.dagger;
import static com.android.systemui.util.Utils.useQsMediaPlayer;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
@@ -44,6 +47,7 @@ import dagger.Provides;
@Module
public interface QSFragmentModule {
String QS_SECURITY_FOOTER_VIEW = "qs_security_footer";
String QS_USING_MEDIA_PLAYER = "qs_using_media_player";
/** */
@Provides
@@ -108,4 +112,12 @@ public interface QSFragmentModule {
static View providesQSSecurityFooterView(LayoutInflater layoutInflater, QSPanel qsPanel) {
return layoutInflater.inflate(R.layout.quick_settings_footer, qsPanel, false);
}
/** */
@Provides
@Named(QS_USING_MEDIA_PLAYER)
static boolean providesQSUsingMediaPlayer(Context context) {
return useQsMediaPlayer(context);
}
}

View File

@@ -43,6 +43,7 @@ import com.android.systemui.media.MediaHost;
import com.android.systemui.plugins.qs.QSTileView;
import com.android.systemui.qs.customize.QSCustomizerController;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.util.animation.DisappearParameters;
import org.junit.Before;
import org.junit.Test;
@@ -90,7 +91,7 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
protected TestableQSPanelControllerBase(QSPanel view, QSTileHost host,
QSCustomizerController qsCustomizerController, MediaHost mediaHost,
MetricsLogger metricsLogger, UiEventLogger uiEventLogger, DumpManager dumpManager) {
super(view, host, qsCustomizerController, mediaHost,
super(view, host, qsCustomizerController, true, mediaHost,
metricsLogger, uiEventLogger, dumpManager);
}
@@ -113,6 +114,7 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
when(mQSTileHost.createTileView(eq(mQSTile), anyBoolean())).thenReturn(mQSTileView);
when(mQSTileRevealControllerFactory.create(any(), any()))
.thenReturn(mQSTileRevealController);
when(mMediaHost.getDisappearParameters()).thenReturn(new DisappearParameters());
mController = new TestableQSPanelControllerBase(mQSPanel, mQSTileHost,
mQSCustomizerController, mMediaHost, mMetricsLogger, mUiEventLogger, mDumpManager);
@@ -126,7 +128,7 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
mController.onViewDetached();
QSPanelControllerBase<QSPanel> controller = new QSPanelControllerBase<QSPanel>(
mQSPanel, mQSTileHost, mQSCustomizerController, mMediaHost, mMetricsLogger,
mQSPanel, mQSTileHost, mQSCustomizerController, true, mMediaHost, mMetricsLogger,
mUiEventLogger, mDumpManager) {
@Override
protected QSTileRevealController createTileRevealController() {

View File

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

View File

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