summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-01-13 16:14:12 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-01-13 16:14:12 -0800
commitfad44241e5ed2b7a28e6918c76ac8afaa78d0d95 (patch)
tree77bf78812f8cdc5f6537b36d6a6d578c961e332a /src/com
parentc0d8068c83517611bbe576ca2aee7e14a22cc5b4 (diff)
parent148467b90777b9d9bb4c5e92f60d6b63bd0b7970 (diff)
downloadandroid_packages_apps_Gallery2-fad44241e5ed2b7a28e6918c76ac8afaa78d0d95.tar.gz
android_packages_apps_Gallery2-fad44241e5ed2b7a28e6918c76ac8afaa78d0d95.tar.bz2
android_packages_apps_Gallery2-fad44241e5ed2b7a28e6918c76ac8afaa78d0d95.zip
Merge "Gallery2: fix display abnormal when select all on timeline page."
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/gallery3d/data/ClusterAlbum.java5
-rw-r--r--src/com/android/gallery3d/data/ClusterAlbumSet.java21
-rw-r--r--src/com/android/gallery3d/data/MediaSet.java16
-rw-r--r--src/com/android/gallery3d/ui/ActionModeHandler.java10
-rw-r--r--src/com/android/gallery3d/ui/SelectionManager.java22
5 files changed, 70 insertions, 4 deletions
diff --git a/src/com/android/gallery3d/data/ClusterAlbum.java b/src/com/android/gallery3d/data/ClusterAlbum.java
index 4f2537a63..1803a5875 100644
--- a/src/com/android/gallery3d/data/ClusterAlbum.java
+++ b/src/com/android/gallery3d/data/ClusterAlbum.java
@@ -83,6 +83,11 @@ public class ClusterAlbum extends MediaSet implements ContentListener {
return mPaths.size();
}
+ @Override
+ public int getSelectableItemCount() {
+ return mPaths.size();
+ }
+
public void setImageItemCount(int count) {
mImageCount = count;
if (mTimelineTitleMediaItem != null && mKind == ClusterSource.CLUSTER_ALBUMSET_TIME) {
diff --git a/src/com/android/gallery3d/data/ClusterAlbumSet.java b/src/com/android/gallery3d/data/ClusterAlbumSet.java
index f9a05524a..97d5fbe13 100644
--- a/src/com/android/gallery3d/data/ClusterAlbumSet.java
+++ b/src/com/android/gallery3d/data/ClusterAlbumSet.java
@@ -36,7 +36,10 @@ public class ClusterAlbumSet extends MediaSet implements ContentListener {
private ArrayList<ClusterAlbum> mAlbums = new ArrayList<ClusterAlbum>();
private boolean mFirstReloadDone;
- private int mTotalMediaItemCount;
+ private int mTotalMediaItemCount;
+ /** mTotalSelectableMediaItemCount is the count of items
+ * exclude not selectable such as Title item in TimeLine. */
+ private int mTotalSelectableMediaItemCount;
private ArrayList<Integer> mAlbumItemCountList;
public ClusterAlbumSet(Path path, GalleryApp application,
@@ -77,6 +80,7 @@ public class ClusterAlbumSet extends MediaSet implements ContentListener {
}
if (mKind == ClusterSource.CLUSTER_ALBUMSET_TIME) {
calculateTotalItemsCount();
+ calculateTotalSelectableItemsCount();
}
}
return mDataVersion;
@@ -185,6 +189,21 @@ public class ClusterAlbumSet extends MediaSet implements ContentListener {
updateClusters();
}
+ private void calculateTotalSelectableItemsCount() {
+ mTotalSelectableMediaItemCount = 0;
+ if (mAlbums != null && mAlbums.size() > 0) {
+ for (ClusterAlbum album : mAlbums) {
+ int count = album.getSelectableItemCount();
+ mTotalSelectableMediaItemCount += count;
+ }
+ }
+ }
+
+ @Override
+ public int getSelectableItemCount() {
+ return mTotalSelectableMediaItemCount;
+ }
+
private void calculateTotalItemsCount() {
mTotalMediaItemCount = 0;
if( mAlbums != null && mAlbums.size() > 0) {
diff --git a/src/com/android/gallery3d/data/MediaSet.java b/src/com/android/gallery3d/data/MediaSet.java
index fc43767f7..b43874070 100644
--- a/src/com/android/gallery3d/data/MediaSet.java
+++ b/src/com/android/gallery3d/data/MediaSet.java
@@ -16,6 +16,7 @@
package com.android.gallery3d.data;
+import android.net.Uri;
import com.android.gallery3d.common.Utils;
import com.android.gallery3d.util.Future;
@@ -70,6 +71,16 @@ public abstract class MediaSet extends MediaObject {
return 0;
}
+ /**
+ * Some items is not selectable. such as Title item in TimeLine.
+ * default return {@link #getMediaItemCount()}, override by subclass if need.
+ *
+ * @return total selectable count.
+ */
+ public int getSelectableItemCount() {
+ return getMediaItemCount();
+ }
+
// Returns the media items in the range [start, start + count).
//
// The number of media items returned may be less than the specified count
@@ -194,6 +205,11 @@ public abstract class MediaSet extends MediaObject {
return details;
}
+ @Override
+ public Uri getContentUri() {
+ return null;
+ }
+
// Enumerate all media items in this media set (including the ones in sub
// media sets), in an efficient order. ItemConsumer.consumer() will be
// called for each media item with its index.
diff --git a/src/com/android/gallery3d/ui/ActionModeHandler.java b/src/com/android/gallery3d/ui/ActionModeHandler.java
index 3ff8ed232..556750714 100644
--- a/src/com/android/gallery3d/ui/ActionModeHandler.java
+++ b/src/com/android/gallery3d/ui/ActionModeHandler.java
@@ -335,7 +335,10 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi
final Intent intent = new Intent();
for (Path path : expandedPaths) {
if (jc.isCancelled()) return null;
- uris.add(manager.getContentUri(path));
+ Uri uri = manager.getContentUri(path);
+ if (uri != null) {
+ uris.add(uri);
+ }
}
final int size = uris.size();
@@ -371,7 +374,10 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi
type |= manager.getMediaType(path);
if ((support & MediaObject.SUPPORT_SHARE) != 0) {
- uris.add(manager.getContentUri(path));
+ Uri uri = manager.getContentUri(path);
+ if (uri != null) {
+ uris.add(uri);
+ }
}
}
diff --git a/src/com/android/gallery3d/ui/SelectionManager.java b/src/com/android/gallery3d/ui/SelectionManager.java
index d7cd16229..3fc251d39 100644
--- a/src/com/android/gallery3d/ui/SelectionManager.java
+++ b/src/com/android/gallery3d/ui/SelectionManager.java
@@ -43,6 +43,9 @@ public class SelectionManager {
private boolean mInSelectionMode;
private boolean mAutoLeave = true;
private int mTotal;
+ /** mTotalSelectable is the count of items
+ * exclude not selectable such as Title item in TimeLine. */
+ private int mTotalSelectable;
public interface SelectionListener {
public void onSelectionModeChange(int mode);
@@ -54,6 +57,7 @@ public class SelectionManager {
mClickedSet = new HashSet<Path>();
mIsAlbumSet = isAlbumSet;
mTotal = -1;
+ mTotalSelectable = -1;
}
// Whether we will leave selection mode automatically once the number of
@@ -70,6 +74,7 @@ public class SelectionManager {
mInverseSelection = true;
mClickedSet.clear();
mTotal = -1;
+ mTotalSelectable = -1;
enterSelectionMode();
if (mListener != null) mListener.onSelectionModeChange(SELECT_ALL_MODE);
}
@@ -119,10 +124,25 @@ public class SelectionManager {
return mTotal;
}
+ /**
+ * Some items is not selectable. such as Title item in TimeLine.
+ *
+ * @return total selectable count.
+ */
+ private int getTotalSelectableCount() {
+ if (mSourceMediaSet == null) return -1;
+ if (mTotalSelectable < 0) {
+ mTotalSelectable = mIsAlbumSet
+ ? mSourceMediaSet.getSubMediaSetCount()
+ : mSourceMediaSet.getSelectableItemCount();
+ }
+ return mTotalSelectable;
+ }
+
public int getSelectedCount() {
int count = mClickedSet.size();
if (mInverseSelection) {
- count = getTotalCount() - count;
+ count = getTotalSelectableCount() - count;
}
return count;
}