summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurentiu Nicola <grayshade@gmail.com>2014-06-27 18:43:37 +0300
committerLaurentiu Nicola <lnicola@dend.ro>2014-07-05 19:32:31 +0300
commit7486acf210463f27a8d1b0ca895cf20389022426 (patch)
tree26131083982dddc194aea5d6403ce2a04f02cea2
parent522afddb9445d5388491362077d17f262b1ff9a9 (diff)
downloadandroid_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.xml13
-rw-r--r--src/com/andrew/apollo/adapters/ProfileSongAdapter.java14
-rw-r--r--src/com/andrew/apollo/adapters/SongAdapter.java5
-rw-r--r--src/com/andrew/apollo/loaders/ArtistSongLoader.java12
-rw-r--r--src/com/andrew/apollo/loaders/GenreSongLoader.java12
-rw-r--r--src/com/andrew/apollo/loaders/LastAddedLoader.java12
-rw-r--r--src/com/andrew/apollo/loaders/NowPlayingCursor.java4
-rw-r--r--src/com/andrew/apollo/loaders/PlaylistSongLoader.java13
-rw-r--r--src/com/andrew/apollo/loaders/QueueLoader.java8
-rw-r--r--src/com/andrew/apollo/loaders/SongLoader.java12
-rw-r--r--src/com/andrew/apollo/ui/MusicHolder.java18
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