package org.devtcg.five.activity;
import org.devtcg.five.R;
import org.devtcg.five.provider.Five;
import org.devtcg.five.provider.util.ArtistItem;
import org.devtcg.five.widget.AbstractMainItemAdapter;
import org.devtcg.five.widget.AbstractMainListActivity;
import org.devtcg.five.widget.MainItemHolder;
import android.content.Context;
import android.content.Intent;
import android.database.CharArrayBuffer;
import android.database.Cursor;
import android.net.Uri;
import android.view.View;
import android.widget.FilterQueryProvider;
import android.widget.ListView;
import android.widget.TextView;
public class ArtistList extends AbstractMainListActivity
{
public static void show(Context context)
{
context.startActivity(new Intent(context, ArtistList.class));
}
@Override
protected ArtistAdapter createListAdapter()
{
return new ArtistAdapter(this, new QueryProvider(Five.Music.Artists.NAME,
Five.Music.Artists.CONTENT_URI));
}
protected ArtistAdapter getAdapter()
{
return (ArtistAdapter)mAdapter;
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
ArtistAlbumList.show(this, getAdapter().getItemDAO(position));
}
private class ArtistAdapter extends AbstractMainItemAdapter<Holder, ArtistItem>
{
private ArtistAdapter(Context context, FilterQueryProvider provider)
{
super(context, R.layout.artist_list_item, provider);
}
@Override
protected void onAttachItemDAO(Cursor cursor)
{
mItemDAO = new ArtistItem(cursor);
}
protected Uri getCurrentRowBadgeUri()
{
return mItemDAO.getPhotoUri();
}
@Override
public void bindView(View view, Context context, Cursor cursor)
{
super.bindView(view, context, cursor);
Holder holder = getHolder(view);
mItemDAO.getFullName(holder.nameBuffer);
holder.nameView.setText(holder.nameBuffer.data, 0, holder.nameBuffer.sizeCopied);
holder.countView.setText(getArtistCounts(mItemDAO, holder.countBuffer));
}
private String getArtistCounts(ArtistItem artist, StringBuilder buffer)
{
int nalbums = artist.getNumAlbums();
int nsongs = artist.getNumSongs();
buffer.setLength(0);
buffer.append(nalbums).append(" album");
if (nalbums != 1)
buffer.append('s');
buffer.append(", ");
buffer.append(nsongs).append(" song");
if (nsongs != 1)
buffer.append('s');
return buffer.toString();
}
@Override
protected Holder newHolder(View view)
{
return new Holder(view);
}
}
private class Holder extends MainItemHolder
{
public final TextView nameView;
public final TextView countView;
public final CharArrayBuffer nameBuffer = new CharArrayBuffer(64);
public final StringBuilder countBuffer = new StringBuilder();
public Holder(View view)
{
super(view, R.drawable.picture_contact_placeholder);
nameView = (TextView)view.findViewById(R.id.artist_name);
countView = (TextView)view.findViewById(R.id.artist_counts);
}
}
}