package com.ideabag.playtunes.adapter;
import com.ideabag.playtunes.PlaylistManager;
import com.ideabag.playtunes.R;
import com.ideabag.playtunes.database.MediaQuery;
import com.ideabag.playtunes.util.QueryCountTask;
import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.TextView;
public class PlaylistsAllAdapter extends AsyncQueryAdapter {
protected LayoutInflater inflater;
protected PlaylistManager mPlaylistManager;
protected View.OnClickListener playlistMenuClickListener;
public static final String[] SELECTION = new String[] {
MediaStore.Audio.Playlists.NAME,
MediaStore.Audio.Playlists.DATE_MODIFIED,
MediaStore.Audio.Playlists._ID
};
public PlaylistsAllAdapter( Context context, View.OnClickListener menuClickListener ) {
super( context );
playlistMenuClickListener = menuClickListener;
mPlaylistManager = new PlaylistManager( mContext );
inflater = ( LayoutInflater ) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
mQuery = new MediaQuery(
MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
SELECTION,
MediaStore.Audio.Playlists._ID + " !=?",
new String[] {
mPlaylistManager.createStarredIfNotExist()
},
MediaStore.Audio.Playlists.DATE_MODIFIED + " DESC"
);
requery();
}
@Override public View getView( int position, View convertView, ViewGroup parent ) {
ViewHolder holder;
if ( null == convertView ) {
holder = new ViewHolder();
convertView = inflater.inflate( R.layout.list_item_playlist, null );
holder.menuButton = ( ImageButton ) convertView.findViewById( R.id.PlaylistMenuButton );
holder.menuButton.setOnClickListener( playlistMenuClickListener );
holder.playlistName = ( TextView ) convertView.findViewById( R.id.PlaylistTitle );
holder.songCount = ( TextView ) convertView.findViewById( R.id.SongCount );
convertView.setTag( holder );
} else {
holder = ( ViewHolder ) convertView.getTag();
}
mCursor.moveToPosition( position );
String playlist_id = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Playlists._ID ) );
// Get song count for the given playlist
//MediaStore.Audio.Playlists._COUNT
new QueryCountTask( holder.songCount ).execute(
new MediaQuery(
MediaStore.Audio.Playlists.Members.getContentUri( "external", Long.parseLong( playlist_id ) ),
new String[] {
MediaStore.Audio.Playlists.Members._ID
},
null,
null,
null
)
);
convertView.setTag( R.id.tag_playlist_id, playlist_id );
String playlistTitle = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Playlists.NAME ) );
holder.playlistName.setText( playlistTitle );
//holder.songCount.setText( "" + song_count );
return convertView;
}
static class ViewHolder {
TextView songCount;
TextView playlistName;
ImageButton menuButton;
}
}