diff options
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 2f7fbaff4ed2..46ec23c8cf2e 100644 --- a/packages/SystemUI/res/values-land/config.xml +++ b/packages/SystemUI/res/values-land/config.xml @@ -20,6 +20,9 @@ <!-- These resources are around just to allow their values to be customized for different hardware and product builds. --> <resources> + <!-- The maximum number of tiles in the QuickQSPanel --> + <integer name="quick_qs_panel_max_columns">6</integer> + <!-- The maximum number of rows in the QuickSettings --> <integer name="quick_settings_max_rows">2</integer> diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 1a72fc231815..f82d1a393339 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -93,10 +93,10 @@ <bool name="config_navigation_bar_enable_auto_dim_no_visible_wallpaper">true</bool> <!-- The maximum number of tiles in the QuickQSPanel --> - <integer name="quick_qs_panel_max_columns">6</integer> + <integer name="quick_qs_panel_max_columns">4</integer> <!-- The number of columns in the QuickSettings --> - <integer name="quick_settings_num_columns">3</integer> + <integer name="quick_settings_num_columns">4</integer> <!-- The number of rows in the QuickSettings --> <integer name="quick_settings_max_rows">3</integer> diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java index c52b8ca453af..e9207f1feff3 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 dde9a1fdf01b..ebe80ae96172 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 fa6289f896f9..54d3026878c8 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<QuickQSPanel> { - private final Tunable mNumTiles = - (key, newValue) -> setMaxTiles(parseNumTiles(newValue)); - private final TunerService mTunerService; + private List<QSTile> 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<QuickQSPanel> @Override public void setTiles() { - ArrayList<QSTile> 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 9f4c58b58cab..7ba51e5e7128 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<QSCustomizer> { 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 dfc771beab1c..036fa8667c6f 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<Holder> 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<Holder> 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; + } } }; |