package com.sdsmdg.harjot.MusicDNA.fragments.QueueFragment; import android.content.Context; import android.graphics.Color; import android.graphics.Typeface; import android.os.AsyncTask; import android.support.v4.view.MotionEventCompat; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.sdsmdg.harjot.MusicDNA.customviews.CustomPlayingIndicator; import com.sdsmdg.harjot.MusicDNA.itemtouchhelpers.ItemTouchHelperAdapter; import com.sdsmdg.harjot.MusicDNA.itemtouchhelpers.ItemTouchHelperViewHolder; import com.sdsmdg.harjot.MusicDNA.activities.HomeActivity; import com.sdsmdg.harjot.MusicDNA.models.LocalTrack; import com.sdsmdg.harjot.MusicDNA.models.Track; import com.sdsmdg.harjot.MusicDNA.models.UnifiedTrack; import com.sdsmdg.harjot.MusicDNA.fragments.PlayerFragment.PlayerFragment; import com.sdsmdg.harjot.MusicDNA.R; import com.sdsmdg.harjot.MusicDNA.imageloader.ImageLoader; import com.squareup.picasso.Picasso; import java.util.List; /** * Created by Harjot on 16-May-16. */ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdapter.MyViewHolder> implements ItemTouchHelperAdapter { private List<UnifiedTrack> queue; Context ctx; ImageLoader imgLoader; public interface OnDragStartListener { void onDragStarted(RecyclerView.ViewHolder viewHolder); } private final OnDragStartListener mDragStartListener; public class MyViewHolder extends RecyclerView.ViewHolder implements ItemTouchHelperViewHolder { ImageView art; TextView title, artist; CustomPlayingIndicator indicator; ImageView holderImg; public MyViewHolder(View view) { super(view); art = (ImageView) view.findViewById(R.id.img); title = (TextView) view.findViewById(R.id.title); artist = (TextView) view.findViewById(R.id.url); indicator = (CustomPlayingIndicator) view.findViewById(R.id.currently_playing_indicator); holderImg = (ImageView) view.findViewById(R.id.holderImage); } @Override public void onItemSelected() { itemView.setBackgroundColor(Color.parseColor("#333333")); } @Override public void onItemClear() { itemView.setBackgroundColor(Color.BLACK); } } public QueueRecyclerAdapter(List<UnifiedTrack> queue, Context ctx, OnDragStartListener listener) { this.queue = queue; this.ctx = ctx; mDragStartListener = listener; imgLoader = new ImageLoader(ctx); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.list_item_3, parent, false); return new MyViewHolder(itemView); } @Override public void onBindViewHolder(final MyViewHolder holder, int position) { if (HomeActivity.queueCurrentIndex == position && !HomeActivity.isReloaded) { holder.title.setTextColor(HomeActivity.themeColor); holder.title.setTypeface(null, Typeface.BOLD); holder.indicator.setVisibility(View.VISIBLE); if (PlayerFragment.mMediaPlayer != null) { if (PlayerFragment.mMediaPlayer.isPlaying()) { holder.indicator.play(); } else { holder.indicator.pause(); } } } else { holder.title.setTextColor(Color.WHITE); holder.title.setTypeface(null, Typeface.NORMAL); holder.indicator.setVisibility(View.INVISIBLE); } holder.holderImg.setColorFilter(HomeActivity.themeColor); holder.indicator.setDrawColor(HomeActivity.themeColor); UnifiedTrack ut = queue.get(position); if (ut.getType()) { LocalTrack lt = ut.getLocalTrack(); imgLoader.DisplayImage(lt.getPath(), holder.art); holder.title.setText(lt.getTitle()); holder.artist.setText(lt.getArtist()); } else { Track t = ut.getStreamTrack(); Picasso.with(ctx) .load(t.getArtworkURL()) .resize(100, 100) .error(R.drawable.ic_default) .placeholder(R.drawable.ic_default) .into(holder.art); holder.title.setText(t.getTitle()); holder.artist.setText(""); } holder.holderImg.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) { mDragStartListener.onDragStarted(holder); } return false; } }); } @Override public int getItemCount() { return queue.size(); } @Override public void onItemMove(int fromPosition, int toPosition) { UnifiedTrack prev = queue.remove(fromPosition); queue.add(toPosition, prev); notifyItemMoved(fromPosition, toPosition); if (fromPosition == HomeActivity.queueCurrentIndex) { HomeActivity.queueCurrentIndex = toPosition; } else if (fromPosition > HomeActivity.queueCurrentIndex && toPosition == HomeActivity.queueCurrentIndex) { HomeActivity.queueCurrentIndex++; } else if (fromPosition < HomeActivity.queueCurrentIndex && toPosition == HomeActivity.queueCurrentIndex) { HomeActivity.queueCurrentIndex--; } ((HomeActivity) ctx).updateVisualizerRecycler(); new HomeActivity.SaveQueue().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @Override public void onItemDismiss(int position) { UnifiedTrack ut = queue.get(position); if (HomeActivity.originalQueue != null) HomeActivity.originalQueue.removeItem(ut); queue.remove(position); if (position < HomeActivity.queueCurrentIndex) { HomeActivity.queueCurrentIndex--; } notifyItemRemoved(position); ((HomeActivity) ctx).updateVisualizerRecycler(); new HomeActivity.SaveQueue().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } }