summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChao Zhang <chaoz@codeaurora.org>2016-01-16 19:04:31 +0800
committerChao Zhang <chaoz@codeaurora.org>2016-01-22 10:39:21 +0800
commit404ad5b76b60a1d78fd48a3ed920e64ffc0f5525 (patch)
tree921b74e2a331e42cebc8585982fcff8e94339466
parentf4c20173d8622563f5bd80ef4d15525286cf601e (diff)
downloadandroid_packages_apps_Gallery2-404ad5b76b60a1d78fd48a3ed920e64ffc0f5525.tar.gz
android_packages_apps_Gallery2-404ad5b76b60a1d78fd48a3ed920e64ffc0f5525.tar.bz2
android_packages_apps_Gallery2-404ad5b76b60a1d78fd48a3ed920e64ffc0f5525.zip
Gallery2: fix share abnormal when select 300 photos.
SelectManager add all path in ArrayList, so selected count is not the same as actual count. Just add selectable path in SelectManager. Change-Id: I76cc1505e65fceff1785a02badd17569e46b4947 CRs-Fixed: 963290
-rw-r--r--src/com/android/gallery3d/data/MediaObject.java8
-rw-r--r--src/com/android/gallery3d/ui/ActionModeHandler.java14
-rw-r--r--src/com/android/gallery3d/ui/SelectionManager.java18
3 files changed, 25 insertions, 15 deletions
diff --git a/src/com/android/gallery3d/data/MediaObject.java b/src/com/android/gallery3d/data/MediaObject.java
index 6f8eef3ac..61f6d7cf6 100644
--- a/src/com/android/gallery3d/data/MediaObject.java
+++ b/src/com/android/gallery3d/data/MediaObject.java
@@ -173,4 +173,12 @@ public abstract class MediaObject {
}
throw new IllegalArgumentException();
}
+
+ /** Some Media Item is not selectable such as Title item in TimeLine. */
+ public boolean isSelectable() {
+ if (getMediaType() == MediaObject.MEDIA_TYPE_TIMELINE_TITLE) {
+ return false;
+ }
+ return true;
+ }
}
diff --git a/src/com/android/gallery3d/ui/ActionModeHandler.java b/src/com/android/gallery3d/ui/ActionModeHandler.java
index 2a844ba99..19a7c5885 100644
--- a/src/com/android/gallery3d/ui/ActionModeHandler.java
+++ b/src/com/android/gallery3d/ui/ActionModeHandler.java
@@ -285,21 +285,13 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi
return null;
}
MediaObject mediaObject = manager.getMediaObject(path);
- if (checkMediaTypeSelectable(mediaObject.getMediaType())) {
+ if (mediaObject != null && mediaObject.isSelectable()) {
selected.add(mediaObject);
}
}
return selected;
}
- /** Some Media Item is not selectable such as Title item in TimeLine. */
- private boolean checkMediaTypeSelectable(int type) {
- if (type == MediaObject.MEDIA_TYPE_TIMELINE_TITLE) {
- return false;
- }
- return true;
- }
-
// Menu options are determined by selection set itself.
// We cannot expand it because MenuExecuter executes it based on
// the selection set instead of the expanded result.
@@ -452,9 +444,9 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi
}
int numSelected = selected.size();
final boolean canSharePanoramas =
- numSelected < MAX_SELECTED_ITEMS_FOR_PANORAMA_SHARE_INTENT;
+ numSelected <= MAX_SELECTED_ITEMS_FOR_PANORAMA_SHARE_INTENT;
final boolean canShare =
- numSelected < MAX_SELECTED_ITEMS_FOR_SHARE_INTENT;
+ numSelected <= MAX_SELECTED_ITEMS_FOR_SHARE_INTENT;
final GetAllPanoramaSupports supportCallback = canSharePanoramas ?
new GetAllPanoramaSupports(selected, jc)
diff --git a/src/com/android/gallery3d/ui/SelectionManager.java b/src/com/android/gallery3d/ui/SelectionManager.java
index 3fc251d39..85616263c 100644
--- a/src/com/android/gallery3d/ui/SelectionManager.java
+++ b/src/com/android/gallery3d/ui/SelectionManager.java
@@ -19,6 +19,7 @@ package com.android.gallery3d.ui;
import com.android.gallery3d.app.AbstractGalleryActivity;
import com.android.gallery3d.data.DataManager;
import com.android.gallery3d.data.MediaItem;
+import com.android.gallery3d.data.MediaObject;
import com.android.gallery3d.data.MediaSet;
import com.android.gallery3d.data.Path;
@@ -227,7 +228,7 @@ public class SelectionManager {
return null;
}
} else {
- selected.add(id);
+ addPathIfSelectable(selected, id);
if (selected.size() > maxSelection) {
return null;
}
@@ -242,7 +243,7 @@ public class SelectionManager {
return null;
}
} else {
- selected.add(id);
+ addPathIfSelectable(selected, id);
if (selected.size() > maxSelection) {
return null;
}
@@ -259,7 +260,7 @@ public class SelectionManager {
for (MediaItem item : list) {
Path id = item.getPath();
if (!mClickedSet.contains(id)) {
- selected.add(id);
+ addPathIfSelectable(selected, id);
if (selected.size() > maxSelection) {
return null;
}
@@ -269,7 +270,7 @@ public class SelectionManager {
}
} else {
for (Path id : mClickedSet) {
- selected.add(id);
+ addPathIfSelectable(selected, id);
if (selected.size() > maxSelection) {
return null;
}
@@ -279,6 +280,15 @@ public class SelectionManager {
return selected;
}
+ private void addPathIfSelectable(ArrayList<Path> selected, Path path) {
+ if (mDataManager != null) {
+ MediaObject mediaObject = mDataManager.getMediaObject(path);
+ if (mediaObject != null && mediaObject.isSelectable()) {
+ selected.add(path);
+ }
+ }
+ }
+
public void setSourceMediaSet(MediaSet set) {
mSourceMediaSet = set;
mTotal = -1;