package com.nf2m.fragment;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.os.Bundle;
import android.provider.BaseColumns;
import android.provider.MediaStore;
import android.provider.MediaStore.MediaColumns;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.support.v4.os.TraceCompat;
import android.support.v7.graphics.Palette;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import com.nf2m.R;
import com.nf2m.activity.TarMediaPlayerActivity;
import com.nf2m.adapter.SongCursorAdapter;
import com.nf2m.listener.ActionItemClick;
import com.nf2m.model.Library;
import com.nf2m.model.Songs;
import com.nf2m.preferences.Preferences;
import com.nf2m.service.MediaPlayerService;
import java.util.ArrayList;
import java.util.Collections;
@SuppressLint("NewApi")
public class SongFragment extends BaseFragment implements ActionItemClick, com.nf2m.listener.OnItemClickListener {
private RecyclerView lvSongList;
private Library songs;
private Cursor songCursor;
private SongCursorAdapter songAdapter;
private Preferences preferences;
private int primaryColor;
private int primaryDarkColor;
private boolean isReferencedToService = false;
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
if (isAlbumSong && songCursor.getCount() != 0) {
playSong(0);
}
}
/**
* Activiteyi hazırlar.Degerler set edilir.
*/
void initFragment(@NonNull final Cursor songCursor, final Songs songs) {
if (songCursor.getCount() == 0) {
// TODO: 21/07/16 Şarkı yoksa ekranı
// RelativeLayout noSongs = (RelativeLayout) view.findViewById(R.id.noSongs);
// noSongs.setVisibility(View.VISIBLE);
}
initLvSongList();
initSongs(songs);
setSongCursor(songCursor);
initSongCursorAdapter();
lvSongListSetSongAdapter();
setListener();
setLayoutManager();
if (songCursor.getCount() < 15) {
fastScroller.setVisibility(View.GONE);
}
preferences = Preferences.newInstance(getContext());
setSearchSelection(MediaColumns.TITLE);
}
private void setListener() {
songAdapter.setOnItemClickListener(this);
songAdapter.setOnLongItemClickListener(this);
}
private void lvSongListSetSongAdapter() {
lvSongList.setAdapter(songAdapter);
setLvLibraryList(lvSongList);
}
private void initSongCursorAdapter() {
songAdapter = new SongCursorAdapter(getActivity(), songCursor);
setLibraryAdapter(songAdapter);
}
private void initSongs(Songs songs) {
this.songs = songs;
setLibraries(songs);
}
private void setSongCursor(Cursor songCursor) {
this.songCursor = songCursor;
setLibraryCursor(songCursor);
}
private void initLvSongList() {
lvSongList = (RecyclerView) view.findViewById(R.id.lvList);
}
@Nullable
@Override
public Cursor initSelectedItemCursor() {
String[] songIds = getStringArray(BaseColumns._ID);
String selection = getSelection(BaseColumns._ID, songIds);
Cursor tempCursor = getContext().getContentResolver().query(songs.getUri(), null, selection,
null, null);
assert tempCursor != null;
setSelectedSongNumber(tempCursor.getCount());
return tempCursor;
}
@Override
public void actionClick(int position) {
playSong(position);
}
private void playSong(int position) {
//now playing list dışındakiler
if (!isNowPlayingList()) {
preferences.setPrefQueryUri(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI.toString());
preferences.setPrefQueryWhere(getWhere());
preferences.setPrefQuerySelectionArgs(getSelectionArray());
MediaPlayerService.songsCursor = songCursor;
isReferencedToService = true;
}
preferences.setPrefSongPos(position);
if (!isAlbumSong) {
TarMediaPlayerActivity.item_state = TarMediaPlayerActivity.ITEM_STATE_OTHER;
}
NowPlayingFragment.song_duration_state = 0;
NowPlayingFragment.play_state = NowPlayingFragment.PAUSE;
getActivity().sendBroadcast(new Intent(MediaPlayerService.ACTION_SONG_PLAY));
}
@Override
public void onClick(@NonNull View v) {
switch (v.getId()) {
case R.id.idFabPlay:
super.onClick(v);
if (!NowPlayingFragment.play_state.equalsIgnoreCase(NowPlayingFragment.PAUSE)) {
playSong(0);
}
break;
default:
super.onClick(v);
break;
}
}
@Override
public void onItemClick(int position) {
if (actionMode != null) {
toggleSelection(position);
return;
}
if (isFilter) {
position = getPositionInMainCursor(position);
searchView.clearFocus();
searchView.onActionViewCollapsed();
linearLayoutManager.scrollToPosition(position);
actionClick(position);
} else {
actionClick(position);
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (songCursor != null && !isReferencedToService) {
songCursor.close();
}
}
}