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.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import com.afollestad.materialdialogs.MaterialDialog; import com.architjn.acjmusicplayer.R; import com.architjn.acjmusicplayer.utils.PermissionChecker; import com.architjn.acjmusicplayer.utils.adapters.PlaylistListAdapter; import com.architjn.acjmusicplayer.utils.decorations.SimpleDividerItemDecoration; import com.architjn.acjmusicplayer.utils.handlers.PlaylistDBHelper; import com.architjn.acjmusicplayer.utils.items.Playlist; import java.util.ArrayList; /** * Created by architjn on 27/11/15. */ public class PlaylistListFragment extends Fragment { private Context context; private View mainView; private RecyclerView rv; private PlaylistListAdapter adapter; private PermissionChecker permissionChecker; private PlaylistDBHelper playlistDBHelper; private View emptyView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_playlist, container, false); context = view.getContext(); mainView = view; init(); return view; } private void init() { rv = (RecyclerView) mainView.findViewById(R.id.playlistContainer); emptyView = mainView.findViewById(R.id.playlist_empty_view); playlistDBHelper = new PlaylistDBHelper(context); checkPermissions(); setHasOptionsMenu(true); } 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() { setArtistList(); } @Override public void onDecline() { getActivity().finish(); } }); } private void setArtistList() { rv.setLayoutManager(new LinearLayoutManager(context)); rv.addItemDecoration(new SimpleDividerItemDecoration(context, 0)); ArrayList<Playlist> artistsList = playlistDBHelper.getAllPlaylist(); adapter = new PlaylistListAdapter(context, artistsList, this); rv.setAdapter(adapter); if (artistsList.size() == 0) 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(); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // TODO Add your menu entries here inflater.inflate(R.menu.playlist_fragment, menu); super.onCreateOptionsMenu(menu, inflater); } private void newPlaylistDialog() { new MaterialDialog.Builder(context) .title(R.string.new_playlist) .input(null, null, new MaterialDialog.InputCallback() { @Override public void onInput(MaterialDialog dialog, CharSequence input) { if (!input.toString().matches("")) { playlistDBHelper.createPlaylist(input.toString()); listNoMoreEmpty(); adapter.updateNewList(playlistDBHelper.getAllPlaylist()); } } }).show(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_playlist_fragment_add: newPlaylistDialog(); return false; default: break; } return false; } }