package com.marverenic.music.adapter; import android.app.Activity; import android.support.v4.app.Fragment; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.marverenic.adapter.EnhancedViewHolder; import com.marverenic.adapter.HeterogeneousAdapter; import com.marverenic.music.JockeyApplication; import com.marverenic.music.R; import com.marverenic.music.activity.BaseLibraryActivity; import com.marverenic.music.data.store.PreferenceStore; import com.marverenic.music.model.Song; import com.marverenic.music.player.PlayerController; import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView.MeasurableAdapter; import java.util.List; import javax.inject.Inject; public class ShuffleAllSection extends HeterogeneousAdapter.SingletonSection<List<Song>> implements MeasurableAdapter { @Inject PlayerController mPlayerController; @Inject PreferenceStore mPrefStore; private Activity mActivity; public ShuffleAllSection(Fragment fragment, List<Song> data) { this(fragment.getActivity(), data); } public ShuffleAllSection(Activity activity, List<Song> data) { super(data); mActivity = activity; JockeyApplication.getComponent(activity).inject(this); } @Override public EnhancedViewHolder<List<Song>> createViewHolder(HeterogeneousAdapter adapter, ViewGroup parent) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.instance_shuffle_all, parent, false); return new ViewHolder(view); } @Override public boolean showSection(HeterogeneousAdapter adapter) { return !get(0).isEmpty(); } @Override public int getViewTypeHeight(RecyclerView recyclerView, int viewType) { return recyclerView.getResources().getDimensionPixelSize(R.dimen.list_height_small) + recyclerView.getResources().getDimensionPixelSize(R.dimen.divider_height); } private class ViewHolder extends EnhancedViewHolder<List<Song>> { /** * @param itemView The view that this ViewHolder will manage */ public ViewHolder(View itemView) { super(itemView); } @Override public void onUpdate(List<Song> songs, int position) { itemView.setOnClickListener(v -> { int firstSong = (int) (Math.random() * songs.size()); mPrefStore.setShuffle(true); mPlayerController.updatePlayerPreferences(mPrefStore); mPlayerController.setQueue(songs, firstSong); mPlayerController.play(); if (mPrefStore.openNowPlayingOnNewQueue() && mActivity instanceof BaseLibraryActivity) { ((BaseLibraryActivity) mActivity).expandBottomSheet(); } }); } } }