Loading packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java +5 −1 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.content.Context; import android.content.res.Configuration; import android.graphics.Point; import android.util.AttributeSet; import android.util.Pair; import android.view.View; import android.widget.FrameLayout; Loading Loading @@ -282,7 +283,7 @@ public class QSContainerImpl extends FrameLayout { View view = getChildAt(i); if (view == mStatusBarBackground || view == mBackgroundGradient || view == mQSCustomizer) { // Some views are always full width // Some views are always full width or have dependent padding continue; } LayoutParams lp = (LayoutParams) view.getLayoutParams(); Loading @@ -291,6 +292,9 @@ public class QSContainerImpl extends FrameLayout { if (view == mQSPanelContainer) { // QS panel lays out some of its content full width mQSPanel.setContentMargins(mContentPaddingStart, mContentPaddingEnd); Pair<Integer, Integer> margins = mQSPanel.getVisualSideMargins(); // Apply paddings based on QSPanel mQSCustomizer.setContentPaddings(margins.first, margins.second); } else if (view == mHeader) { // The header contains the QQS panel which needs to have special padding, to // visually align them. Loading packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +5 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.util.Pair; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; Loading Loading @@ -1080,6 +1081,10 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne updateTileLayoutMargins(); } public Pair<Integer, Integer> getVisualSideMargins() { return new Pair(mVisualMarginStart, mUsingHorizontalLayout ? 0 : mVisualMarginEnd); } private void updateTileLayoutMargins() { int marginEnd = mVisualMarginEnd; if (mUsingHorizontalLayout) { Loading packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java +17 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,7 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene layout.setSpanSizeLookup(mTileAdapter.getSizeLookup()); mRecyclerView.setLayoutManager(layout); mRecyclerView.addItemDecoration(mTileAdapter.getItemDecoration()); mRecyclerView.addItemDecoration(mTileAdapter.getMarginItemDecoration()); DefaultItemAnimator animator = new DefaultItemAnimator(); animator.setMoveDuration(TileAdapter.MOVE_DURATION); mRecyclerView.setItemAnimator(animator); Loading Loading @@ -221,6 +222,22 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene } } /** * Sets the padding for the RecyclerView. Also, updates the margin between the tiles in the * {@link TileAdapter}. */ public void setContentPaddings(int paddingStart, int paddingEnd) { int halfMargin = mContext.getResources() .getDimensionPixelSize(R.dimen.qs_tile_margin_horizontal) / 2; mTileAdapter.changeHalfMargin(halfMargin); mRecyclerView.setPaddingRelative( paddingStart, mRecyclerView.getPaddingTop(), paddingEnd, mRecyclerView.getPaddingBottom() ); } private void queryTiles() { mTileQueryHelper.queryTiles(mHost); } Loading packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java +30 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Handler; import android.view.LayoutInflater; Loading Loading @@ -75,6 +76,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta private final List<TileInfo> mTiles = new ArrayList<>(); private final ItemTouchHelper mItemTouchHelper; private final ItemDecoration mDecoration; private final MarginTileDecoration mMarginDecoration; private final int mMinNumTiles; private int mEditIndex; private int mTileDividerIndex; Loading @@ -97,6 +99,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta mUiEventLogger = uiEventLogger; mItemTouchHelper = new ItemTouchHelper(mCallbacks); mDecoration = new TileItemDecoration(context); mMarginDecoration = new MarginTileDecoration(); mMinNumTiles = context.getResources().getInteger(R.integer.quick_settings_min_num_tiles); mAccessibilityDelegate = new TileAdapterDelegate(); } Loading @@ -123,6 +126,14 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta return mDecoration; } public ItemDecoration getMarginItemDecoration() { return mMarginDecoration; } public void changeHalfMargin(int halfMargin) { mMarginDecoration.setHalfMargin(halfMargin); } public void saveSpecs(QSTileHost host) { List<String> newSpecs = new ArrayList<>(); clearAccessibilityState(); Loading Loading @@ -596,7 +607,6 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta mDrawable = context.getDrawable(R.drawable.qs_customize_tile_decoration); } @Override public void onDraw(Canvas c, RecyclerView parent, State state) { super.onDraw(c, parent, state); Loading Loading @@ -630,6 +640,25 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } } private static class MarginTileDecoration extends ItemDecoration { private int mHalfMargin; public void setHalfMargin(int halfMargin) { mHalfMargin = halfMargin; } @Override public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull State state) { if (view instanceof TextView) { super.getItemOffsets(outRect, view, parent, state); } else { outRect.left = mHalfMargin; outRect.right = mHalfMargin; } } } private final ItemTouchHelper.Callback mCallbacks = new ItemTouchHelper.Callback() { @Override Loading Loading
packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java +5 −1 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.content.Context; import android.content.res.Configuration; import android.graphics.Point; import android.util.AttributeSet; import android.util.Pair; import android.view.View; import android.widget.FrameLayout; Loading Loading @@ -282,7 +283,7 @@ public class QSContainerImpl extends FrameLayout { View view = getChildAt(i); if (view == mStatusBarBackground || view == mBackgroundGradient || view == mQSCustomizer) { // Some views are always full width // Some views are always full width or have dependent padding continue; } LayoutParams lp = (LayoutParams) view.getLayoutParams(); Loading @@ -291,6 +292,9 @@ public class QSContainerImpl extends FrameLayout { if (view == mQSPanelContainer) { // QS panel lays out some of its content full width mQSPanel.setContentMargins(mContentPaddingStart, mContentPaddingEnd); Pair<Integer, Integer> margins = mQSPanel.getVisualSideMargins(); // Apply paddings based on QSPanel mQSCustomizer.setContentPaddings(margins.first, margins.second); } else if (view == mHeader) { // The header contains the QQS panel which needs to have special padding, to // visually align them. Loading
packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +5 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.util.Pair; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; Loading Loading @@ -1080,6 +1081,10 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne updateTileLayoutMargins(); } public Pair<Integer, Integer> getVisualSideMargins() { return new Pair(mVisualMarginStart, mUsingHorizontalLayout ? 0 : mVisualMarginEnd); } private void updateTileLayoutMargins() { int marginEnd = mVisualMarginEnd; if (mUsingHorizontalLayout) { Loading
packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java +17 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,7 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene layout.setSpanSizeLookup(mTileAdapter.getSizeLookup()); mRecyclerView.setLayoutManager(layout); mRecyclerView.addItemDecoration(mTileAdapter.getItemDecoration()); mRecyclerView.addItemDecoration(mTileAdapter.getMarginItemDecoration()); DefaultItemAnimator animator = new DefaultItemAnimator(); animator.setMoveDuration(TileAdapter.MOVE_DURATION); mRecyclerView.setItemAnimator(animator); Loading Loading @@ -221,6 +222,22 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene } } /** * Sets the padding for the RecyclerView. Also, updates the margin between the tiles in the * {@link TileAdapter}. */ public void setContentPaddings(int paddingStart, int paddingEnd) { int halfMargin = mContext.getResources() .getDimensionPixelSize(R.dimen.qs_tile_margin_horizontal) / 2; mTileAdapter.changeHalfMargin(halfMargin); mRecyclerView.setPaddingRelative( paddingStart, mRecyclerView.getPaddingTop(), paddingEnd, mRecyclerView.getPaddingBottom() ); } private void queryTiles() { mTileQueryHelper.queryTiles(mHost); } Loading
packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java +30 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Handler; import android.view.LayoutInflater; Loading Loading @@ -75,6 +76,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta private final List<TileInfo> mTiles = new ArrayList<>(); private final ItemTouchHelper mItemTouchHelper; private final ItemDecoration mDecoration; private final MarginTileDecoration mMarginDecoration; private final int mMinNumTiles; private int mEditIndex; private int mTileDividerIndex; Loading @@ -97,6 +99,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta mUiEventLogger = uiEventLogger; mItemTouchHelper = new ItemTouchHelper(mCallbacks); mDecoration = new TileItemDecoration(context); mMarginDecoration = new MarginTileDecoration(); mMinNumTiles = context.getResources().getInteger(R.integer.quick_settings_min_num_tiles); mAccessibilityDelegate = new TileAdapterDelegate(); } Loading @@ -123,6 +126,14 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta return mDecoration; } public ItemDecoration getMarginItemDecoration() { return mMarginDecoration; } public void changeHalfMargin(int halfMargin) { mMarginDecoration.setHalfMargin(halfMargin); } public void saveSpecs(QSTileHost host) { List<String> newSpecs = new ArrayList<>(); clearAccessibilityState(); Loading Loading @@ -596,7 +607,6 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta mDrawable = context.getDrawable(R.drawable.qs_customize_tile_decoration); } @Override public void onDraw(Canvas c, RecyclerView parent, State state) { super.onDraw(c, parent, state); Loading Loading @@ -630,6 +640,25 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } } private static class MarginTileDecoration extends ItemDecoration { private int mHalfMargin; public void setHalfMargin(int halfMargin) { mHalfMargin = halfMargin; } @Override public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull State state) { if (view instanceof TextView) { super.getItemOffsets(outRect, view, parent, state); } else { outRect.left = mHalfMargin; outRect.right = mHalfMargin; } } } private final ItemTouchHelper.Callback mCallbacks = new ItemTouchHelper.Callback() { @Override Loading