diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-01-13 16:14:12 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-01-13 16:14:12 -0800 |
| commit | fad44241e5ed2b7a28e6918c76ac8afaa78d0d95 (patch) | |
| tree | 77bf78812f8cdc5f6537b36d6a6d578c961e332a /src/com | |
| parent | c0d8068c83517611bbe576ca2aee7e14a22cc5b4 (diff) | |
| parent | 148467b90777b9d9bb4c5e92f60d6b63bd0b7970 (diff) | |
| download | android_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.java | 5 | ||||
| -rw-r--r-- | src/com/android/gallery3d/data/ClusterAlbumSet.java | 21 | ||||
| -rw-r--r-- | src/com/android/gallery3d/data/MediaSet.java | 16 | ||||
| -rw-r--r-- | src/com/android/gallery3d/ui/ActionModeHandler.java | 10 | ||||
| -rw-r--r-- | src/com/android/gallery3d/ui/SelectionManager.java | 22 |
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; } |
