package com.nf2m.fragment;
import android.annotation.TargetApi;
import android.content.Intent;
import android.database.Cursor;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.view.View;
import com.nf2m.R;
import com.nf2m.activity.TarMediaPlayerActivity;
import com.nf2m.adapter.PlaylistSongCursorAdapter;
import com.nf2m.draganddrop.OnStartDragListener;
import com.nf2m.draganddrop.SimpleItemTouchHelperCallback;
import com.nf2m.listener.ActionItemClick;
import com.nf2m.listener.OnItemClickListener;
import com.nf2m.model.Library;
import com.nf2m.model.PlaylistSong;
import com.nf2m.preferences.Preferences;
import com.nf2m.service.MediaPlayerService;
public class PlaylistSongFragment extends BaseFragment implements ActionItemClick, OnItemClickListener, OnStartDragListener {
private static final String KEY_PLAYLIST_ID = "playlist_id";
private static final String KEY_PLAYLIST_NAME = "playlist_name";
private RecyclerView lvSongList;
private Library songs;
private Cursor songCursor;
private PlaylistSongCursorAdapter songAdapter;
private int playlist_id;
private ItemTouchHelper itemTouchHelper;
private Preferences preferences;
private boolean isReferencedToService = false;
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
Bundle data = getArguments();
playlist_id = data.getInt(KEY_PLAYLIST_ID);
String playlistName = data.getString(KEY_PLAYLIST_NAME);
initLvSongList();
initSongs();
initSongCursor();
initSongCursorAdapter();
lvSongListSetSongAdapter();
setListener();
setSearchSelection(MediaStore.Audio.Playlists.Members.TITLE);
setLayoutManager();
initTouchHelper();
if (songCursor.getCount() == 0) {
// RelativeLayout noSongs = (RelativeLayout) view.findViewById(R.id.noSongs);
// noSongs.setVisibility(View.VISIBLE);
// TODO: 21/07/16 Hiç şarkı yoksa
}
preferences = Preferences.newInstance(getContext());
if (songCursor.getCount() < 15) {
fastScroller.setVisibility(View.GONE);
}
super.onViewCreated(view, savedInstanceState);
((TarMediaPlayerActivity) getActivity()).setActionBarTitle(playlistName);
}
private void initTouchHelper() {
itemTouchHelper = new ItemTouchHelper(new SimpleItemTouchHelperCallback(songAdapter));
itemTouchHelper.attachToRecyclerView(lvSongList);
}
private void setListener() {
songAdapter.setOnItemClickListener(this);
}
private void lvSongListSetSongAdapter() {
lvSongList.setAdapter(songAdapter);
setLvLibraryList(lvSongList);
}
private void initSongCursor() {
songCursor = songs.getCursor();
setLibraryCursor(songCursor);
}
private void initSongCursorAdapter() {
songAdapter = new PlaylistSongCursorAdapter(getActivity(), songCursor, this, songs);
setLibraryAdapter(songAdapter);
}
private void initSongs() {
songs = new PlaylistSong(getActivity(), playlist_id);
setLibraries(songs);
}
private void initLvSongList() {
lvSongList = (RecyclerView) view.findViewById(R.id.lvList);
}
@Nullable
@Override
public Cursor initSelectedItemCursor() {
return null;
}
@Override
public void actionClick(int position) {
playSong(position);
}
@Override
public void onItemClick(int position) {
if (isFilter) {
position = getPositionInMainCursor(position);
searchView.clearFocus();
searchView.onActionViewCollapsed();
linearLayoutManager.scrollToPosition(position);
actionClick(position);
} else {
actionClick(position);
}
}
@Override
public void onStartDrag(RecyclerView.ViewHolder viewHolder) {
itemTouchHelper.startDrag(viewHolder);
}
@Override
public void onClick(@NonNull View v) {
switch (v.getId()) {
case R.id.idFabPlay:
if (PlaylistSongCursorAdapter.isItemDismiss) {
PlaylistSongCursorAdapter.isItemDismiss = false;
} else if (!NowPlayingFragment.play_state.equalsIgnoreCase(NowPlayingFragment.PAUSE)) {
super.onClick(v);
playSong(0);
} else {
super.onClick(v);
}
break;
default:
super.onClick(v);
break;
}
}
private void playSong(int position) {
preferences.setPrefQueryUri(songs.getUri().toString());
preferences.setPrefQueryWhere(getWhere());
preferences.setPrefQuerySelectionArgs(getSelectionArray());
MediaPlayerService.songsCursor = songCursor;
isReferencedToService = true;
preferences.setPrefSongPos(position);
NowPlayingFragment.song_duration_state = 0;
NowPlayingFragment.play_state = NowPlayingFragment.PAUSE;
getActivity().sendBroadcast(new Intent(MediaPlayerService.ACTION_SONG_PLAY));
}
@Override
public void onDestroy() {
super.onDestroy();
if (songCursor != null && !isReferencedToService) {
songCursor.close();
}
}
}