Merge "6/N Remove QSCustomizer from QSPanel"

This commit is contained in:
Dave Mankoff
2020-11-04 19:34:53 +00:00
committed by Android (Google) Code Review
10 changed files with 76 additions and 66 deletions

View File

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

View File

@@ -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<QSTile> tiles) {
mQsTileRevealController.updateRevealedTiles(tiles);
}
void addTile(QSPanelControllerBase.TileRecord tileRecord) {
final QSTile.Callback callback = new QSTile.Callback() {
@Override

View File

@@ -63,17 +63,17 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
@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<QSPanel> {
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<QSPanel> {
}
}
/** */
public QSTileRevealController getQsTileRevealController() {
return mView.getQsTileRevealController();
}
/** */
public MediaHost getMediaHost() {
return mView.getMediaHost();

View File

@@ -48,6 +48,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> 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<T extends QSPanel> extends ViewContr
protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
private int mLastOrientation;
private QSTileRevealController mQsTileRevealController;
private final QSHost.Callback mQSHostCallback = this::setTiles;
@@ -71,11 +73,13 @@ public abstract class QSPanelControllerBase<T extends QSPanel> 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<T extends QSPanel> 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<T extends QSPanel> extends ViewContr
/** */
public void setTiles(Collection<QSTile> 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<T extends QSPanel> extends ViewContr
}
}
/** */
public QSTileRevealController getQsTileRevealController() {
return mQsTileRevealController;
}
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {

View File

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

View File

@@ -43,9 +43,11 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
@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;
}

View File

@@ -213,11 +213,6 @@ public class QSCustomizerController extends ViewController<QSCustomizer> {
mView.setContainer(container);
}
// TODO(b/168904199): remove this.
public QSCustomizer getView() {
return mView;
}
public boolean isShown() {
return mView.isShown();
}

View File

@@ -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<QSPanel> mController;
/** Implementation needed to ensure we have a reflectively-available class name. */
private static class TestableQSPanelControllerBase extends QSPanelControllerBase<QSPanel> {
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();
}

View File

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

View File

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