diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java index b7657d669c6b8..e1bca4a42b895 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java @@ -327,7 +327,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca @Override public boolean isShowingDetail() { - return mQSPanelController.isShowingCustomize() || mQSDetail.isShowingDetail(); + return mQSCustomizerController.isCustomizing() || mQSDetail.isShowingDetail(); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index f8537f08c6754..758e0c566e5d6 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -46,7 +46,6 @@ import com.android.systemui.media.MediaHierarchyManager; 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.customize.QSCustomizer; import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.settings.ToggleSliderView; import com.android.systemui.statusbar.policy.BrightnessMirrorController; @@ -56,7 +55,6 @@ import com.android.systemui.tuner.TunerService.Tunable; import com.android.systemui.util.animation.DisappearParameters; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.function.Consumer; @@ -84,7 +82,6 @@ public class QSPanel extends LinearLayout implements Tunable, BrightnessMirrorLi private final H mHandler = new H(); private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class); - private QSTileRevealController mQsTileRevealController; /** Whether or not the QS media player feature is enabled. */ protected boolean mUsingMediaPlayer; private int mVisualMarginStart; @@ -117,7 +114,6 @@ public class QSPanel extends LinearLayout implements Tunable, BrightnessMirrorLi private int mVisualTilePadding; private boolean mUsingHorizontalLayout; - private QSCustomizer mCustomizePanel; private Record mDetailRecord; private BrightnessMirrorController mBrightnessMirrorController; @@ -186,10 +182,6 @@ public class QSPanel extends LinearLayout implements Tunable, BrightnessMirrorLi initMediaHostState(); } - if (mRegularTileLayout instanceof PagedTileLayout) { - mQsTileRevealController = new QSTileRevealController(mContext, this, - (PagedTileLayout) mRegularTileLayout); - } mQSLogger.logAllTilesChangeListening(mListening, getDumpableTag(), ""); } @@ -297,14 +289,6 @@ public class QSPanel extends LinearLayout implements Tunable, BrightnessMirrorLi setMeasuredDimension(getMeasuredWidth(), height); } - public QSTileRevealController getQsTileRevealController() { - return mQsTileRevealController; - } - - public boolean isShowingCustomize() { - return mCustomizePanel != null && mCustomizePanel.isCustomizing(); - } - @Override protected void onDetachedFromWindow() { if (mTileLayout != null) { @@ -362,10 +346,6 @@ public class QSPanel extends LinearLayout implements Tunable, BrightnessMirrorLi mCallback = callback; } - void setCustomizer(QSCustomizer customizer) { - mCustomizePanel = customizer; - } - /** * Links the footer's page indicator, which is used in landscape orientation to save space. * @@ -678,10 +658,6 @@ public class QSPanel extends LinearLayout implements Tunable, BrightnessMirrorLi return mExpanded; } - void updateRevealedTiles(Collection tiles) { - mQsTileRevealController.updateRevealedTiles(tiles); - } - void addTile(QSPanelControllerBase.TileRecord tileRecord) { final QSTile.Callback callback = new QSTile.Callback() { @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java index 00bd6c992d804..e9670a959ceed 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java @@ -63,17 +63,17 @@ public class QSPanelController extends QSPanelControllerBase { @Inject QSPanelController(QSPanel view, QSSecurityFooter qsSecurityFooter, TunerService tunerService, QSTileHost qstileHost, QSCustomizerController qsCustomizerController, + QSTileRevealController.Factory qsTileRevealControllerFactory, DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, BrightnessController.Factory brightnessControllerFactory) { - super(view, qstileHost, qsCustomizerController, metricsLogger, uiEventLogger, dumpManager); + super(view, qstileHost, qsCustomizerController, qsTileRevealControllerFactory, + metricsLogger, uiEventLogger, dumpManager); mQsSecurityFooter = qsSecurityFooter; mTunerService = tunerService; mQsCustomizerController = qsCustomizerController; mQsSecurityFooter.setHostEnvironment(qstileHost); mBrightnessController = brightnessControllerFactory.create( mView.findViewById(R.id.brightness_slider)); - - mView.setCustomizer(mQsCustomizerController.getView()); } @Override @@ -123,11 +123,6 @@ public class QSPanelController extends QSPanelControllerBase { return mView.getTileLayout(); } - /** */ - public boolean isShowingCustomize() { - return mView.isShowingCustomize(); - } - /** */ public void setVisibility(int visibility) { mView.setVisibility(visibility); @@ -151,11 +146,6 @@ public class QSPanelController extends QSPanelControllerBase { } } - /** */ - public QSTileRevealController getQsTileRevealController() { - return mView.getQsTileRevealController(); - } - /** */ public MediaHost getMediaHost() { return mView.getMediaHost(); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java index 3175504b942ea..0a4151b382101 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java @@ -48,6 +48,7 @@ public abstract class QSPanelControllerBase extends ViewContr implements Dumpable{ protected final QSTileHost mHost; private final QSCustomizerController mQsCustomizerController; + private final QSTileRevealController.Factory mQsTileRevealControllerFactory; private final MediaHost mMediaHost; private final MetricsLogger mMetricsLogger; private final UiEventLogger mUiEventLogger; @@ -55,6 +56,7 @@ public abstract class QSPanelControllerBase extends ViewContr protected final ArrayList mRecords = new ArrayList<>(); private int mLastOrientation; + private QSTileRevealController mQsTileRevealController; private final QSHost.Callback mQSHostCallback = this::setTiles; @@ -71,11 +73,13 @@ public abstract class QSPanelControllerBase extends ViewContr private String mCachedSpecs = ""; protected QSPanelControllerBase(T view, QSTileHost host, - QSCustomizerController qsCustomizerController, MetricsLogger metricsLogger, - UiEventLogger uiEventLogger, DumpManager dumpManager) { + QSCustomizerController qsCustomizerController, + QSTileRevealController.Factory qsTileRevealControllerFactory, + MetricsLogger metricsLogger, UiEventLogger uiEventLogger, DumpManager dumpManager) { super(view); mHost = host; mQsCustomizerController = qsCustomizerController; + mQsTileRevealControllerFactory = qsTileRevealControllerFactory; mMediaHost = mView.getMediaHost(); mMetricsLogger = metricsLogger; mUiEventLogger = uiEventLogger; @@ -84,6 +88,12 @@ public abstract class QSPanelControllerBase extends ViewContr @Override protected void onViewAttached() { + QSPanel.QSTileLayout regularTileLayout = mView.createRegularTileLayout(); + if (regularTileLayout instanceof PagedTileLayout) { + mQsTileRevealController = mQsTileRevealControllerFactory.create( + (PagedTileLayout) regularTileLayout); + } + mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener); mHost.addCallback(mQSHostCallback); mMediaHost.addVisibilityChangeListener(aBoolean -> { @@ -115,7 +125,7 @@ public abstract class QSPanelControllerBase extends ViewContr /** */ public void setTiles(Collection tiles, boolean collapsedView) { if (!collapsedView) { - mView.updateRevealedTiles(tiles); + mQsTileRevealController.updateRevealedTiles(tiles); } for (QSPanelControllerBase.TileRecord record : mRecords) { mView.removeTile(record); @@ -236,6 +246,10 @@ public abstract class QSPanelControllerBase extends ViewContr } } + /** */ + public QSTileRevealController getQsTileRevealController() { + return mQsTileRevealController; + } @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileRevealController.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileRevealController.java index 3d4a417abf2e3..9414d0e3ed52d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileRevealController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileRevealController.java @@ -8,6 +8,7 @@ import android.util.ArraySet; import com.android.systemui.Prefs; import com.android.systemui.plugins.qs.QSTile; +import com.android.systemui.qs.customize.QSCustomizerController; import com.android.systemui.qs.dagger.QSScope; import java.util.Collection; @@ -17,13 +18,13 @@ import java.util.Set; import javax.inject.Inject; /** */ -@QSScope public class QSTileRevealController { private static final long QS_REVEAL_TILES_DELAY = 500L; private final Context mContext; private final QSPanel mQSPanel; private final PagedTileLayout mPagedTileLayout; + private final QSCustomizerController mQsCustomizerController; private final ArraySet mTilesToReveal = new ArraySet<>(); private final Handler mHandler = new Handler(); @@ -38,12 +39,12 @@ public class QSTileRevealController { }); } }; - - @Inject - QSTileRevealController(Context context, QSPanel qsPanel, PagedTileLayout pagedTileLayout) { + QSTileRevealController(Context context, QSPanel qsPanel, PagedTileLayout pagedTileLayout, + QSCustomizerController qsCustomizerController) { mContext = context; mQSPanel = qsPanel; mPagedTileLayout = pagedTileLayout; + mQsCustomizerController = qsCustomizerController; } public void setExpansion(float expansion) { @@ -62,7 +63,7 @@ public class QSTileRevealController { final Set revealedTiles = Prefs.getStringSet( mContext, QS_TILE_SPECS_REVEALED, Collections.EMPTY_SET); - if (revealedTiles.isEmpty() || mQSPanel.isShowingCustomize()) { + if (revealedTiles.isEmpty() || mQsCustomizerController.isCustomizing()) { // Do not reveal QS tiles the user has upon first load or those that they directly // added through customization. addTileSpecsToRevealed(tileSpecs); @@ -79,4 +80,24 @@ public class QSTileRevealController { revealedTiles.addAll(specs); Prefs.putStringSet(mContext, QS_TILE_SPECS_REVEALED, revealedTiles); } + + /** TODO(b/168904199): Remove this once QSPanel has its rejection removed. */ + @QSScope + static class Factory { + private final Context mContext; + private final QSPanel mQsPanel; + private final QSCustomizerController mQsCustomizerController; + + @Inject + Factory(Context context, QSPanel qsPanel, QSCustomizerController qsCustomizerController) { + mContext = context; + mQsPanel = qsPanel; + mQsCustomizerController = qsCustomizerController; + } + + QSTileRevealController create(PagedTileLayout pagedTileLayout) { + return new QSTileRevealController(mContext, mQsPanel, pagedTileLayout, + mQsCustomizerController); + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java index be652441eaa60..a718271998c98 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java @@ -43,9 +43,11 @@ public class QuickQSPanelController extends QSPanelControllerBase @Inject QuickQSPanelController(QuickQSPanel view, TunerService tunerService, QSTileHost qsTileHost, QSCustomizerController qsCustomizerController, + QSTileRevealController.Factory qsTileRevealControllerFactory, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, DumpManager dumpManager) { - super(view, qsTileHost, qsCustomizerController, metricsLogger, uiEventLogger, dumpManager); + super(view, qsTileHost, qsCustomizerController, qsTileRevealControllerFactory, + metricsLogger, uiEventLogger, dumpManager); mTunerService = tunerService; } diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java index 0f1616768eca4..9f4c58b58cab0 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java @@ -213,11 +213,6 @@ public class QSCustomizerController extends ViewController { mView.setContainer(container); } - // TODO(b/168904199): remove this. - public QSCustomizer getView() { - return mView; - } - public boolean isShown() { return mView.isShown(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java index 3c3a19221c9dc..64ef6dd90fe17 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java @@ -64,6 +64,10 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { @Mock private QSCustomizerController mQSCustomizerController; @Mock + private QSTileRevealController.Factory mQSTileRevealControllerFactory; + @Mock + private QSTileRevealController mQSTileRevealController; + @Mock private MediaHost mMediaHost; @Mock private MetricsLogger mMetricsLogger; @@ -73,15 +77,19 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { QSTileImpl mQSTile; @Mock QSTileView mQSTileView; + @Mock + PagedTileLayout mPagedTileLayout; private QSPanelControllerBase mController; /** Implementation needed to ensure we have a reflectively-available class name. */ private static class TestableQSPanelControllerBase extends QSPanelControllerBase { protected TestableQSPanelControllerBase(QSPanel view, QSTileHost host, - QSCustomizerController qsCustomizerController, MetricsLogger metricsLogger, - UiEventLogger uiEventLogger, DumpManager dumpManager) { - super(view, host, qsCustomizerController, metricsLogger, uiEventLogger, dumpManager); + QSCustomizerController qsCustomizerController, + QSTileRevealController.Factory qsTileRevealControllerFactory, + MetricsLogger metricsLogger, UiEventLogger uiEventLogger, DumpManager dumpManager) { + super(view, host, qsCustomizerController, qsTileRevealControllerFactory, metricsLogger, + uiEventLogger, dumpManager); } } @@ -94,11 +102,14 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { when(mQSPanel.getDumpableTag()).thenReturn("QSPanel"); when(mQSPanel.openPanelEvent()).thenReturn(QSEvent.QS_PANEL_EXPANDED); when(mQSPanel.closePanelEvent()).thenReturn(QSEvent.QS_PANEL_COLLAPSED); + when(mQSPanel.createRegularTileLayout()).thenReturn(mPagedTileLayout); when(mQSTileHost.getTiles()).thenReturn(Collections.singleton(mQSTile)); when(mQSTileHost.createTileView(eq(mQSTile), anyBoolean())).thenReturn(mQSTileView); + when(mQSTileRevealControllerFactory.create(any())).thenReturn(mQSTileRevealController); mController = new TestableQSPanelControllerBase(mQSPanel, mQSTileHost, - mQSCustomizerController, mMetricsLogger, mUiEventLogger, mDumpManager); + mQSCustomizerController, mQSTileRevealControllerFactory, mMetricsLogger, + mUiEventLogger, mDumpManager); mController.init(); } 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 826735b830392..bce376a13b7b3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java @@ -61,6 +61,10 @@ public class QSPanelControllerTest extends SysuiTestCase { @Mock private QSCustomizerController mQSCustomizerController; @Mock + private QSTileRevealController.Factory mQSTileRevealControllerFactory; + @Mock + private QSTileRevealController mQSTileRevealController; + @Mock private MediaHost mMediaHost; @Mock private MetricsLogger mMetricsLogger; @@ -78,6 +82,9 @@ public class QSPanelControllerTest extends SysuiTestCase { QSTileImpl mQSTile; @Mock QSTileView mQSTileView; + @Mock + PagedTileLayout mPagedTileLayout; + private QSPanelController mController; @@ -88,14 +95,16 @@ public class QSPanelControllerTest extends SysuiTestCase { when(mQSPanel.getMediaHost()).thenReturn(mMediaHost); when(mQSPanel.isAttachedToWindow()).thenReturn(true); when(mQSPanel.getDumpableTag()).thenReturn("QSPanel"); + when(mQSPanel.createRegularTileLayout()).thenReturn(mPagedTileLayout); when(mQSTileHost.getTiles()).thenReturn(Collections.singleton(mQSTile)); when(mQSTileHost.createTileView(eq(mQSTile), anyBoolean())).thenReturn(mQSTileView); when(mBrightnessControllerFactory.create(any(ToggleSlider.class))) .thenReturn(mBrightnessController); + when(mQSTileRevealControllerFactory.create(any())).thenReturn(mQSTileRevealController); mController = new QSPanelController(mQSPanel, mQSSecurityFooter, mTunerService, - mQSTileHost, mQSCustomizerController, mDumpManager, mMetricsLogger, mUiEventLogger, - mBrightnessControllerFactory); + mQSTileHost, mQSCustomizerController, mQSTileRevealControllerFactory, mDumpManager, + mMetricsLogger, mUiEventLogger, mBrightnessControllerFactory); 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 e38d54b90f69d..450ffac081383 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.java @@ -39,7 +39,6 @@ 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.customize.QSCustomizer; import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.statusbar.policy.SecurityController; @@ -65,12 +64,8 @@ public class QSPanelTest extends SysuiTestCase { @Mock private QSTileHost mHost; @Mock - private QSCustomizer mCustomizer; - @Mock private QSTileImpl dndTile; @Mock - private QSTileImpl mNonTile; - @Mock private QSPanelControllerBase.TileRecord mDndTileRecord; @Mock private QSLogger mQSLogger; @@ -84,7 +79,6 @@ public class QSPanelTest extends SysuiTestCase { @Mock private ActivityStarter mActivityStarter; private UiEventLoggerFake mUiEventLogger; - private String mCachedSpecs = ""; @Before public void setup() throws Exception { @@ -113,8 +107,6 @@ public class QSPanelTest extends SysuiTestCase { when(dndTile.getTileSpec()).thenReturn("dnd"); when(mHost.getTiles()).thenReturn(Collections.emptyList()); when(mHost.createTileView(any(), anyBoolean())).thenReturn(mQSTileView); - - mQsPanel.setCustomizer(mCustomizer); mQsPanel.addTile(mDndTileRecord); mQsPanel.setCallback(mCallback); });