2 package com.andrew.apollo.adapters;
\r
4 import java.lang.ref.WeakReference;
\r
6 import android.content.Context;
\r
7 import android.database.Cursor;
\r
8 import android.graphics.drawable.AnimationDrawable;
\r
9 import android.os.AsyncTask;
\r
10 import android.os.RemoteException;
\r
11 import android.support.v4.widget.SimpleCursorAdapter;
\r
12 import android.view.View;
\r
13 import android.view.ViewGroup;
\r
15 import com.andrew.apollo.Constants;
\r
16 import com.andrew.apollo.R;
\r
17 import com.andrew.apollo.list.fragments.RecentlyAddedFragment;
\r
18 import com.andrew.apollo.tasks.LastfmGetAlbumImages;
\r
19 import com.andrew.apollo.tasks.ViewHolderTask;
\r
20 import com.andrew.apollo.utils.ApolloUtils;
\r
21 import com.andrew.apollo.utils.MusicUtils;
\r
22 import com.andrew.apollo.views.ViewHolderList;
\r
23 import com.androidquery.AQuery;
\r
26 * @author Andrew Neal
\r
28 public class RecentlyAddedAdapter extends SimpleCursorAdapter implements Constants {
\r
30 private AnimationDrawable mPeakOneAnimation, mPeakTwoAnimation;
\r
32 private WeakReference<ViewHolderList> holderReference;
\r
34 public RecentlyAddedAdapter(Context context, int layout, Cursor c, String[] from, int[] to,
\r
36 super(context, layout, c, from, to, flags);
\r
40 public View getView(int position, View convertView, ViewGroup parent) {
\r
41 final View view = super.getView(position, convertView, parent);
\r
43 ViewHolderList viewholder;
\r
47 viewholder = new ViewHolderList(view);
\r
48 holderReference = new WeakReference<ViewHolderList>(viewholder);
\r
49 view.setTag(holderReference.get());
\r
52 viewholder = (ViewHolderList)convertView.getTag();
\r
55 final AQuery aq = new AQuery(convertView);
\r
58 String trackName = mCursor.getString(RecentlyAddedFragment.mTitleIndex);
\r
59 holderReference.get().mViewHolderLineOne.setText(trackName);
\r
62 String artistName = mCursor.getString(RecentlyAddedFragment.mArtistIndex);
\r
63 holderReference.get().mViewHolderLineTwo.setText(artistName);
\r
66 String albumName = mCursor.getString(RecentlyAddedFragment.mAlbumIndex);
\r
69 holderReference.get().position = position;
\r
70 if (aq.shouldDelay(position, view, parent, "")) {
\r
71 holderReference.get().mViewHolderImage.setImageDrawable(null);
\r
73 // Check for missing artwork and cache then cache it
\r
74 if (ApolloUtils.getImageURL(albumName, ALBUM_IMAGE, mContext) == null) {
\r
75 new LastfmGetAlbumImages(mContext, null, 0).executeOnExecutor(
\r
76 AsyncTask.THREAD_POOL_EXECUTOR, artistName, albumName);
\r
78 new ViewHolderTask(holderReference.get(), null, position, mContext, 1, 0,
\r
79 holderReference.get().mViewHolderImage).executeOnExecutor(
\r
80 AsyncTask.THREAD_POOL_EXECUTOR, albumName);
\r
84 holderReference.get().mQuickContext.setVisibility(View.GONE);
\r
86 // Now playing indicator
\r
87 long currentaudioid = MusicUtils.getCurrentAudioId();
\r
88 long audioid = mCursor.getLong(RecentlyAddedFragment.mMediaIdIndex);
\r
89 if (currentaudioid == audioid) {
\r
90 holderReference.get().mPeakOne.setImageResource(R.anim.peak_meter_1);
\r
91 holderReference.get().mPeakTwo.setImageResource(R.anim.peak_meter_2);
\r
92 mPeakOneAnimation = (AnimationDrawable)holderReference.get().mPeakOne.getDrawable();
\r
93 mPeakTwoAnimation = (AnimationDrawable)holderReference.get().mPeakTwo.getDrawable();
\r
95 if (MusicUtils.mService.isPlaying()) {
\r
96 mPeakOneAnimation.start();
\r
97 mPeakTwoAnimation.start();
\r
99 mPeakOneAnimation.stop();
\r
100 mPeakTwoAnimation.stop();
\r
102 } catch (RemoteException e) {
\r
103 e.printStackTrace();
\r
106 holderReference.get().mPeakOne.setImageResource(0);
\r
107 holderReference.get().mPeakTwo.setImageResource(0);
\r