summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/gallery3d/app/AlbumSetPage.java2
-rw-r--r--src/com/android/gallery3d/app/PhotoPage.java1
-rw-r--r--src/com/android/gallery3d/ui/ActionModeHandler.java2
-rw-r--r--src/com/android/gallery3d/ui/SelectionManager.java33
4 files changed, 26 insertions, 12 deletions
diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java
index c6e3596ec..8376b2792 100644
--- a/src/com/android/gallery3d/app/AlbumSetPage.java
+++ b/src/com/android/gallery3d/app/AlbumSetPage.java
@@ -545,7 +545,7 @@ public class AlbumSetPage extends ActivityState implements
break;
}
case SelectionManager.SELECT_ALL_MODE: {
- mActionModeHandler.setTitle(getSelectedString());
+ mActionModeHandler.updateSupportedOperation();
mRootPane.invalidate();
break;
}
diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java
index ea3badc79..71a6c8eef 100644
--- a/src/com/android/gallery3d/app/PhotoPage.java
+++ b/src/com/android/gallery3d/app/PhotoPage.java
@@ -212,6 +212,7 @@ public class PhotoPage extends ActivityState implements
}
mMediaSet = mActivity.getDataManager().getMediaSet(mSetPathString);
+ mSelectionManager.setSourceMediaSet(mMediaSet);
mCurrentIndex = data.getInt(KEY_INDEX_HINT, 0);
if (mMediaSet == null) {
Log.w(TAG, "failed to restore " + mSetPathString);
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);