package com.architjn.acjmusicplayer.ui.layouts.fragments;
import android.Manifest;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import com.architjn.acjmusicplayer.R;
import com.architjn.acjmusicplayer.utils.ListSongs;
import com.architjn.acjmusicplayer.utils.PermissionChecker;
import com.architjn.acjmusicplayer.utils.decorations.SimpleDividerItemDecoration;
import com.architjn.acjmusicplayer.utils.adapters.SongListAdapter;
import com.architjn.acjmusicplayer.utils.items.Song;
import java.util.ArrayList;
/**
* Created by architjn on 27/11/15.
*/
public class SongsListFragment extends Fragment {
private Context context;
private View mainView;
private RecyclerView rv;
private SongListAdapter adapter;
private PermissionChecker permissionChecker;
private View emptyView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_songs,
container, false);
context = view.getContext();
mainView = view;
init();
return view;
}
private void init() {
rv = (RecyclerView) mainView.findViewById(R.id.songsListContainer);
emptyView = mainView.findViewById(R.id.songs_empty_view);
checkPermissions();
}
private void checkPermissions() {
permissionChecker = new PermissionChecker(context, getActivity(), mainView);
permissionChecker.check(Manifest.permission.WRITE_EXTERNAL_STORAGE,
getResources().getString(R.string.storage_permission),
new PermissionChecker.OnPermissionResponse() {
@Override
public void onAccepted() {
setSongList();
}
@Override
public void onDecline() {
getActivity().finish();
}
});
}
private void setSongList() {
ArrayList<Song> songList = ListSongs.getSongList(context);
LinearLayoutManager llm = new LinearLayoutManager(context);
rv.setLayoutManager(llm);
rv.addItemDecoration(new SimpleDividerItemDecoration(context, 75));
rv.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
adapter.recyclerScrolled();
}
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_FLING) {
// Do something
} else if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
// Do something
} else {
// Do something
}
}
});
adapter = new SongListAdapter(context, this, songList, permissionChecker);
rv.setAdapter(adapter);
if (songList.size() < 1) {
listIsEmpty();
}
}
public void listIsEmpty() {
emptyView.setVisibility(View.VISIBLE);
rv.setVisibility(View.GONE);
}
// public void listNoMoreEmpty() {
// rv.setVisibility(View.VISIBLE);
// emptyView.setVisibility(View.GONE);
// }
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
permissionChecker.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
public void onBackPress() {
adapter.onBackPressed();
}
public void setPermissionChecker(PermissionChecker permissionChecker) {
this.permissionChecker = permissionChecker;
}
}