summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authoryongga <yongga@codeaurora.org>2016-01-07 15:14:42 +0800
committeryongga <yongga@codeaurora.org>2016-01-07 15:14:42 +0800
commit148467b90777b9d9bb4c5e92f60d6b63bd0b7970 (patch)
tree59bc920c22cbad047462dc5ac530d79a2493bfde /src
parent701f6401729b727d84b16d58dd8fafb79b23d558 (diff)
downloadandroid_packages_apps_Gallery2-148467b90777b9d9bb4c5e92f60d6b63bd0b7970.tar.gz
android_packages_apps_Gallery2-148467b90777b9d9bb4c5e92f60d6b63bd0b7970.tar.bz2
android_packages_apps_Gallery2-148467b90777b9d9bb4c5e92f60d6b63bd0b7970.zip
Gallery2: fix display abnormal when select all on timeline page.
1. number of selection display more than actual selection, because it include title items. calculate correct number of selection exclude title items. 2. share and delete icon not display because an Exception occurs. Override getContentUri() method in MediaSet.java to avoide exception because getContentUri() of MediaObject.java must be override. Change-Id: Ida549d6f7f5ebfea344dcdfd47f7dad48ba1f65d CRs-Fixed: 948409
Diffstat (limited to 'src')
-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 9f7ffceda..b932f6315 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;
}