summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/ui
diff options
context:
space:
mode:
authorRay Chen <raychen@google.com>2012-05-03 13:10:51 +0800
committerRay Chen <raychen@google.com>2012-05-22 11:06:48 +0800
commit21c2e665fdc1d1af0c91ab9c104d13fb7dc2444e (patch)
tree8d9e745cd2915dac7e3487ecf0ca63a623865889 /src/com/android/gallery3d/ui
parent3efc2b24e29f7591993c43ef2653332054203578 (diff)
downloadandroid_packages_apps_Gallery2-21c2e665fdc1d1af0c91ab9c104d13fb7dc2444e.tar.gz
android_packages_apps_Gallery2-21c2e665fdc1d1af0c91ab9c104d13fb7dc2444e.tar.bz2
android_packages_apps_Gallery2-21c2e665fdc1d1af0c91ab9c104d13fb7dc2444e.zip
Fix 6360834 Select All is shown in place of Deselect all option
The CL changes the SelectionManager's toggle method so it changes itself to inverse selection mode when all items are already selected, and onSelectionModeChange will be triggered so the listener can update the selection menu (Select all/Deselect all) and ActionBar. Change-Id: I9aa5507067415e52f6800c254ecb4d68e7395ffa b: 6360834
Diffstat (limited to 'src/com/android/gallery3d/ui')
-rw-r--r--src/com/android/gallery3d/ui/ActionModeHandler.java2
-rw-r--r--src/com/android/gallery3d/ui/SelectionManager.java33
2 files changed, 24 insertions, 11 deletions
diff --git a/src/com/android/gallery3d/ui/ActionModeHandler.java b/src/com/android/gallery3d/ui/ActionModeHandler.java
index c5773ed3e..746d41d4b 100644
--- a/src/com/android/gallery3d/ui/ActionModeHandler.java
+++ b/src/com/android/gallery3d/ui/ActionModeHandler.java
@@ -283,6 +283,8 @@ public class ActionModeHandler implements ActionMode.Callback {
mMenuTask.cancel();
}
+ updateSelectionMenu();
+
// Disable share action until share intent is in good shape
final MenuItem item = mShareActionProvider != null ?
mMenu.findItem(R.id.action_share) : null;
diff --git a/src/com/android/gallery3d/ui/SelectionManager.java b/src/com/android/gallery3d/ui/SelectionManager.java
index 1783b1111..86e92da90 100644
--- a/src/com/android/gallery3d/ui/SelectionManager.java
+++ b/src/com/android/gallery3d/ui/SelectionManager.java
@@ -107,15 +107,21 @@ public class SelectionManager {
return mInverseSelection ^ mClickedSet.contains(itemId);
}
+ private int getTotalCount() {
+ if (mSourceMediaSet == null) return -1;
+
+ if (mTotal < 0) {
+ mTotal = mIsAlbumSet
+ ? mSourceMediaSet.getSubMediaSetCount()
+ : mSourceMediaSet.getMediaItemCount();
+ }
+ return mTotal;
+ }
+
public int getSelectedCount() {
int count = mClickedSet.size();
if (mInverseSelection) {
- if (mTotal < 0) {
- mTotal = mIsAlbumSet
- ? mSourceMediaSet.getSubMediaSetCount()
- : mSourceMediaSet.getMediaItemCount();
- }
- count = mTotal - count;
+ count = getTotalCount() - count;
}
return count;
}
@@ -128,8 +134,14 @@ public class SelectionManager {
mClickedSet.add(path);
}
+ // Convert to inverse selection mode if everything is selected.
+ int count = getSelectedCount();
+ if (count == getTotalCount()) {
+ selectAll();
+ }
+
if (mListener != null) mListener.onSelectionChange(path, isItemSelected(path));
- if (getSelectedCount() == 0 && mAutoLeave) {
+ if (count == 0 && mAutoLeave) {
leaveSelectionMode();
}
}
@@ -159,8 +171,8 @@ public class SelectionManager {
ArrayList<Path> selected = new ArrayList<Path>();
if (mIsAlbumSet) {
if (mInverseSelection) {
- int max = mSourceMediaSet.getSubMediaSetCount();
- for (int i = 0; i < max; i++) {
+ int total = getTotalCount();
+ for (int i = 0; i < total; i++) {
MediaSet set = mSourceMediaSet.getSubMediaSet(i);
Path id = set.getPath();
if (!mClickedSet.contains(id)) {
@@ -182,8 +194,7 @@ public class SelectionManager {
}
} else {
if (mInverseSelection) {
-
- int total = mSourceMediaSet.getMediaItemCount();
+ int total = getTotalCount();
int index = 0;
while (index < total) {
int count = Math.min(total - index, MediaSet.MEDIAITEM_BATCH_FETCH_COUNT);