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
commit7f9061790e1b67b6c674314ac41a399c550f8b88 (patch)
tree45b654cdcd4a2e3764d6ff5fdf5bbff3d227b443 /src/com/android/gallery3d/ui
parent6ca39c75e668eab51645f33117cae5156f64975d (diff)
downloadandroid_packages_apps_Snap-7f9061790e1b67b6c674314ac41a399c550f8b88.tar.gz
android_packages_apps_Snap-7f9061790e1b67b6c674314ac41a399c550f8b88.tar.bz2
android_packages_apps_Snap-7f9061790e1b67b6c674314ac41a399c550f8b88.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);