package com.teleca.jamendo.ui.dialog; import com.teleca.jamendo.api.IServerApi; import com.teleca.jamendo.api_impl.ServerApiImpl; import com.teleca.jamendo.model.Track; import com.teleca.jamendo.model.ErrorMsg; import com.teleca.jamendo.R; import android.app.Activity; import android.app.Dialog; import android.os.AsyncTask; import android.widget.TextView; import android.widget.Toast; import android.widget.ViewFlipper; /** * Dialog representing lyrics * * @author Lukasz Wisniewski */ public class LyricsDialog extends Dialog { private Activity mActivity; /** * Remember last used track */ private static Track mTrack; /** * Remember last used lyrics */ private static String mLyrics; private ViewFlipper mViewFlipper; private TextView mTextView; public LyricsDialog(Activity context, Track track) { super(context); init(context, track); } /** * Sharable code between constructors * * @param context * @param track */ private void init(Activity context, Track track){ mActivity = context; setContentView(R.layout.lyrics); setTitle(R.string.lyrics); mViewFlipper = (ViewFlipper)findViewById(R.id.LyricsViewFlipper); mTextView = (TextView)findViewById(R.id.LyricsTextView); if(track != mTrack){ new LyricsTask().execute(track); } else { showLyrics(); } } /** * Show us the lyrics */ private void showLyrics(){ if(mLyrics == null || mLyrics.equals("null")){ mTextView.setText(R.string.no_lyrics); }else{ mTextView.setText(mLyrics); } mViewFlipper.setDisplayedChild(1); } /** * do background JamendoGet2Api.getTrackLyrics * * @author Lukasz Wisniewski */ private class LyricsTask extends AsyncTask<Track, ErrorMsg, String>{ @Override public String doInBackground(Track... params) { IServerApi service = new ServerApiImpl(); try { return service.getTrackLyrics(params[0]); } catch (ErrorMsg e) { publishProgress(e); dismiss(); this.cancel(true); return null; } } @Override public void onPostExecute(String result) { super.onPostExecute(result); mLyrics = result; showLyrics(); } @Override protected void onProgressUpdate(ErrorMsg... values) { Toast.makeText(mActivity, values[0].getMessage(), Toast.LENGTH_LONG).show(); super.onProgressUpdate(values); } } }