package pasta.music.adapters;
import android.app.Activity;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import com.afollestad.async.Action;
import java.util.List;
import pasta.music.Pasta;
import pasta.music.data.AlbumListData;
import pasta.music.data.ArtistListData;
import pasta.music.data.PlaylistListData;
import pasta.music.data.TrackListData;
import pasta.music.fragments.OmniFragment;
public class FavoritePagerAdapter extends FragmentStatePagerAdapter {
Activity activity;
Pasta pasta;
OmniFragment playlistFragment;
OmniFragment albumFragment;
OmniFragment trackFragment;
OmniFragment artistFragment;
public FavoritePagerAdapter(Activity activity, FragmentManager manager) {
super(manager);
this.activity = activity;
pasta = (Pasta) activity.getApplicationContext();
Bundle args = new Bundle();
args.putBoolean("favorite", true);
playlistFragment = new OmniFragment();
playlistFragment.setArguments(args);
albumFragment = new OmniFragment();
albumFragment.setArguments(args);
trackFragment = new OmniFragment();
trackFragment.setArguments(args);
artistFragment = new OmniFragment();
artistFragment.setArguments(args);
load();
}
public void load() {
playlistFragment.clear();
albumFragment.clear();
trackFragment.clear();
artistFragment.clear();
new Action<List<PlaylistListData>>() {
@NonNull
@Override
public String id() {
return "getFavPlaylists";
}
@Nullable
@Override
protected List<PlaylistListData> run() throws InterruptedException {
return pasta.getFavoritePlaylists();
}
@Override
protected void done(@Nullable List<PlaylistListData> result) {
if (result == null) {
pasta.onError(activity, "favorite playlist action");
return;
}
playlistFragment.swapData(result);
}
}.execute();
new Action<List<AlbumListData>>() {
@NonNull
@Override
public String id() {
return "getFavAlbums";
}
@Nullable
@Override
protected List<AlbumListData> run() throws InterruptedException {
return pasta.getFavoriteAlbums();
}
@Override
protected void done(@Nullable List<AlbumListData> result) {
if (result == null) {
pasta.onError(activity, "favorite album action");
return;
}
albumFragment.swapData(result);
}
}.execute();
new Action<List<TrackListData>>() {
@NonNull
@Override
public String id() {
return "getFavTracks";
}
@Nullable
@Override
protected List<TrackListData> run() throws InterruptedException {
return pasta.getFavoriteTracks();
}
@Override
protected void done(@Nullable List<TrackListData> result) {
if (result == null) {
pasta.onError(activity, "favorite track action");
return;
}
trackFragment.swapData(result);
}
}.execute();
new Action<List<ArtistListData>>() {
@NonNull
@Override
public String id() {
return "getFavArtists";
}
@Nullable
@Override
protected List<ArtistListData> run() throws InterruptedException {
return pasta.getFavoriteArtists();
}
@Override
protected void done(@Nullable List<ArtistListData> result) {
if (result == null) {
pasta.onError(activity, "favorite artist action");
return;
}
artistFragment.swapData(result);
}
}.execute();
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return playlistFragment;
case 1:
return albumFragment;
case 2:
return trackFragment;
case 3:
return artistFragment;
default:
return null;
}
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Playlists";
case 1:
return "Albums";
case 2:
return "Songs";
case 3:
return "Artists";
default:
return null;
}
}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}
}