package com.tadpolemusic.activity.dialog; import java.util.List; import android.app.Activity; import android.app.Dialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.widget.AdapterView; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import com.tadpolemusic.R; import com.tadpolemusic.TMLog; import com.tadpolemusic.VEApplication; import com.tadpolemusic.adapter.ListViewAdapter; import com.tadpolemusic.media.MusicData; import com.tadpolemusic.media.MusicPlayState; import com.tadpolemusic.media.MusicPlayer; import com.tadpolemusic.media.PlayAsyncTask; import com.tadpolemusic.media.PlayListInfo; import com.tadpolemusic.media.service.MusicPlayerProxy; /** * * * <br>========================== * <br> author:Zenip * <br> email:lxyczh@gmail.com * <br> create:2013-3-8 * <br>========================== */ public class PlayListDialog extends Dialog { private static final String TAG = "PlayListDialog"; private ViewGroup mDialogCenter; private ViewGroup mHeader; private ViewGroup mContent; private TextView mTextViewTitle; private ViewGroup mBackground; private Button mBtnClear; private ListView mListViewPlayList; private ListViewAdapter<MusicData> mListApdater; private List<MusicData> mPlayList; private PlayListInfo mCurPlayListInfo; private Handler mHandler = new Handler(); private BroadcastReceiver mMusicPlayerReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { final PlayListDialog me = PlayListDialog.this; if (intent.getAction().equals(MusicPlayer.BROCAST_NAME)) { final Bundle data = intent.getExtras(); final int state = data.getInt(MusicPlayState.PLAY_STATE_NAME, MusicPlayState.MPS_INVALID); final int playListIndex = data.getInt(MusicPlayState.PLAY_MUSIC_INDEX); Log.d(VEApplication.TAG, " onReceive intent action = " + intent.getAction() + ", state = " + state + ", playListIndex = " + playListIndex); mHandler.post(new Runnable() { @Override public void run() { final ListViewAdapter adapter = mListApdater; if (adapter != null) { adapter.setSelectedPostion(playListIndex); adapter.notifyDataSetChanged(); } } }); } } }; public PlayListDialog(final Context context) { super(context, R.style.Dialog_Alert); setContentView(R.layout.dialog_anchor_play_list); final PlayListDialog me = this; // button clear mBtnClear = (Button) findViewById(R.id.btn_clear); mBtnClear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { me.dismissInternal(); new PlayListClearDialog(v.getContext()).setPositiveButtonListener(new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { final MusicPlayerProxy musicProxy = VEApplication.getMusicPlayer(context); musicProxy.clearPlayingList(); me.loadData(context); } }).show(); } }); // Title mTextViewTitle = (TextView) this.findViewById(R.id.title); //---------------------------------------------------- // Play List //---------------------------------------------------- mListViewPlayList = (ListView) findViewById(R.id.listview_play_list); mListApdater = new ListViewAdapter<MusicData>((Activity) context) { @Override public View getView(int position, View convertView, ViewGroup parent) { View view = LayoutInflater.from(context).inflate(R.layout.list_item_dialog_anchor_play_list, null); TextView textViewMusicName = (TextView) view.findViewById(R.id.textview_music_name); MusicData item = (MusicData) getItem(position); textViewMusicName.setText(item.musicName); int color = context.getResources().getColor(R.color.simple_black); if (this.getSelectedPostion() == position) { color = context.getResources().getColor(R.color.simple_orange); } textViewMusicName.setTextColor(color); return view; } }; mListViewPlayList.setAdapter(mListApdater); mListViewPlayList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) { new PlayAsyncTask(context, mPlayList, mCurPlayListInfo.playListID).execute(pos); mListApdater.setSelectedPostion(pos); } }); //----------------------------------------------- // other //---------------------------------------------- mBackground = (ViewGroup) this.findViewById(R.id.dialog_background); mDialogCenter = (ViewGroup) this.findViewById(R.id.dialog_center); mHeader = (ViewGroup) this.findViewById(R.id.header); mContent = (ViewGroup) this.findViewById(R.id.content); mBackground.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { me.dismissInternal(); } }); //defaut config this.setCancelable(true); loadData(context); } private void loadData(final Context context) { new AsyncTask<String, String, String>() { @Override protected void onPostExecute(String result) { super.onPostExecute(result); mListViewPlayList.setSelection(mCurPlayListInfo.playingIndex); mListApdater.setList(mPlayList); mListApdater.setSelectedPostion(mCurPlayListInfo.playingIndex); mListApdater.notifyDataSetChanged(); mTextViewTitle.setText("播放队列(" + mPlayList.size() + ")"); } @Override protected String doInBackground(String... params) { MusicPlayerProxy musicProxy = VEApplication.getMusicPlayer(context); mPlayList = musicProxy.getFileList(); TMLog.step(TAG, "playList.length=" + mPlayList.size()); mCurPlayListInfo = musicProxy.getCurPlayListInfo(); return ""; } }.execute(); } public void setTitle(String s) { mTextViewTitle.setText(s); } public void dismissInternal() { final PlayListDialog me = this; mDialogCenter.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.popup_center_scale_out)); Animation ani = AnimationUtils.loadAnimation(getContext(), R.anim.fade_out); ani.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { PlayListDialog.super.dismiss(); } }); mBackground.startAnimation(ani); } @Override public void show() { super.show(); mDialogCenter.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.popup_center_scale_in)); mBackground.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.fade_in)); } @Override protected void onStart() { super.onStart(); getContext().registerReceiver(mMusicPlayerReceiver, VEApplication.getMusicPlayer(getContext()).getBrocastIntentFilter()); } @Override protected void onStop() { super.onStop(); getContext().unregisterReceiver(mMusicPlayerReceiver); }; }