summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/res/values/strings.xml3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java29
2 files changed, 24 insertions, 8 deletions
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index e0e666c22ee8..c5b32222e2b1 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -1850,6 +1850,9 @@
<!-- Label for area where tiles can be dragged in to [CHAR LIMIT=60] -->
<string name="drag_to_remove_tiles">Drag here to remove</string>
+ <!-- Label to indicate to users that additional tiles cannot be removed. [CHAR LIMIT=60] -->
+ <string name="drag_to_remove_disabled">You need at least 6 tiles</string>
+
<!-- Button to edit the tile ordering of quick settings [CHAR LIMIT=60] -->
<string name="qs_edit">Edit</string>
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 bdc5e7d75b48..3ba5fe67fe00 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
@@ -42,19 +42,19 @@ import android.widget.TextView;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto;
import com.android.systemui.R;
-import com.android.systemui.qs.tileimpl.QSIconViewImpl;
+import com.android.systemui.qs.QSTileHost;
import com.android.systemui.qs.customize.TileAdapter.Holder;
import com.android.systemui.qs.customize.TileQueryHelper.TileInfo;
import com.android.systemui.qs.customize.TileQueryHelper.TileStateListener;
import com.android.systemui.qs.external.CustomTile;
-import com.android.systemui.qs.QSTileHost;
+import com.android.systemui.qs.tileimpl.QSIconViewImpl;
import com.android.systemui.statusbar.phone.SystemUIDialog;
import java.util.ArrayList;
import java.util.List;
public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileStateListener {
-
+ private static final int MIN_NUM_TILES = 6;
private static final long DRAG_LENGTH = 100;
private static final float DRAG_SCALE = 1.2f;
public static final long MOVE_DURATION = 150;
@@ -219,9 +219,15 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
return;
}
if (holder.getItemViewType() == TYPE_EDIT) {
- ((TextView) holder.itemView.findViewById(android.R.id.title)).setText(
- mCurrentDrag != null ? R.string.drag_to_remove_tiles
- : R.string.drag_to_add_tiles);
+ final int titleResId;
+ if (mCurrentDrag == null) {
+ titleResId = R.string.drag_to_add_tiles;
+ } else if (!canRemoveTiles() && mCurrentDrag.getAdapterPosition() < mEditIndex) {
+ titleResId = R.string.drag_to_remove_disabled;
+ } else {
+ titleResId = R.string.drag_to_remove_tiles;
+ }
+ ((TextView) holder.itemView.findViewById(android.R.id.title)).setText(titleResId);
return;
}
if (holder.getItemViewType() == TYPE_ACCESSIBLE_DROP) {
@@ -286,7 +292,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
if (mAccessibilityMoving) {
selectPosition(position, v);
} else {
- if (position < mEditIndex) {
+ if (position < mEditIndex && canRemoveTiles()) {
showAccessibilityDialog(position, v);
} else {
startAccessibleDrag(position);
@@ -297,6 +303,10 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
}
}
}
+
+ private boolean canRemoveTiles() {
+ return mCurrentSpecs.size() > MIN_NUM_TILES;
+ }
private void selectPosition(int position, View v) {
// Remove the placeholder.
@@ -507,7 +517,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
break;
}
}
- };
+ }
private final ItemTouchHelper.Callback mCallbacks = new ItemTouchHelper.Callback() {
@@ -551,6 +561,9 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
@Override
public boolean canDropOver(RecyclerView recyclerView, ViewHolder current,
ViewHolder target) {
+ if (!canRemoveTiles() && current.getAdapterPosition() < mEditIndex) {
+ return target.getAdapterPosition() < mEditIndex;
+ }
return target.getAdapterPosition() <= mEditIndex + 1;
}