OSDN Git Service

Rewrite image fetching and caching
[android-x86/packages-apps-Eleven.git] / src / com / andrew / apollo / adapters / ArtistAlbumAdapter.java
1 \r
2 package com.andrew.apollo.adapters;\r
3 \r
4 import android.content.Context;\r
5 import android.database.Cursor;\r
6 import android.graphics.drawable.AnimationDrawable;\r
7 import android.os.RemoteException;\r
8 import android.support.v4.widget.SimpleCursorAdapter;\r
9 import android.view.View;\r
10 import android.view.ViewGroup;\r
11 import com.andrew.apollo.R;\r
12 import com.andrew.apollo.list.fragments.ArtistAlbumsFragment;\r
13 import com.andrew.apollo.utils.ImageUtils;\r
14 import com.andrew.apollo.utils.MusicUtils;\r
15 import com.andrew.apollo.views.ViewHolderList;\r
16 import com.androidquery.AQuery;\r
17 \r
18 import java.lang.ref.WeakReference;\r
19 \r
20 /**\r
21  * @author Andrew Neal\r
22  */\r
23 public class ArtistAlbumAdapter extends SimpleCursorAdapter {\r
24 \r
25     private AnimationDrawable mPeakOneAnimation, mPeakTwoAnimation;\r
26 \r
27     private WeakReference<ViewHolderList> holderReference;\r
28 \r
29     public ArtistAlbumAdapter(Context context, int layout, Cursor c, String[] from, int[] to,\r
30             int flags) {\r
31         super(context, layout, c, from, to, flags);\r
32     }\r
33 \r
34     /**\r
35      * Used to quickly our the ContextMenu\r
36      */\r
37     private final View.OnClickListener showContextMenu = new View.OnClickListener() {\r
38         @Override\r
39         public void onClick(View v) {\r
40             v.showContextMenu();\r
41         }\r
42     };\r
43 \r
44     @Override\r
45     public View getView(int position, View convertView, ViewGroup parent) {\r
46         final View view = super.getView(position, convertView, parent);\r
47         // ViewHolderList\r
48         ViewHolderList viewholder;\r
49 \r
50         if (view != null) {\r
51 \r
52             viewholder = new ViewHolderList(view);\r
53             holderReference = new WeakReference<ViewHolderList>(viewholder);\r
54             view.setTag(holderReference.get());\r
55 \r
56         } else {\r
57             viewholder = (ViewHolderList)convertView.getTag();\r
58         }\r
59 \r
60         // AQuery\r
61         AQuery aq = new AQuery(view);\r
62 \r
63         // Album name\r
64         String albumName = mCursor.getString(ArtistAlbumsFragment.mAlbumNameIndex);\r
65         holderReference.get().mViewHolderLineOne.setText(albumName);\r
66 \r
67         // Artist name\r
68         String artistName = mCursor.getString(ArtistAlbumsFragment.mArtistNameIndex);\r
69 \r
70         // Number of songs\r
71         int songs_plural = mCursor.getInt(ArtistAlbumsFragment.mSongCountIndex);\r
72         String numSongs = MusicUtils.makeAlbumsLabel(mContext, 0, songs_plural, true);\r
73         holderReference.get().mViewHolderLineTwo.setText(numSongs);\r
74 \r
75         ImageUtils.setAlbumImage(viewholder.mViewHolderImage, artistName, albumName);\r
76 \r
77         holderReference.get().mQuickContext.setOnClickListener(showContextMenu);\r
78 \r
79         // Now playing indicator\r
80         long currentalbumid = MusicUtils.getCurrentAlbumId();\r
81         long albumid = mCursor.getLong(ArtistAlbumsFragment.mAlbumIdIndex);\r
82         if (currentalbumid == albumid) {\r
83             holderReference.get().mPeakOne.setImageResource(R.anim.peak_meter_1);\r
84             holderReference.get().mPeakTwo.setImageResource(R.anim.peak_meter_2);\r
85             mPeakOneAnimation = (AnimationDrawable)holderReference.get().mPeakOne.getDrawable();\r
86             mPeakTwoAnimation = (AnimationDrawable)holderReference.get().mPeakTwo.getDrawable();\r
87             try {\r
88                 if (MusicUtils.mService.isPlaying()) {\r
89                     mPeakOneAnimation.start();\r
90                     mPeakTwoAnimation.start();\r
91                 } else {\r
92                     mPeakOneAnimation.stop();\r
93                     mPeakTwoAnimation.stop();\r
94                 }\r
95             } catch (RemoteException e) {\r
96                 e.printStackTrace();\r
97             }\r
98         } else {\r
99             holderReference.get().mPeakOne.setImageResource(0);\r
100             holderReference.get().mPeakTwo.setImageResource(0);\r
101         }\r
102         return view;\r
103     }\r
104 }\r