diff options
author | Laurentiu Nicola <grayshade@gmail.com> | 2014-06-27 18:43:37 +0300 |
---|---|---|
committer | Laurentiu Nicola <lnicola@dend.ro> | 2014-07-05 19:32:31 +0300 |
commit | 7486acf210463f27a8d1b0ca895cf20389022426 (patch) | |
tree | 26131083982dddc194aea5d6403ce2a04f02cea2 | |
parent | 522afddb9445d5388491362077d17f262b1ff9a9 (diff) | |
download | android_packages_apps_Eleven-7486acf210463f27a8d1b0ca895cf20389022426.tar.gz android_packages_apps_Eleven-7486acf210463f27a8d1b0ca895cf20389022426.tar.bz2 android_packages_apps_Eleven-7486acf210463f27a8d1b0ca895cf20389022426.zip |
Display the song duration in the queue and info views
Change-Id: Ia76556d55e150142a3c1155126fb41ac12323c43
-rw-r--r-- | res/layout/list_item_simple.xml | 13 | ||||
-rw-r--r-- | src/com/andrew/apollo/adapters/ProfileSongAdapter.java | 14 | ||||
-rw-r--r-- | src/com/andrew/apollo/adapters/SongAdapter.java | 5 | ||||
-rw-r--r-- | src/com/andrew/apollo/loaders/ArtistSongLoader.java | 12 | ||||
-rw-r--r-- | src/com/andrew/apollo/loaders/GenreSongLoader.java | 12 | ||||
-rw-r--r-- | src/com/andrew/apollo/loaders/LastAddedLoader.java | 12 | ||||
-rw-r--r-- | src/com/andrew/apollo/loaders/NowPlayingCursor.java | 4 | ||||
-rw-r--r-- | src/com/andrew/apollo/loaders/PlaylistSongLoader.java | 13 | ||||
-rw-r--r-- | src/com/andrew/apollo/loaders/QueueLoader.java | 8 | ||||
-rw-r--r-- | src/com/andrew/apollo/loaders/SongLoader.java | 12 | ||||
-rw-r--r-- | src/com/andrew/apollo/ui/MusicHolder.java | 18 |
11 files changed, 111 insertions, 12 deletions
diff --git a/res/layout/list_item_simple.xml b/res/layout/list_item_simple.xml index cc887f1..1b10af2 100644 --- a/res/layout/list_item_simple.xml +++ b/res/layout/list_item_simple.xml @@ -27,13 +27,26 @@ android:id="@+id/line_one" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_alignParentLeft="true" android:layout_alignParentTop="true" + android:layout_toLeftOf="@+id/line_one_right" android:singleLine="true" android:textSize="@dimen/text_size_medium" android:textStyle="bold" app:themeResource="line_one" /> <com.andrew.apollo.widgets.theme.ThemeableTextView + android:id="@+id/line_one_right" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentTop="true" + android:layout_alignParentRight="true" + android:paddingRight="@dimen/list_preferred_item_padding" + android:singleLine="true" + android:textSize="@dimen/text_size_medium" + app:themeResource="line_one" /> + + <com.andrew.apollo.widgets.theme.ThemeableTextView android:id="@+id/line_two" android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/src/com/andrew/apollo/adapters/ProfileSongAdapter.java b/src/com/andrew/apollo/adapters/ProfileSongAdapter.java index 2064bf1..1f38a02 100644 --- a/src/com/andrew/apollo/adapters/ProfileSongAdapter.java +++ b/src/com/andrew/apollo/adapters/ProfileSongAdapter.java @@ -162,10 +162,20 @@ public class ProfileSongAdapter extends ArrayAdapter<Song> { switch (mDisplaySetting) { // show duration if on album fragment case DISPLAY_ALBUM_SETTING: + holder.mLineOneRight.get().setVisibility(View.GONE); + holder.mLineTwo.get().setText( MusicUtils.makeTimeString(getContext(), song.mDuration)); break; case DISPLAY_PLAYLIST_SETTING: + if (song.mDuration == -1) { + holder.mLineOneRight.get().setVisibility(View.GONE); + } else { + holder.mLineOneRight.get().setVisibility(View.VISIBLE); + holder.mLineOneRight.get().setText( + MusicUtils.makeTimeString(getContext(), song.mDuration)); + } + final StringBuilder sb = new StringBuilder(song.mArtistName); sb.append(SEPARATOR_STRING); sb.append(song.mAlbumName); @@ -173,6 +183,10 @@ public class ProfileSongAdapter extends ArrayAdapter<Song> { break; case DISPLAY_DEFAULT_SETTING: default: + holder.mLineOneRight.get().setVisibility(View.VISIBLE); + + holder.mLineOneRight.get().setText( + MusicUtils.makeTimeString(getContext(), song.mDuration)); holder.mLineTwo.get().setText(song.mAlbumName); break; } diff --git a/src/com/andrew/apollo/adapters/SongAdapter.java b/src/com/andrew/apollo/adapters/SongAdapter.java index d84bd8a..115ada7 100644 --- a/src/com/andrew/apollo/adapters/SongAdapter.java +++ b/src/com/andrew/apollo/adapters/SongAdapter.java @@ -22,6 +22,7 @@ import com.andrew.apollo.ui.MusicHolder; import com.andrew.apollo.ui.MusicHolder.DataHolder; import com.andrew.apollo.ui.fragments.QueueFragment; import com.andrew.apollo.ui.fragments.SongFragment; +import com.andrew.apollo.utils.MusicUtils; /** * This {@link ArrayAdapter} is used to display all of the songs on a user's @@ -81,6 +82,8 @@ public class SongAdapter extends ArrayAdapter<Song> { // Set each song name (line one) holder.mLineOne.get().setText(dataHolder.mLineOne); + // Set the song duration (line one, right) + holder.mLineOneRight.get().setText(dataHolder.mLineOneRight); // Set the album name (line two) holder.mLineTwo.get().setText(dataHolder.mLineTwo); return convertView; @@ -119,6 +122,8 @@ public class SongAdapter extends ArrayAdapter<Song> { mData[i].mItemId = song.mSongId; // Song names (line one) mData[i].mLineOne = song.mSongName; + // Song duration (line one, right) + mData[i].mLineOneRight = MusicUtils.makeTimeString(getContext(), song.mDuration); // Album names (line two) mData[i].mLineTwo = song.mAlbumName; } diff --git a/src/com/andrew/apollo/loaders/ArtistSongLoader.java b/src/com/andrew/apollo/loaders/ArtistSongLoader.java index 76f3eb3..5947cfe 100644 --- a/src/com/andrew/apollo/loaders/ArtistSongLoader.java +++ b/src/com/andrew/apollo/loaders/ArtistSongLoader.java @@ -80,8 +80,14 @@ public class ArtistSongLoader extends WrappedAsyncTaskLoader<List<Song>> { // Copy the album name final String album = mCursor.getString(3); + // Copy the duration + final long duration = mCursor.getLong(4); + + // Convert the duration into seconds + final int durationInSecs = (int) duration / 1000; + // Create a new song - final Song song = new Song(id, songName, artist, album, -1); + final Song song = new Song(id, songName, artist, album, durationInSecs); // Add everything up mSongList.add(song); @@ -115,7 +121,9 @@ public class ArtistSongLoader extends WrappedAsyncTaskLoader<List<Song>> { /* 2 */ AudioColumns.ARTIST, /* 3 */ - AudioColumns.ALBUM + AudioColumns.ALBUM, + /* 4 */ + AudioColumns.DURATION }, selection.toString(), null, PreferenceUtils.getInstance(context).getArtistSongSortOrder()); } diff --git a/src/com/andrew/apollo/loaders/GenreSongLoader.java b/src/com/andrew/apollo/loaders/GenreSongLoader.java index 4a52080..a051f1a 100644 --- a/src/com/andrew/apollo/loaders/GenreSongLoader.java +++ b/src/com/andrew/apollo/loaders/GenreSongLoader.java @@ -77,8 +77,14 @@ public class GenreSongLoader extends WrappedAsyncTaskLoader<List<Song>> { // Copy the artist name final String artist = mCursor.getString(3); + // Copy the duration + final long duration = mCursor.getLong(4); + + // Convert the duration into seconds + final int durationInSecs = (int) duration / 1000; + // Create a new song - final Song song = new Song(id, songName, artist, album, -1); + final Song song = new Song(id, songName, artist, album, durationInSecs); // Add everything up mSongList.add(song); @@ -111,7 +117,9 @@ public class GenreSongLoader extends WrappedAsyncTaskLoader<List<Song>> { /* 2 */ MediaStore.Audio.Genres.Members.ALBUM, /* 3 */ - MediaStore.Audio.Genres.Members.ARTIST + MediaStore.Audio.Genres.Members.ARTIST, + /* 4 */ + MediaStore.Audio.Genres.Members.DURATION }, selection.toString(), null, MediaStore.Audio.Genres.Members.DEFAULT_SORT_ORDER); } } diff --git a/src/com/andrew/apollo/loaders/LastAddedLoader.java b/src/com/andrew/apollo/loaders/LastAddedLoader.java index bbc982a..b47a014 100644 --- a/src/com/andrew/apollo/loaders/LastAddedLoader.java +++ b/src/com/andrew/apollo/loaders/LastAddedLoader.java @@ -72,8 +72,14 @@ public class LastAddedLoader extends WrappedAsyncTaskLoader<List<Song>> { // Copy the album name final String album = mCursor.getString(3); + // Copy the duration + final long duration = mCursor.getLong(4); + + // Convert the duration into seconds + final int durationInSecs = (int) duration / 1000; + // Create a new song - final Song song = new Song(id, songName, artist, album, -1); + final Song song = new Song(id, songName, artist, album, durationInSecs); // Add everything up mSongList.add(song); @@ -107,7 +113,9 @@ public class LastAddedLoader extends WrappedAsyncTaskLoader<List<Song>> { /* 2 */ AudioColumns.ARTIST, /* 3 */ - AudioColumns.ALBUM + AudioColumns.ALBUM, + /* 4 */ + AudioColumns.DURATION }, selection.toString(), null, MediaStore.Audio.Media.DATE_ADDED + " DESC"); } } diff --git a/src/com/andrew/apollo/loaders/NowPlayingCursor.java b/src/com/andrew/apollo/loaders/NowPlayingCursor.java index 5811dbf..2db01f5 100644 --- a/src/com/andrew/apollo/loaders/NowPlayingCursor.java +++ b/src/com/andrew/apollo/loaders/NowPlayingCursor.java @@ -32,7 +32,9 @@ public class NowPlayingCursor extends AbstractCursor { /* 2 */ AudioColumns.ARTIST, /* 3 */ - AudioColumns.ALBUM + AudioColumns.ALBUM, + /* 4 */ + AudioColumns.DURATION }; private final Context mContext; diff --git a/src/com/andrew/apollo/loaders/PlaylistSongLoader.java b/src/com/andrew/apollo/loaders/PlaylistSongLoader.java index c66d622..816233b 100644 --- a/src/com/andrew/apollo/loaders/PlaylistSongLoader.java +++ b/src/com/andrew/apollo/loaders/PlaylistSongLoader.java @@ -82,8 +82,15 @@ public class PlaylistSongLoader extends WrappedAsyncTaskLoader<List<Song>> { final String album = mCursor.getString(mCursor .getColumnIndexOrThrow(AudioColumns.ALBUM)); + // Copy the duration + final long duration = mCursor.getLong(mCursor + .getColumnIndexOrThrow(AudioColumns.DURATION)); + + // Convert the duration into seconds + final int durationInSecs = (int) duration / 1000; + // Create a new song - final Song song = new Song(id, songName, artist, album, -1); + final Song song = new Song(id, songName, artist, album, durationInSecs); // Add everything up mSongList.add(song); @@ -120,7 +127,9 @@ public class PlaylistSongLoader extends WrappedAsyncTaskLoader<List<Song>> { /* 3 */ AudioColumns.ARTIST, /* 4 */ - AudioColumns.ALBUM + AudioColumns.ALBUM, + /* 5 */ + AudioColumns.DURATION }, mSelection.toString(), null, MediaStore.Audio.Playlists.Members.DEFAULT_SORT_ORDER); } diff --git a/src/com/andrew/apollo/loaders/QueueLoader.java b/src/com/andrew/apollo/loaders/QueueLoader.java index e7c2052..ea3e9f0 100644 --- a/src/com/andrew/apollo/loaders/QueueLoader.java +++ b/src/com/andrew/apollo/loaders/QueueLoader.java @@ -68,8 +68,14 @@ public class QueueLoader extends WrappedAsyncTaskLoader<List<Song>> { // Copy the album name final String album = mCursor.getString(3); + // Copy the duration + final long duration = mCursor.getLong(4); + + // Convert the duration into seconds + final int durationInSecs = (int) duration / 1000; + // Create a new song - final Song song = new Song(id, songName, artist, album, -1); + final Song song = new Song(id, songName, artist, album, durationInSecs); // Add everything up mSongList.add(song); diff --git a/src/com/andrew/apollo/loaders/SongLoader.java b/src/com/andrew/apollo/loaders/SongLoader.java index 071959f..95e0134 100644 --- a/src/com/andrew/apollo/loaders/SongLoader.java +++ b/src/com/andrew/apollo/loaders/SongLoader.java @@ -73,8 +73,14 @@ public class SongLoader extends WrappedAsyncTaskLoader<List<Song>> { // Copy the album name final String album = mCursor.getString(3); + // Copy the duration + final long duration = mCursor.getLong(4); + + // Convert the duration into seconds + final int durationInSecs = (int) duration / 1000; + // Create a new song - final Song song = new Song(id, songName, artist, album, -1); + final Song song = new Song(id, songName, artist, album, durationInSecs); // Add everything up mSongList.add(song); @@ -107,7 +113,9 @@ public class SongLoader extends WrappedAsyncTaskLoader<List<Song>> { /* 2 */ AudioColumns.ARTIST, /* 3 */ - AudioColumns.ALBUM + AudioColumns.ALBUM, + /* 4 */ + AudioColumns.DURATION }, mSelection.toString(), null, PreferenceUtils.getInstance(context).getSongSortOrder()); } diff --git a/src/com/andrew/apollo/ui/MusicHolder.java b/src/com/andrew/apollo/ui/MusicHolder.java index 6ca5eb7..037158f 100644 --- a/src/com/andrew/apollo/ui/MusicHolder.java +++ b/src/com/andrew/apollo/ui/MusicHolder.java @@ -55,6 +55,13 @@ public class MusicHolder { public WeakReference<TextView> mLineOne; /** + * This is displayed on the right side of the first line in the list or grid + * + * @see {@code #getView()} of a specific adapter for more detailed info + */ + public WeakReference<TextView> mLineOneRight; + + /** * This is the second line displayed in the list or grid * * @see {@code #getView()} of a specific adapter for more detailed info @@ -89,6 +96,10 @@ public class MusicHolder { // Initialize mLineOne mLineOne = new WeakReference<TextView>((TextView)view.findViewById(R.id.line_one)); + // Initialize mLineOneRight + mLineOneRight = new WeakReference<TextView>( + (TextView)view.findViewById(R.id.line_one_right)); + // Initialize mLineTwo mLineTwo = new WeakReference<TextView>((TextView)view.findViewById(R.id.line_two)); @@ -114,6 +125,13 @@ public class MusicHolder { public String mLineOne; /** + * This is displayed on the right side of the first line in the list or grid + * + * @see {@code #getView()} of a specific adapter for more detailed info + */ + public String mLineOneRight; + + /** * This is the second line displayed in the list or grid * * @see {@code #getView()} of a specific adapter for more detailed info |