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(); } } }