package com.teleca.jamendo.ui.loadDialog;
import java.util.Hashtable;
import org.json.JSONException;
import android.app.Activity;
import com.teleca.jamendo.MyApplication;
import com.teleca.jamendo.activity.playview.PlayView;
import com.teleca.jamendo.activity.playview.PlayMethod;
import com.teleca.jamendo.api.IServerApi;
import com.teleca.jamendo.api_impl.ServerApiImpl;
import com.teleca.jamendo.model.Album;
import com.teleca.jamendo.model.ErrorMsg;
import com.teleca.jamendo.model.Playlist;
import com.teleca.jamendo.model.Track;
/**
* 热门歌曲加载对话框
*
* @author lilin
* @date 2012-1-6 下午10:35:02
* @ClassName: HotSongLoadDialog
*/
public class HotSongLoadDialog extends LoadDialog<Void, PlayMethod> {
public Activity activity;
// 构造方法1
public HotSongLoadDialog(Activity activity, int loadingMsg, int failMsg) {
super(activity, loadingMsg, failMsg);
this.activity = activity;
}
// 构造方法2
public HotSongLoadDialog(Activity activity, String loadingMsg,
String failMsg) {
super(activity, loadingMsg, failMsg);
this.activity = activity;
}
public PlayMethod doInBackground(Void... params) {
IServerApi server = new ServerApiImpl();
int[] id = null;
try {
id = server.getTop100Listened();
Album[] albums = server.getAlbumsByTracksId(id);
Track[] tracks = server.getTracksByTracksId(id, MyApplication
.getInstance().getStreamEncoding());
if (albums == null || tracks == null)
return null;
Hashtable<Integer, Playlist> hashtable = new Hashtable<Integer, Playlist>();
for (int i = 0; i < tracks.length; i++) {
Playlist playlistEntry = new Playlist();
playlistEntry.setAlbum(albums[i]);
playlistEntry.setTrack(tracks[i]);
hashtable.put(tracks[i].getId(), playlistEntry);
}
// creating playlist in the correct order
PlayMethod playlist = new PlayMethod();
for (int i = 0; i < id.length; i++) {
playlist.addPlaylistEntry(hashtable.get(id[i]));
}
return playlist;
} catch (JSONException e) {
e.printStackTrace();
} catch (ErrorMsg e) {
publishProgress(e);
}
return null;
}
public void doStuffWithResult(PlayMethod playlist) {
if (playlist.size() <= 0) {
failLoadMsg();
return;
}
PlayView.launch(activity, playlist);
}
}