From 9f7aec8d4317d0407a41e12f236c962b225cb4c3 Mon Sep 17 00:00:00 2001 From: Patrick Dubroy Date: Mon, 6 Sep 2010 11:03:37 -0700 Subject: [PATCH] Implement selection mode for All Apps with delete and info actions. --- res/drawable-xlarge/info_button.png | Bin 2591 -> 2315 bytes res/drawable-xlarge/trashcan.png | Bin 3087 -> 2516 bytes res/drawable-xlarge/trashcan_hover.png | Bin 4892 -> 3582 bytes res/layout-xlarge/all_apps_tabbed.xml | 3 +- res/layout-xlarge/launcher.xml | 18 +++---- res/values-xlarge/styles.xml | 5 ++ res/values/strings.xml | 11 ++++ res/values/styles.xml | 5 +- .../android/launcher2/AllAppsPagedView.java | 49 ++++++++++++------ src/com/android/launcher2/Launcher.java | 2 +- src/com/android/launcher2/PagedView.java | 37 ++++++++++--- 11 files changed, 94 insertions(+), 36 deletions(-) diff --git a/res/drawable-xlarge/info_button.png b/res/drawable-xlarge/info_button.png index e3b27f426357c36fd34bd117b8fc4ba31ebb6873..253cdf74b649c8176282d9804975215b28e5406c 100644 GIT binary patch literal 2315 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 diff --git a/res/drawable-xlarge/trashcan_hover.png b/res/drawable-xlarge/trashcan_hover.png index 38695cdd2e6cf346a574a167e23a8fd8885c080d..3ac6922a715d7126eb3a2c0f3b5dcec2a2267c32 100644 GIT binary patch literal 3582 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 Ef)o<_ga7~l literal 4892 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 + android:background="#30000000" + android:paddingTop="?android:attr/windowActionBarSize"> @@ -48,15 +49,14 @@ + android:layout_height="?android:attr/windowActionBarSize" + android:layout_gravity="top"> + + + + diff --git a/src/com/android/launcher2/AllAppsPagedView.java b/src/com/android/launcher2/AllAppsPagedView.java index 0aa77245a9..bdd7066f2b 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 bee69b90d2..637f79fb79 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 48f42a1ca1..df3f0ccad8 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 checked = getCheckedGrandchildren();