package org.freemp.droid.player; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.support.v7.widget.ListPopupWindow; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import org.freemp.droid.ClsTrack; import org.freemp.droid.MediaUtils; import org.freemp.droid.R; import org.freemp.droid.web.ActFreemporg; import java.util.ArrayList; import java.util.List; /** * Created with IntelliJ IDEA. * User: recoilme * Date: 28/11/13 * Time: 17:25 * To change this template use File | Settings | File Templates. */ public class AdpPlayer extends BaseAdapter { Activity activity; List<ClsTrack> mItems = new ArrayList<>(); float scale; LayoutInflater mInflater; int mSelectedTrackColor, mDefaultTrackColor; public AdpPlayer(Activity activity, List<ClsTrack> data) { //super(data, false); this.activity = activity; mItems = data; scale = activity.getResources().getDisplayMetrics().density; mSelectedTrackColor = activity.getResources().getColor(R.color.text_header); mDefaultTrackColor = activity.getResources().getColor(R.color.text_rowslave); } public void replaceTrackList(List<ClsTrack> data) { if (data == mItems) { return; } if (data != null) { mItems = data; } else { mItems = new ArrayList<ClsTrack>(); } notifyDataSetChanged(); } @Override public int getCount() { return mItems.size(); } @Override public Object getItem(int position) { return mItems.get(position); } @Override public long getItemId(int position) { return getItem(position).hashCode(); } @Override public View getView(int position, View convertView, ViewGroup parent) { CellViewHolder holder; if (convertView == null) { if (mInflater == null) { mInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } convertView = mInflater.inflate(R.layout.player_cell, null); holder = new CellViewHolder(); holder.index = (TextView) convertView.findViewById(R.id.cell_index); holder.artist = (TextView) convertView.findViewById(R.id.cell_artist); holder.title = (TextView) convertView.findViewById(R.id.cell_title); holder.duration = (TextView) convertView.findViewById(R.id.cell_duration); holder.menu = (ImageView) convertView.findViewById(R.id.cell_menu); convertView.setTag(holder); } else { holder = (CellViewHolder) convertView.getTag(); } final ClsTrack currentTrack = (ClsTrack) getItem(position); int sec = currentTrack.getDuration(); int min = sec / 60; sec %= 60; holder.index.setText((position + 1) + "."); holder.artist.setText(currentTrack.getArtist()); holder.title.setText(currentTrack.getTitle()); holder.duration.setText(String.format("%2d:%02d", min, sec)); holder.menu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showContextMenu(v, currentTrack); } }); int currentTrackColor = (position == ActPlayer.selected) ? mSelectedTrackColor : mDefaultTrackColor; holder.title.setTextColor(currentTrackColor); return convertView; } @Override public boolean hasStableIds() { return true; } private void showContextMenu(View anchorView, final ClsTrack o) { List<String> menuMusic = new ArrayList<String>(); menuMusic.add(activity.getString(R.string.search) + ": " + o.getArtist()); menuMusic.add(activity.getString(R.string.contextmenu_setasringtone)); final ListPopupWindow popup = new ListPopupWindow(activity); popup.setAdapter(new ArrayAdapter<String>(activity, android.R.layout.simple_list_item_1, menuMusic.toArray(new String[menuMusic.size()]))); popup.setAnchorView(anchorView); popup.setModal(true); popup.setWidth(Math.max(600, anchorView.getWidth())); popup.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { popup.dismiss(); switch (position) { case 0: Intent intent = new Intent(activity, ActFreemporg.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("q", o.getArtist()); activity.startActivity(intent); break; case 1: AlertDialog.Builder bld = new AlertDialog.Builder(activity); bld.setMessage(R.string.areyousure); bld.setNeutralButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { MediaUtils.setRingtone(activity, o); } }); bld.create().show(); break; } } }); popup.show(); } static class CellViewHolder { public TextView index; public TextView artist; public TextView title; public TextView duration; public ImageView menu; } }