summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPatrick Dubroy <dubroy@google.com>2010-09-06 11:03:37 -0700
committerPatrick Dubroy <dubroy@google.com>2010-09-06 17:37:35 -0700
commit9f7aec8d4317d0407a41e12f236c962b225cb4c3 (patch)
tree345278548fa028325acdec41a8f4513b29df47df /src
parent39670182be72e981cc7c26d9099f6e9636d27411 (diff)
downloadandroid_packages_apps_Trebuchet-9f7aec8d4317d0407a41e12f236c962b225cb4c3.tar.gz
android_packages_apps_Trebuchet-9f7aec8d4317d0407a41e12f236c962b225cb4c3.tar.bz2
android_packages_apps_Trebuchet-9f7aec8d4317d0407a41e12f236c962b225cb4c3.zip
Implement selection mode for All Apps with delete and info actions.
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher2/AllAppsPagedView.java49
-rw-r--r--src/com/android/launcher2/Launcher.java2
-rw-r--r--src/com/android/launcher2/PagedView.java37
3 files changed, 63 insertions, 25 deletions
diff --git a/src/com/android/launcher2/AllAppsPagedView.java b/src/com/android/launcher2/AllAppsPagedView.java
index 0aa77245a..bdd7066f2 100644
--- a/src/com/android/launcher2/AllAppsPagedView.java
+++ b/src/com/android/launcher2/AllAppsPagedView.java
@@ -16,14 +16,14 @@
package com.android.launcher2;
-import java.util.ArrayList;
-import java.util.Collections;
+import com.android.launcher.R;
import android.content.ComponentName;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Rect;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.ActionMode;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -33,7 +33,8 @@ import android.view.animation.AnimationUtils;
import android.widget.Checkable;
import android.widget.TextView;
-import com.android.launcher.R;
+import java.util.ArrayList;
+import java.util.Collections;
/**
* An implementation of PagedView that populates the pages of the workspace
@@ -46,6 +47,9 @@ public class AllAppsPagedView extends PagedView
private static final String TAG = "AllAppsPagedView";
private static final boolean DEBUG = false;
+ private static final int MENU_DELETE_APP = 1;
+ private static final int MENU_APP_INFO = 2;
+
private Launcher mLauncher;
private DragController mDragController;
@@ -159,14 +163,19 @@ public class AllAppsPagedView extends PagedView
// if we are already in a choice mode, then just change the selection
if (v instanceof Checkable) {
if (!isChoiceMode(CHOICE_MODE_NONE)) {
+ Checkable c = (Checkable) v;
if (isChoiceMode(CHOICE_MODE_SINGLE)) {
- // reset all the previously checked items if in single selection mode
+ // Uncheck all the other grandchildren, and toggle the clicked one
+ boolean wasChecked = c.isChecked();
resetCheckedGrandchildren();
+ c.setChecked(!wasChecked);
+ } else {
+ c.toggle();
+ }
+ if (getCheckedGrandchildren().size() == 0) {
+ endChoiceMode();
}
- // then toggle this one
- Checkable c = (Checkable) v;
- c.toggle();
return;
}
}
@@ -194,8 +203,6 @@ public class AllAppsPagedView extends PagedView
return false;
}
- /* Uncomment this to enable selection mode with the action bar
-
// start the choice mode, and select the item that was long-pressed
if (isChoiceMode(CHOICE_MODE_NONE)) {
startChoiceMode(CHOICE_MODE_SINGLE, this);
@@ -210,7 +217,6 @@ public class AllAppsPagedView extends PagedView
Checkable c = (Checkable) v;
c.toggle();
}
- */
ApplicationInfo app = (ApplicationInfo) v.getTag();
app = new ApplicationInfo(app);
@@ -391,15 +397,17 @@ public class AllAppsPagedView extends PagedView
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- mDragController.addDropTarget(this);
-
- // REST TO BE IMPLEMENTED BY PAT
- mode.setTitle("Customization title goes here");
+ mode.setTitle(R.string.cab_selection_text);
+ menu.add(0, MENU_APP_INFO, 0, R.string.cab_menu_app_info)
+ .setIcon(R.drawable.info_button);
+ menu.add(0, MENU_DELETE_APP, 0, R.string.cab_menu_delete_app)
+ .setIcon(R.drawable.delete_zone_selector);
return true;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+ mDragController.addDropTarget(this);
return true;
}
@@ -411,8 +419,17 @@ public class AllAppsPagedView extends PagedView
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- // TO BE IMPLEMENTED BY PAT
- // get the checked grandchild, and handle the action here
+ final int id = item.getItemId();
+
+ // Assumes that we are in CHOICE_MODE_SINGLE
+ final View chosenView = (View) getSingleCheckedGrandchild();
+ final ApplicationInfo appInfo = (ApplicationInfo) chosenView.getTag();
+
+ if (id == MENU_APP_INFO) {
+ mLauncher.startApplicationDetailsActivity(appInfo.componentName);
+ } else if (id == MENU_DELETE_APP) {
+ mLauncher.startApplicationUninstallActivity(appInfo.componentName);
+ }
return false;
}
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index bee69b90d..637f79fb7 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -1305,7 +1305,7 @@ public final class Launcher extends Activity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- if (isWorkspaceLocked()) {
+ if (isWorkspaceLocked() || LauncherApplication.isScreenXLarge()) {
return false;
}
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index 48f42a1ca..df3f0ccad 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -16,9 +16,8 @@
package com.android.launcher2;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
+import com.android.launcher.R;
+
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
@@ -26,7 +25,6 @@ import android.graphics.Rect;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
-import android.util.Log;
import android.view.ActionMode;
import android.view.MotionEvent;
import android.view.VelocityTracker;
@@ -40,7 +38,8 @@ import android.view.animation.AnimationUtils;
import android.widget.Checkable;
import android.widget.Scroller;
-import com.android.launcher.R;
+import java.util.ArrayList;
+import java.util.HashMap;
/**
* An abstraction of the original Workspace which supports browsing through a
@@ -104,6 +103,7 @@ public abstract class PagedView extends ViewGroup {
protected static final int CHOICE_MODE_SINGLE = 1;
// Multiple selection mode is not supported by all Launcher actions atm
protected static final int CHOICE_MODE_MULTIPLE = 2;
+
private int mChoiceMode;
private ActionMode mActionMode;
@@ -1011,10 +1011,10 @@ public abstract class PagedView extends ViewGroup {
protected void endChoiceMode() {
if (!isChoiceMode(CHOICE_MODE_NONE)) {
- mActionMode.finish();
- mActionMode = null;
mChoiceMode = CHOICE_MODE_NONE;
resetCheckedGrandchildren();
+ mActionMode.finish();
+ mActionMode = null;
}
}
@@ -1030,7 +1030,7 @@ public abstract class PagedView extends ViewGroup {
final int grandChildCount = layout.getChildCount();
for (int j = 0; j < grandChildCount; ++j) {
final View v = layout.getChildAt(j);
- if (v instanceof Checkable) {
+ if (v instanceof Checkable && ((Checkable) v).isChecked()) {
checked.add((Checkable) v);
}
}
@@ -1038,6 +1038,27 @@ public abstract class PagedView extends ViewGroup {
return checked;
}
+ /**
+ * If in CHOICE_MODE_SINGLE and an item is checked, returns that item.
+ * Otherwise, returns null.
+ */
+ protected Checkable getSingleCheckedGrandchild() {
+ if (mChoiceMode == CHOICE_MODE_SINGLE) {
+ final int childCount = getChildCount();
+ for (int i = 0; i < childCount; ++i) {
+ final PagedViewCellLayout layout = (PagedViewCellLayout) getChildAt(i);
+ final int grandChildCount = layout.getChildCount();
+ for (int j = 0; j < grandChildCount; ++j) {
+ final View v = layout.getChildAt(j);
+ if (v instanceof Checkable && ((Checkable) v).isChecked()) {
+ return (Checkable) v;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
protected void resetCheckedGrandchildren() {
// loop through children, and set all of their children to _not_ be checked
final ArrayList<Checkable> checked = getCheckedGrandchildren();