From 032d1b1df36a7760171adb3c8ceb30bfdfe824d6 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Wed, 21 Oct 2020 14:02:41 -0400 Subject: [PATCH] Use 4 columns in QS portrait This changes the default number of columns in QS and QQS portrait to 4. This means 4 tiles in QQS and 4/8 tiles in QS. Test: manual Change-Id: Idf017e3b7e8bd4b790e2f6fdbb4c568c4487b974 --- packages/SystemUI/res/values-land/config.xml | 3 ++ packages/SystemUI/res/values/config.xml | 4 +-- .../com/android/systemui/qs/QSAnimator.java | 18 ++-------- .../com/android/systemui/qs/QuickQSPanel.java | 10 +++--- .../systemui/qs/QuickQSPanelController.java | 35 ++++++++++--------- .../qs/customize/QSCustomizerController.java | 2 +- .../systemui/qs/customize/TileAdapter.java | 7 +++- 7 files changed, 37 insertions(+), 42 deletions(-) diff --git a/packages/SystemUI/res/values-land/config.xml b/packages/SystemUI/res/values-land/config.xml index 2f7fbaff4ed2b..46ec23c8cf2e8 100644 --- a/packages/SystemUI/res/values-land/config.xml +++ b/packages/SystemUI/res/values-land/config.xml @@ -20,6 +20,9 @@ + + 6 + 2 diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 1a72fc2318156..f82d1a393339b 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -93,10 +93,10 @@ true - 6 + 4 - 3 + 4 3 diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java index c52b8ca453af0..e9207f1feff3d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java @@ -200,8 +200,6 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha int count = 0; int[] loc1 = new int[2]; int[] loc2 = new int[2]; - int lastXDiff = 0; - int lastX = 0; clearAnimationState(); mAllViews.clear(); @@ -231,12 +229,11 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha QSTileView quickTileView = mQuickQSPanelController.getTileView(tile); if (quickTileView == null) continue; - lastX = loc1[0]; getRelativePosition(loc1, quickTileView.getIcon().getIconView(), view); getRelativePosition(loc2, tileIcon, view); final int xDiff = loc2[0] - loc1[0]; final int yDiff = loc2[1] - loc1[1]; - lastXDiff = loc1[0] - lastX; + if (count < tileLayout.getNumVisibleTiles()) { // Move the quick tile right from its location to the new one. @@ -267,19 +264,8 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha mAllViews.add(tileView.getIcon()); mAllViews.add(quickTileView); } else if (mFullRows && isIconInAnimatedRow(count)) { - // TODO: Refactor some of this, it shares a lot with the above block. - // Move the last tile position over by the last difference between quick tiles. - // This makes the extra icons seems as if they are coming from positions in the - // quick panel. - loc1[0] += lastXDiff; - getRelativePosition(loc2, tileIcon, view); - final int xDiff = loc2[0] - loc1[0]; - final int yDiff = loc2[1] - loc1[1]; - firstPageBuilder.addFloat(tileView, "translationY", heightDiff, 0); - translationXBuilder.addFloat(tileView, "translationX", -xDiff, 0); - translationYBuilder.addFloat(tileView, "translationY", -yDiff, 0); - translationYBuilder.addFloat(tileIcon, "translationY", -yDiff, 0); + firstPageBuilder.addFloat(tileView, "translationY", -heightDiff, 0); mAllViews.add(tileIcon); } else { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java index dde9a1fdf01bf..ebe80ae961727 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java @@ -47,7 +47,7 @@ public class QuickQSPanel extends QSPanel { public static final String NUM_QUICK_TILES = "sysui_qqs_count"; private static final String TAG = "QuickQSPanel"; // A default value so that we never return 0. - private static int sDefaultMaxTiles = 6; + public static final int DEFAULT_MAX_TILES = 6; private boolean mDisabledByPolicy; private int mMaxTiles; @@ -62,8 +62,8 @@ public class QuickQSPanel extends QSPanel { @Named(QUICK_QS_PANEL) MediaHost mediaHost, UiEventLogger uiEventLogger) { super(context, attrs, qsLogger, mediaHost, uiEventLogger); - sDefaultMaxTiles = getResources().getInteger(R.integer.quick_qs_panel_max_columns); - mMaxTiles = sDefaultMaxTiles; + mMaxTiles = Math.min(DEFAULT_MAX_TILES, + getResources().getInteger(R.integer.quick_qs_panel_max_columns)); applyBottomMargin((View) mRegularTileLayout); } @@ -141,7 +141,7 @@ public class QuickQSPanel extends QSPanel { } public void setMaxTiles(int maxTiles) { - mMaxTiles = maxTiles; + mMaxTiles = Math.min(maxTiles, DEFAULT_MAX_TILES); } @Override @@ -167,7 +167,7 @@ public class QuickQSPanel extends QSPanel { return Integer.parseInt(numTilesValue); } catch (NumberFormatException e) { // Couldn't read an int from the new setting value. Use default. - return sDefaultMaxTiles; + return DEFAULT_MAX_TILES; } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java index fa6289f896f9b..54d3026878c8c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java @@ -16,52 +16,53 @@ package com.android.systemui.qs; -import static com.android.systemui.qs.QuickQSPanel.NUM_QUICK_TILES; -import static com.android.systemui.qs.QuickQSPanel.parseNumTiles; - import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; +import com.android.systemui.R; import com.android.systemui.dump.DumpManager; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.customize.QSCustomizerController; import com.android.systemui.qs.dagger.QSScope; -import com.android.systemui.tuner.TunerService; -import com.android.systemui.tuner.TunerService.Tunable; import java.util.ArrayList; +import java.util.List; import javax.inject.Inject; /** Controller for {@link QuickQSPanel}. */ @QSScope public class QuickQSPanelController extends QSPanelControllerBase { - private final Tunable mNumTiles = - (key, newValue) -> setMaxTiles(parseNumTiles(newValue)); - private final TunerService mTunerService; + private List mAllTiles = new ArrayList<>(); + + private final QSPanel.OnConfigurationChangedListener mOnConfigurationChangedListener = + newConfig -> { + int newMaxTiles = getResources().getInteger(R.integer.quick_qs_panel_max_columns); + if (newMaxTiles != mView.getNumQuickTiles()) { + setMaxTiles(newMaxTiles); + } + }; @Inject - QuickQSPanelController(QuickQSPanel view, TunerService tunerService, QSTileHost qsTileHost, + QuickQSPanelController(QuickQSPanel view, QSTileHost qsTileHost, QSCustomizerController qsCustomizerController, QSTileRevealController.Factory qsTileRevealControllerFactory, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, DumpManager dumpManager) { super(view, qsTileHost, qsCustomizerController, qsTileRevealControllerFactory, metricsLogger, uiEventLogger, dumpManager); - mTunerService = tunerService; } @Override protected void onViewAttached() { super.onViewAttached(); - mTunerService.addTunable(mNumTiles, NUM_QUICK_TILES); - + mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener); } @Override protected void onViewDetached() { super.onViewDetached(); - mTunerService.removeTunable(mNumTiles); + mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener); } public boolean isListening() { @@ -75,14 +76,14 @@ public class QuickQSPanelController extends QSPanelControllerBase @Override public void setTiles() { - ArrayList quickTiles = new ArrayList<>(); + mAllTiles.clear(); for (QSTile tile : mHost.getTiles()) { - quickTiles.add(tile); - if (quickTiles.size() == mView.getNumQuickTiles()) { + mAllTiles.add(tile); + if (mAllTiles.size() == QuickQSPanel.DEFAULT_MAX_TILES) { break; } } - super.setTiles(quickTiles, true); + super.setTiles(mAllTiles.subList(0, mView.getNumQuickTiles()), true); } public int getNumQuickTiles() { 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 9f4c58b58cab0..7ba51e5e7128e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java @@ -125,7 +125,7 @@ public class QSCustomizerController extends ViewController { RecyclerView recyclerView = mView.getRecyclerView(); recyclerView.setAdapter(mTileAdapter); mTileAdapter.getItemTouchHelper().attachToRecyclerView(recyclerView); - GridLayoutManager layout = new GridLayoutManager(getContext(), 3) { + GridLayoutManager layout = new GridLayoutManager(getContext(), TileAdapter.NUM_COLUMNS) { @Override public void onInitializeAccessibilityNodeInfoForItem(RecyclerView.Recycler recycler, RecyclerView.State state, View host, AccessibilityNodeInfoCompat info) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java index dfc771beab1c2..036fa8667c6fd 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java @@ -61,6 +61,7 @@ public class TileAdapter extends RecyclerView.Adapter implements TileSta private static final long DRAG_LENGTH = 100; private static final float DRAG_SCALE = 1.2f; public static final long MOVE_DURATION = 150; + public static final int NUM_COLUMNS = 4; private static final int TYPE_TILE = 0; private static final int TYPE_EDIT = 1; @@ -600,7 +601,11 @@ public class TileAdapter extends RecyclerView.Adapter implements TileSta @Override public int getSpanSize(int position) { final int type = getItemViewType(position); - return type == TYPE_EDIT || type == TYPE_DIVIDER || type == TYPE_HEADER ? 3 : 1; + if (type == TYPE_EDIT || type == TYPE_DIVIDER || type == TYPE_HEADER) { + return NUM_COLUMNS; + } else { + return 1; + } } };