[Android] albums/songs: add PlayAll by clicking on separators
Sébastien Toque
git at videolan.org
Sun May 18 21:08:44 CEST 2014
vlc-ports/android | branch: master | Sébastien Toque <xilasz at gmail.com> | Sun May 18 21:06:42 2014 +0200| [2a994d839e032d0967307f753a3a339f19f5c0a3] | committer: Sébastien Toque
albums/songs: add PlayAll by clicking on separators
> http://git.videolan.org/gitweb.cgi/vlc-ports/android.git/?a=commit;h=2a994d839e032d0967307f753a3a339f19f5c0a3
---
.../vlc/gui/audio/AudioAlbumsSongsFragment.java | 8 ++----
.../vlc/gui/audio/AudioBrowserListAdapter.java | 26 ++++++++++++--------
2 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/vlc-android/src/org/videolan/vlc/gui/audio/AudioAlbumsSongsFragment.java b/vlc-android/src/org/videolan/vlc/gui/audio/AudioAlbumsSongsFragment.java
index f1eb7e9..2f97715 100644
--- a/vlc-android/src/org/videolan/vlc/gui/audio/AudioAlbumsSongsFragment.java
+++ b/vlc-android/src/org/videolan/vlc/gui/audio/AudioAlbumsSongsFragment.java
@@ -316,16 +316,12 @@ public class AudioAlbumsSongsFragment extends SherlockFragment {
mSongsAdapter.clear();
Collections.sort(mediaList, MediaComparators.byAlbum);
- String lastAlbumName = new String();
for (int i = 0; i < mediaList.size(); ++i) {
Media media = mediaList.get(i);
+ mAlbumsAdapter.addSeparator(media.getArtist(), media);
mAlbumsAdapter.add(media.getAlbum(), null, media);
-
- if (!lastAlbumName.equals(media.getAlbum())) {
- mSongsAdapter.addSeparator(media.getAlbum());
- lastAlbumName = media.getAlbum();
- }
+ mSongsAdapter.addSeparator(media.getAlbum(), media);
mSongsAdapter.add(media.getTitle(), null, media);
}
}
diff --git a/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserListAdapter.java b/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserListAdapter.java
index dc00a6d..e7f3f5c 100644
--- a/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserListAdapter.java
+++ b/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserListAdapter.java
@@ -45,6 +45,7 @@ public class AudioBrowserListAdapter extends BaseAdapter {
// Key: the item title, value: ListItem of only media item (no separator).
private Map<String, ListItem> mMediaItemMap;
+ private Map<String, ListItem> mSeparatorItemMap;
// A list of all the list items: media items and separators.
private ArrayList<ListItem> mItems;
@@ -68,12 +69,10 @@ public class AudioBrowserListAdapter extends BaseAdapter {
public ArrayList<Media> mMediaList;
public boolean mIsSeparator;
- public ListItem(String title, String subTitle,
- Media media, boolean isSeparator) {
- if (!isSeparator) {
- mMediaList = new ArrayList<Media>();
+ public ListItem(String title, String subTitle, Media media, boolean isSeparator) {
+ mMediaList = new ArrayList<Media>();
+ if (media != null)
mMediaList.add(media);
- }
mTitle = title;
mSubTitle = subTitle;
mIsSeparator = isSeparator;
@@ -82,6 +81,7 @@ public class AudioBrowserListAdapter extends BaseAdapter {
public AudioBrowserListAdapter(Context context, int itemType) {
mMediaItemMap = new HashMap<String, ListItem>();
+ mSeparatorItemMap = new HashMap<String, ListItem>();
mItems = new ArrayList<ListItem>();
mContext = context;
if (itemType != ITEM_WITHOUT_COVER && itemType != ITEM_WITH_COVER)
@@ -128,9 +128,14 @@ public class AudioBrowserListAdapter extends BaseAdapter {
notifyDataSetChanged();
}
- public void addSeparator(String title) {
- ListItem item = new ListItem(title, null, null, true);
- mItems.add(item);
+ public void addSeparator(String title, Media media) {
+ if (mSeparatorItemMap.containsKey(title))
+ mSeparatorItemMap.get(title).mMediaList.add(media);
+ else {
+ ListItem item = new ListItem(title, null, media, true);
+ mSeparatorItemMap.put(title, item);
+ mItems.add(item);
+ }
notifyDataSetChanged();
}
@@ -159,6 +164,7 @@ public class AudioBrowserListAdapter extends BaseAdapter {
public void clear() {
mMediaItemMap.clear();
+ mSeparatorItemMap.clear();
mItems.clear();
notifyDataSetChanged();
}
@@ -319,7 +325,7 @@ public class AudioBrowserListAdapter extends BaseAdapter {
@Override
public boolean isEnabled(int position) {
- return !mItems.get(position).mIsSeparator;
+ return position < mItems.size() && mItems.get(position).mMediaList.size() > 0;
}
public ArrayList<Media> getMedia(int position) {
@@ -333,7 +339,7 @@ public class AudioBrowserListAdapter extends BaseAdapter {
public ArrayList<String> getLocations(int position) {
// Return all the media locations of a list item list.
ArrayList<String> locations = new ArrayList<String>();
- if (position < mItems.size() && !mItems.get(position).mIsSeparator) {
+ if (isEnabled(position)) {
ArrayList<Media> mediaList = mItems.get(position).mMediaList;
for (int i = 0; i < mediaList.size(); ++i)
locations.add(mediaList.get(i).getLocation());
More information about the Android
mailing list