Loading packages/SystemUI/res/values/config.xml +0 −3 Original line number Original line Diff line number Diff line Loading @@ -91,9 +91,6 @@ <!-- The number of columns in the QuickSettings --> <!-- The number of columns in the QuickSettings --> <integer name="quick_settings_num_columns">3</integer> <integer name="quick_settings_num_columns">3</integer> <!-- The number of columns in the Quick Settings customizer --> <integer name="quick_settings_edit_num_columns">@integer/quick_settings_num_columns</integer> <!-- The number of rows in the QuickSettings --> <!-- The number of rows in the QuickSettings --> <integer name="quick_settings_max_rows">3</integer> <integer name="quick_settings_max_rows">3</integer> Loading packages/SystemUI/src/com/android/systemui/qs/SideLabelTileLayout.kt +0 −4 Original line number Original line Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.systemui.qs import android.content.Context import android.content.Context import android.util.AttributeSet import android.util.AttributeSet import com.android.systemui.R open class SideLabelTileLayout( open class SideLabelTileLayout( context: Context, context: Context, Loading @@ -28,9 +27,6 @@ open class SideLabelTileLayout( override fun updateResources(): Boolean { override fun updateResources(): Boolean { return super.updateResources().also { return super.updateResources().also { mMaxAllowedRows = 4 mMaxAllowedRows = 4 mCellMarginHorizontal = (mCellMarginHorizontal * 1.2).toInt() mCellMarginVertical = mCellMarginHorizontal mMaxCellHeight = context.resources.getDimensionPixelSize(R.dimen.qs_quick_tile_size) } } } } Loading packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileView.java +7 −6 Original line number Original line Diff line number Diff line Loading @@ -16,19 +16,19 @@ package com.android.systemui.qs.customize; import android.content.Context; import android.content.Context; import android.view.View; import android.view.View; import android.widget.TextView; import com.android.systemui.plugins.qs.QSIconView; import com.android.systemui.plugins.qs.QSIconView; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.tileimpl.QSTileView; import com.android.systemui.qs.tileimpl.QSTileView; public class CustomizeTileView extends QSTileView { public class CustomizeTileView extends QSTileView implements TileAdapter.CustomizeView { private boolean mShowAppLabel; private boolean mShowAppLabel; public CustomizeTileView(Context context, QSIconView icon) { public CustomizeTileView(Context context, QSIconView icon) { super(context, icon); super(context, icon); } } @Override public void setShowAppLabel(boolean showAppLabel) { public void setShowAppLabel(boolean showAppLabel) { mShowAppLabel = showAppLabel; mShowAppLabel = showAppLabel; mSecondLine.setVisibility(showAppLabel ? View.VISIBLE : View.GONE); mSecondLine.setVisibility(showAppLabel ? View.VISIBLE : View.GONE); Loading @@ -41,10 +41,6 @@ public class CustomizeTileView extends QSTileView { mSecondLine.setVisibility(mShowAppLabel ? View.VISIBLE : View.GONE); mSecondLine.setVisibility(mShowAppLabel ? View.VISIBLE : View.GONE); } } public TextView getAppLabel() { return mSecondLine; } @Override @Override protected boolean animationsEnabled() { protected boolean animationsEnabled() { return false; return false; Loading @@ -54,4 +50,9 @@ public class CustomizeTileView extends QSTileView { public boolean isLongClickable() { public boolean isLongClickable() { return false; return false; } } @Override public void changeState(QSTile.State state) { handleStateChanged(state); } } } packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileViewHorizontal.kt 0 → 100644 +50 −0 Original line number Original line Diff line number Diff line package com.android.systemui.qs.customize import android.content.Context import android.graphics.drawable.Drawable import android.view.View import com.android.systemui.plugins.qs.QSIconView import com.android.systemui.plugins.qs.QSTile import com.android.systemui.qs.tileimpl.QSTileViewHorizontal /** * Class for displaying tiles in [QSCustomizer] with the new design (labels on the side). * * This is a class parallel to [CustomizeTileView], but inheriting from [QSTileViewHorizontal]. */ class CustomizeTileViewHorizontal( context: Context, icon: QSIconView ) : QSTileViewHorizontal(context, icon), TileAdapter.CustomizeView { private var showAppLabel = false override fun setShowAppLabel(showAppLabel: Boolean) { this.showAppLabel = showAppLabel mSecondLine.visibility = if (showAppLabel) View.VISIBLE else View.GONE mLabel.isSingleLine = showAppLabel } override fun handleStateChanged(state: QSTile.State) { super.handleStateChanged(state) mSecondLine.visibility = if (showAppLabel) View.VISIBLE else View.GONE } override fun animationsEnabled(): Boolean { return false } override fun isLongClickable(): Boolean { return false } override fun changeState(state: QSTile.State) { handleStateChanged(state) } override fun newTileBackground(): Drawable? { super.newTileBackground() return paintDrawable } } No newline at end of file packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java +56 −25 Original line number Original line Diff line number Diff line Loading @@ -14,6 +14,8 @@ package com.android.systemui.qs.customize; package com.android.systemui.qs.customize; import static com.android.systemui.qs.dagger.QSFlagsModule.QS_LABELS_FLAG; import android.content.ComponentName; import android.content.ComponentName; import android.content.Context; import android.content.Context; import android.content.res.Resources; import android.content.res.Resources; Loading @@ -30,6 +32,7 @@ import android.widget.FrameLayout; import android.widget.TextView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.view.AccessibilityDelegateCompat; import androidx.core.view.AccessibilityDelegateCompat; import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat; import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup; import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup; Loading @@ -41,6 +44,7 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.QSEditEvent; import com.android.systemui.qs.QSEditEvent; import com.android.systemui.qs.QSTileHost; import com.android.systemui.qs.QSTileHost; import com.android.systemui.qs.customize.TileAdapter.Holder; import com.android.systemui.qs.customize.TileAdapter.Holder; Loading @@ -49,11 +53,13 @@ import com.android.systemui.qs.customize.TileQueryHelper.TileStateListener; import com.android.systemui.qs.dagger.QSScope; import com.android.systemui.qs.dagger.QSScope; import com.android.systemui.qs.external.CustomTile; import com.android.systemui.qs.external.CustomTile; import com.android.systemui.qs.tileimpl.QSIconViewImpl; import com.android.systemui.qs.tileimpl.QSIconViewImpl; import com.android.systemui.qs.tileimpl.QSTileView; import java.util.ArrayList; import java.util.ArrayList; import java.util.List; import java.util.List; import javax.inject.Inject; import javax.inject.Inject; import javax.inject.Named; /** */ /** */ @QSScope @QSScope Loading @@ -75,7 +81,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta private static final int ACTION_ADD = 1; private static final int ACTION_ADD = 1; private static final int ACTION_MOVE = 2; private static final int ACTION_MOVE = 2; private static final int NUM_COLUMNS_ID = R.integer.quick_settings_edit_num_columns; private static final int NUM_COLUMNS_ID = R.integer.quick_settings_num_columns; private final Context mContext; private final Context mContext; Loading @@ -102,9 +108,11 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta private final AccessibilityDelegateCompat mAccessibilityDelegate; private final AccessibilityDelegateCompat mAccessibilityDelegate; private RecyclerView mRecyclerView; private RecyclerView mRecyclerView; private int mNumColumns; private int mNumColumns; private final boolean mUseHorizontalTiles; @Inject @Inject public TileAdapter(Context context, QSTileHost qsHost, UiEventLogger uiEventLogger) { public TileAdapter(Context context, QSTileHost qsHost, UiEventLogger uiEventLogger, @Named(QS_LABELS_FLAG) boolean useHorizontalTiles) { mContext = context; mContext = context; mHost = qsHost; mHost = qsHost; mUiEventLogger = uiEventLogger; mUiEventLogger = uiEventLogger; Loading @@ -114,6 +122,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta mMinNumTiles = context.getResources().getInteger(R.integer.quick_settings_min_num_tiles); mMinNumTiles = context.getResources().getInteger(R.integer.quick_settings_min_num_tiles); mNumColumns = context.getResources().getInteger(NUM_COLUMNS_ID); mNumColumns = context.getResources().getInteger(NUM_COLUMNS_ID); mAccessibilityDelegate = new TileAdapterDelegate(); mAccessibilityDelegate = new TileAdapterDelegate(); mUseHorizontalTiles = useHorizontalTiles; } } @Override @Override Loading Loading @@ -271,7 +280,10 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } } FrameLayout frame = (FrameLayout) inflater.inflate(R.layout.qs_customize_tile_frame, parent, FrameLayout frame = (FrameLayout) inflater.inflate(R.layout.qs_customize_tile_frame, parent, false); false); frame.addView(new CustomizeTileView(context, new QSIconViewImpl(context))); View view = mUseHorizontalTiles ? new CustomizeTileViewHorizontal(context, new QSIconViewImpl(context)) : new CustomizeTileView(context, new QSIconViewImpl(context)); frame.addView(view); return new Holder(frame); return new Holder(frame); } } Loading Loading @@ -354,8 +366,9 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } } info.state.expandedAccessibilityClassName = ""; info.state.expandedAccessibilityClassName = ""; holder.mTileView.handleStateChanged(info.state); // The holder has a tileView, therefore this call is not null holder.mTileView.setShowAppLabel(position > mEditIndex && !info.isSystem); holder.getTileAsCustomizeView().changeState(info.state); holder.getTileAsCustomizeView().setShowAppLabel(position > mEditIndex && !info.isSystem); holder.mTileView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); holder.mTileView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); holder.mTileView.setClickable(true); holder.mTileView.setClickable(true); holder.mTileView.setOnClickListener(null); holder.mTileView.setOnClickListener(null); Loading Loading @@ -534,32 +547,42 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } } public class Holder extends ViewHolder { public class Holder extends ViewHolder { private CustomizeTileView mTileView; private QSTileView mTileView; public Holder(View itemView) { public Holder(View itemView) { super(itemView); super(itemView); if (itemView instanceof FrameLayout) { if (itemView instanceof FrameLayout) { mTileView = (CustomizeTileView) ((FrameLayout) itemView).getChildAt(0); mTileView = (QSTileView) ((FrameLayout) itemView).getChildAt(0); if (mTileView instanceof CustomizeTileView) { mTileView.setBackground(null); mTileView.setBackground(null); } mTileView.getIcon().disableAnimation(); mTileView.getIcon().disableAnimation(); mTileView.setTag(this); mTileView.setTag(this); ViewCompat.setAccessibilityDelegate(mTileView, mAccessibilityDelegate); ViewCompat.setAccessibilityDelegate(mTileView, mAccessibilityDelegate); } } } } @Nullable public CustomizeView getTileAsCustomizeView() { return (CustomizeView) mTileView; } public void clearDrag() { public void clearDrag() { itemView.clearAnimation(); itemView.clearAnimation(); if (mTileView instanceof CustomizeTileView) { mTileView.findViewById(R.id.tile_label).clearAnimation(); mTileView.findViewById(R.id.tile_label).clearAnimation(); mTileView.findViewById(R.id.tile_label).setAlpha(1); mTileView.findViewById(R.id.tile_label).setAlpha(1); mTileView.getAppLabel().clearAnimation(); mTileView.getAppLabel().clearAnimation(); mTileView.getAppLabel().setAlpha(.6f); mTileView.getAppLabel().setAlpha(.6f); } } } public void startDrag() { public void startDrag() { itemView.animate() itemView.animate() .setDuration(DRAG_LENGTH) .setDuration(DRAG_LENGTH) .scaleX(DRAG_SCALE) .scaleX(DRAG_SCALE) .scaleY(DRAG_SCALE); .scaleY(DRAG_SCALE); if (mTileView instanceof CustomizeTileView) { mTileView.findViewById(R.id.tile_label).animate() mTileView.findViewById(R.id.tile_label).animate() .setDuration(DRAG_LENGTH) .setDuration(DRAG_LENGTH) .alpha(0); .alpha(0); Loading @@ -567,12 +590,14 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta .setDuration(DRAG_LENGTH) .setDuration(DRAG_LENGTH) .alpha(0); .alpha(0); } } } public void stopDrag() { public void stopDrag() { itemView.animate() itemView.animate() .setDuration(DRAG_LENGTH) .setDuration(DRAG_LENGTH) .scaleX(1) .scaleX(1) .scaleY(1); .scaleY(1); if (mTileView instanceof CustomizeTileView) { mTileView.findViewById(R.id.tile_label).animate() mTileView.findViewById(R.id.tile_label).animate() .setDuration(DRAG_LENGTH) .setDuration(DRAG_LENGTH) .alpha(1); .alpha(1); Loading @@ -580,6 +605,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta .setDuration(DRAG_LENGTH) .setDuration(DRAG_LENGTH) .alpha(.6f); .alpha(.6f); } } } boolean canRemove() { boolean canRemove() { return canRemoveFromPosition(getLayoutPosition()); return canRemoveFromPosition(getLayoutPosition()); Loading Loading @@ -722,7 +748,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta int position = mCurrentDrag.getAdapterPosition(); int position = mCurrentDrag.getAdapterPosition(); if (position == RecyclerView.NO_POSITION) return; if (position == RecyclerView.NO_POSITION) return; TileInfo info = mTiles.get(position); TileInfo info = mTiles.get(position); mCurrentDrag.mTileView.setShowAppLabel( ((CustomizeView) mCurrentDrag.mTileView).setShowAppLabel( position > mEditIndex && !info.isSystem); position > mEditIndex && !info.isSystem); mCurrentDrag.stopDrag(); mCurrentDrag.stopDrag(); mCurrentDrag = null; mCurrentDrag = null; Loading Loading @@ -782,4 +808,9 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta public void onSwiped(ViewHolder viewHolder, int direction) { public void onSwiped(ViewHolder viewHolder, int direction) { } } }; }; interface CustomizeView { void setShowAppLabel(boolean showAppLabel); void changeState(@NonNull QSTile.State state); } } } Loading
packages/SystemUI/res/values/config.xml +0 −3 Original line number Original line Diff line number Diff line Loading @@ -91,9 +91,6 @@ <!-- The number of columns in the QuickSettings --> <!-- The number of columns in the QuickSettings --> <integer name="quick_settings_num_columns">3</integer> <integer name="quick_settings_num_columns">3</integer> <!-- The number of columns in the Quick Settings customizer --> <integer name="quick_settings_edit_num_columns">@integer/quick_settings_num_columns</integer> <!-- The number of rows in the QuickSettings --> <!-- The number of rows in the QuickSettings --> <integer name="quick_settings_max_rows">3</integer> <integer name="quick_settings_max_rows">3</integer> Loading
packages/SystemUI/src/com/android/systemui/qs/SideLabelTileLayout.kt +0 −4 Original line number Original line Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.systemui.qs import android.content.Context import android.content.Context import android.util.AttributeSet import android.util.AttributeSet import com.android.systemui.R open class SideLabelTileLayout( open class SideLabelTileLayout( context: Context, context: Context, Loading @@ -28,9 +27,6 @@ open class SideLabelTileLayout( override fun updateResources(): Boolean { override fun updateResources(): Boolean { return super.updateResources().also { return super.updateResources().also { mMaxAllowedRows = 4 mMaxAllowedRows = 4 mCellMarginHorizontal = (mCellMarginHorizontal * 1.2).toInt() mCellMarginVertical = mCellMarginHorizontal mMaxCellHeight = context.resources.getDimensionPixelSize(R.dimen.qs_quick_tile_size) } } } } Loading
packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileView.java +7 −6 Original line number Original line Diff line number Diff line Loading @@ -16,19 +16,19 @@ package com.android.systemui.qs.customize; import android.content.Context; import android.content.Context; import android.view.View; import android.view.View; import android.widget.TextView; import com.android.systemui.plugins.qs.QSIconView; import com.android.systemui.plugins.qs.QSIconView; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.tileimpl.QSTileView; import com.android.systemui.qs.tileimpl.QSTileView; public class CustomizeTileView extends QSTileView { public class CustomizeTileView extends QSTileView implements TileAdapter.CustomizeView { private boolean mShowAppLabel; private boolean mShowAppLabel; public CustomizeTileView(Context context, QSIconView icon) { public CustomizeTileView(Context context, QSIconView icon) { super(context, icon); super(context, icon); } } @Override public void setShowAppLabel(boolean showAppLabel) { public void setShowAppLabel(boolean showAppLabel) { mShowAppLabel = showAppLabel; mShowAppLabel = showAppLabel; mSecondLine.setVisibility(showAppLabel ? View.VISIBLE : View.GONE); mSecondLine.setVisibility(showAppLabel ? View.VISIBLE : View.GONE); Loading @@ -41,10 +41,6 @@ public class CustomizeTileView extends QSTileView { mSecondLine.setVisibility(mShowAppLabel ? View.VISIBLE : View.GONE); mSecondLine.setVisibility(mShowAppLabel ? View.VISIBLE : View.GONE); } } public TextView getAppLabel() { return mSecondLine; } @Override @Override protected boolean animationsEnabled() { protected boolean animationsEnabled() { return false; return false; Loading @@ -54,4 +50,9 @@ public class CustomizeTileView extends QSTileView { public boolean isLongClickable() { public boolean isLongClickable() { return false; return false; } } @Override public void changeState(QSTile.State state) { handleStateChanged(state); } } }
packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileViewHorizontal.kt 0 → 100644 +50 −0 Original line number Original line Diff line number Diff line package com.android.systemui.qs.customize import android.content.Context import android.graphics.drawable.Drawable import android.view.View import com.android.systemui.plugins.qs.QSIconView import com.android.systemui.plugins.qs.QSTile import com.android.systemui.qs.tileimpl.QSTileViewHorizontal /** * Class for displaying tiles in [QSCustomizer] with the new design (labels on the side). * * This is a class parallel to [CustomizeTileView], but inheriting from [QSTileViewHorizontal]. */ class CustomizeTileViewHorizontal( context: Context, icon: QSIconView ) : QSTileViewHorizontal(context, icon), TileAdapter.CustomizeView { private var showAppLabel = false override fun setShowAppLabel(showAppLabel: Boolean) { this.showAppLabel = showAppLabel mSecondLine.visibility = if (showAppLabel) View.VISIBLE else View.GONE mLabel.isSingleLine = showAppLabel } override fun handleStateChanged(state: QSTile.State) { super.handleStateChanged(state) mSecondLine.visibility = if (showAppLabel) View.VISIBLE else View.GONE } override fun animationsEnabled(): Boolean { return false } override fun isLongClickable(): Boolean { return false } override fun changeState(state: QSTile.State) { handleStateChanged(state) } override fun newTileBackground(): Drawable? { super.newTileBackground() return paintDrawable } } No newline at end of file
packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java +56 −25 Original line number Original line Diff line number Diff line Loading @@ -14,6 +14,8 @@ package com.android.systemui.qs.customize; package com.android.systemui.qs.customize; import static com.android.systemui.qs.dagger.QSFlagsModule.QS_LABELS_FLAG; import android.content.ComponentName; import android.content.ComponentName; import android.content.Context; import android.content.Context; import android.content.res.Resources; import android.content.res.Resources; Loading @@ -30,6 +32,7 @@ import android.widget.FrameLayout; import android.widget.TextView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.view.AccessibilityDelegateCompat; import androidx.core.view.AccessibilityDelegateCompat; import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat; import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup; import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup; Loading @@ -41,6 +44,7 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.QSEditEvent; import com.android.systemui.qs.QSEditEvent; import com.android.systemui.qs.QSTileHost; import com.android.systemui.qs.QSTileHost; import com.android.systemui.qs.customize.TileAdapter.Holder; import com.android.systemui.qs.customize.TileAdapter.Holder; Loading @@ -49,11 +53,13 @@ import com.android.systemui.qs.customize.TileQueryHelper.TileStateListener; import com.android.systemui.qs.dagger.QSScope; import com.android.systemui.qs.dagger.QSScope; import com.android.systemui.qs.external.CustomTile; import com.android.systemui.qs.external.CustomTile; import com.android.systemui.qs.tileimpl.QSIconViewImpl; import com.android.systemui.qs.tileimpl.QSIconViewImpl; import com.android.systemui.qs.tileimpl.QSTileView; import java.util.ArrayList; import java.util.ArrayList; import java.util.List; import java.util.List; import javax.inject.Inject; import javax.inject.Inject; import javax.inject.Named; /** */ /** */ @QSScope @QSScope Loading @@ -75,7 +81,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta private static final int ACTION_ADD = 1; private static final int ACTION_ADD = 1; private static final int ACTION_MOVE = 2; private static final int ACTION_MOVE = 2; private static final int NUM_COLUMNS_ID = R.integer.quick_settings_edit_num_columns; private static final int NUM_COLUMNS_ID = R.integer.quick_settings_num_columns; private final Context mContext; private final Context mContext; Loading @@ -102,9 +108,11 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta private final AccessibilityDelegateCompat mAccessibilityDelegate; private final AccessibilityDelegateCompat mAccessibilityDelegate; private RecyclerView mRecyclerView; private RecyclerView mRecyclerView; private int mNumColumns; private int mNumColumns; private final boolean mUseHorizontalTiles; @Inject @Inject public TileAdapter(Context context, QSTileHost qsHost, UiEventLogger uiEventLogger) { public TileAdapter(Context context, QSTileHost qsHost, UiEventLogger uiEventLogger, @Named(QS_LABELS_FLAG) boolean useHorizontalTiles) { mContext = context; mContext = context; mHost = qsHost; mHost = qsHost; mUiEventLogger = uiEventLogger; mUiEventLogger = uiEventLogger; Loading @@ -114,6 +122,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta mMinNumTiles = context.getResources().getInteger(R.integer.quick_settings_min_num_tiles); mMinNumTiles = context.getResources().getInteger(R.integer.quick_settings_min_num_tiles); mNumColumns = context.getResources().getInteger(NUM_COLUMNS_ID); mNumColumns = context.getResources().getInteger(NUM_COLUMNS_ID); mAccessibilityDelegate = new TileAdapterDelegate(); mAccessibilityDelegate = new TileAdapterDelegate(); mUseHorizontalTiles = useHorizontalTiles; } } @Override @Override Loading Loading @@ -271,7 +280,10 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } } FrameLayout frame = (FrameLayout) inflater.inflate(R.layout.qs_customize_tile_frame, parent, FrameLayout frame = (FrameLayout) inflater.inflate(R.layout.qs_customize_tile_frame, parent, false); false); frame.addView(new CustomizeTileView(context, new QSIconViewImpl(context))); View view = mUseHorizontalTiles ? new CustomizeTileViewHorizontal(context, new QSIconViewImpl(context)) : new CustomizeTileView(context, new QSIconViewImpl(context)); frame.addView(view); return new Holder(frame); return new Holder(frame); } } Loading Loading @@ -354,8 +366,9 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } } info.state.expandedAccessibilityClassName = ""; info.state.expandedAccessibilityClassName = ""; holder.mTileView.handleStateChanged(info.state); // The holder has a tileView, therefore this call is not null holder.mTileView.setShowAppLabel(position > mEditIndex && !info.isSystem); holder.getTileAsCustomizeView().changeState(info.state); holder.getTileAsCustomizeView().setShowAppLabel(position > mEditIndex && !info.isSystem); holder.mTileView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); holder.mTileView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); holder.mTileView.setClickable(true); holder.mTileView.setClickable(true); holder.mTileView.setOnClickListener(null); holder.mTileView.setOnClickListener(null); Loading Loading @@ -534,32 +547,42 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } } public class Holder extends ViewHolder { public class Holder extends ViewHolder { private CustomizeTileView mTileView; private QSTileView mTileView; public Holder(View itemView) { public Holder(View itemView) { super(itemView); super(itemView); if (itemView instanceof FrameLayout) { if (itemView instanceof FrameLayout) { mTileView = (CustomizeTileView) ((FrameLayout) itemView).getChildAt(0); mTileView = (QSTileView) ((FrameLayout) itemView).getChildAt(0); if (mTileView instanceof CustomizeTileView) { mTileView.setBackground(null); mTileView.setBackground(null); } mTileView.getIcon().disableAnimation(); mTileView.getIcon().disableAnimation(); mTileView.setTag(this); mTileView.setTag(this); ViewCompat.setAccessibilityDelegate(mTileView, mAccessibilityDelegate); ViewCompat.setAccessibilityDelegate(mTileView, mAccessibilityDelegate); } } } } @Nullable public CustomizeView getTileAsCustomizeView() { return (CustomizeView) mTileView; } public void clearDrag() { public void clearDrag() { itemView.clearAnimation(); itemView.clearAnimation(); if (mTileView instanceof CustomizeTileView) { mTileView.findViewById(R.id.tile_label).clearAnimation(); mTileView.findViewById(R.id.tile_label).clearAnimation(); mTileView.findViewById(R.id.tile_label).setAlpha(1); mTileView.findViewById(R.id.tile_label).setAlpha(1); mTileView.getAppLabel().clearAnimation(); mTileView.getAppLabel().clearAnimation(); mTileView.getAppLabel().setAlpha(.6f); mTileView.getAppLabel().setAlpha(.6f); } } } public void startDrag() { public void startDrag() { itemView.animate() itemView.animate() .setDuration(DRAG_LENGTH) .setDuration(DRAG_LENGTH) .scaleX(DRAG_SCALE) .scaleX(DRAG_SCALE) .scaleY(DRAG_SCALE); .scaleY(DRAG_SCALE); if (mTileView instanceof CustomizeTileView) { mTileView.findViewById(R.id.tile_label).animate() mTileView.findViewById(R.id.tile_label).animate() .setDuration(DRAG_LENGTH) .setDuration(DRAG_LENGTH) .alpha(0); .alpha(0); Loading @@ -567,12 +590,14 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta .setDuration(DRAG_LENGTH) .setDuration(DRAG_LENGTH) .alpha(0); .alpha(0); } } } public void stopDrag() { public void stopDrag() { itemView.animate() itemView.animate() .setDuration(DRAG_LENGTH) .setDuration(DRAG_LENGTH) .scaleX(1) .scaleX(1) .scaleY(1); .scaleY(1); if (mTileView instanceof CustomizeTileView) { mTileView.findViewById(R.id.tile_label).animate() mTileView.findViewById(R.id.tile_label).animate() .setDuration(DRAG_LENGTH) .setDuration(DRAG_LENGTH) .alpha(1); .alpha(1); Loading @@ -580,6 +605,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta .setDuration(DRAG_LENGTH) .setDuration(DRAG_LENGTH) .alpha(.6f); .alpha(.6f); } } } boolean canRemove() { boolean canRemove() { return canRemoveFromPosition(getLayoutPosition()); return canRemoveFromPosition(getLayoutPosition()); Loading Loading @@ -722,7 +748,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta int position = mCurrentDrag.getAdapterPosition(); int position = mCurrentDrag.getAdapterPosition(); if (position == RecyclerView.NO_POSITION) return; if (position == RecyclerView.NO_POSITION) return; TileInfo info = mTiles.get(position); TileInfo info = mTiles.get(position); mCurrentDrag.mTileView.setShowAppLabel( ((CustomizeView) mCurrentDrag.mTileView).setShowAppLabel( position > mEditIndex && !info.isSystem); position > mEditIndex && !info.isSystem); mCurrentDrag.stopDrag(); mCurrentDrag.stopDrag(); mCurrentDrag = null; mCurrentDrag = null; Loading Loading @@ -782,4 +808,9 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta public void onSwiped(ViewHolder viewHolder, int direction) { public void onSwiped(ViewHolder viewHolder, int direction) { } } }; }; interface CustomizeView { void setShowAppLabel(boolean showAppLabel); void changeState(@NonNull QSTile.State state); } } }