package com.ideabag.playtunes.adapter;
import com.ideabag.playtunes.R;
import com.ideabag.playtunes.PlaylistManager;
import com.ideabag.playtunes.database.MediaQuery;
import com.ideabag.playtunes.media.PlaylistMediaPlayer;
import com.ideabag.playtunes.util.StarToggleTask;
import com.ideabag.playtunes.widget.StarButton;
import android.content.Context;
import android.provider.MediaStore;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.ToggleButton;
public class PlaylistsOneAdapter extends SongListAdapter {
private String PLAYLIST_ID;
public String PLAYLIST_NAME;
public boolean isEditing = false;
PlaylistManager mPlaylistManager;
public static final String[] SELECTION = new String[] {
// The ID of the media item must be the first thing in the selection
MediaStore.Audio.Playlists.Members.AUDIO_ID,
MediaStore.Audio.Playlists.Members.TITLE,
MediaStore.Audio.Playlists.Members.ARTIST,
MediaStore.Audio.Playlists.Members.ALBUM,
MediaStore.Audio.Playlists.Members.DATA,
MediaStore.Audio.Playlists.Members._ID,
MediaStore.Audio.Playlists.Members.PLAYLIST_ID,
MediaStore.Audio.Playlists.Members.PLAY_ORDER
};
public PlaylistsOneAdapter( Context context, String playlist_id, View.OnClickListener menuClickListener, MediaQuery.OnQueryCompletedListener listener ) {
this( context, playlist_id, menuClickListener );
mPlaylistManager = new PlaylistManager( context );
setOnQueryCompletedListener( listener );
}
public PlaylistsOneAdapter( Context context, String playlist_id, View.OnClickListener menuClickListener ) {
super( context, menuClickListener );
PLAYLIST_ID = playlist_id;
//android.util.Log.i( "starred adapter", "" + playlist_id );
mQuery = new MediaQuery(
MediaStore.Audio.Playlists.Members.getContentUri( "external", Long.parseLong( PLAYLIST_ID ) ),
SELECTION,
MediaStore.Audio.Playlists.Members.PLAYLIST_ID + "=?",
new String[] {
PLAYLIST_ID
},
MediaStore.Audio.Playlists.Members.PLAY_ORDER
);
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_song, null );
holder.starButton = ( StarButton ) convertView.findViewById( R.id.StarButton );
holder.starButton.setOnClickListener( songMenuClickListener );
holder.menuButton = ( ImageButton ) convertView.findViewById( R.id.MenuButton );
holder.menuButton.setOnClickListener( songMenuClickListener );
holder.removeButton = ( ImageButton ) convertView.findViewById( R.id.RemoveButton );
holder.removeButton.setOnClickListener( songMenuClickListener );
holder.dragButton = convertView.findViewById( R.id.DragButton );
holder.songTitle = ( TextView ) convertView.findViewById( R.id.SongTitle );
holder.songAlbum = ( TextView ) convertView.findViewById( R.id.SongAlbum );
holder.songArtist = ( TextView ) convertView.findViewById( R.id.SongArtist );
holder.row = ( ViewGroup ) convertView;
convertView.setTag( holder );
} else {
holder = ( ViewHolder ) convertView.getTag();
}
mCursor.moveToPosition( position );
String songTitle = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Playlists.Members.TITLE ) );
String songArtist = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Media.ARTIST ) );
String songAlbum = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Media.ALBUM ) );
String song_id = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Playlists.Members.AUDIO_ID ) );
new StarToggleTask( holder.starButton ).execute( song_id );
holder.songTitle.setText( songTitle );
holder.songArtist.setText( songArtist );
holder.songAlbum.setText( songAlbum );
holder.starButton.setTag( R.id.tag_song_id, song_id );
holder.menuButton.setTag( R.id.tag_song_id, song_id );
holder.removeButton.setTag( R.id.tag_song_id, song_id );
if ( !this.isEditing ) {
holder.starButton.setVisibility( View.VISIBLE );
holder.menuButton.setVisibility( View.VISIBLE );
holder.dragButton.setVisibility( View.GONE );
holder.removeButton.setVisibility( View.GONE );
} else {
holder.starButton.setVisibility( View.GONE );
holder.menuButton.setVisibility( View.GONE );
holder.dragButton.setVisibility( View.VISIBLE );
holder.removeButton.setVisibility( View.VISIBLE );
}
// TODO: Add now playing indicator
if ( null != mNowPlayingMediaID && mNowPlayingMediaID.equals( song_id ) ) {
// Is now playing
holder.row.setBackgroundResource( R.drawable.indicator );
} else {
holder.row.setBackgroundResource( android.R.color.transparent );
}
return convertView;
}
public void setEditing( boolean editing ) {
this.isEditing = editing;
this.notifyDataSetChanged();
}
static class ViewHolder {
ViewGroup row;
View dragButton;
StarButton starButton;
ImageButton menuButton;
ImageButton removeButton;
TextView songTitle;
TextView songArtist;
TextView songAlbum;
}
/*
@Override public void swap(int x, int y) {
mPlaylistManager.moveTrack( PLAYLIST_ID, x, y );
}
*/
}