package what.whatandroid.torrentgroup.group;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;
import api.torrents.torrents.TorrentGroup;
import what.whatandroid.callbacks.LoadingListener;
/**
* Pager adapter for swiping between the torrent group overview and comments
*/
public class TorrentGroupPagerAdapter extends FragmentPagerAdapter implements LoadingListener<TorrentGroup> {
/**
* The torrent group overview and comments fragments
*/
private TorrentGroupOverviewFragment overview;
private TorrentCommentsFragment comments;
private DescriptionFragment description;
private TorrentGroup torrentGroup;
private int groupId;
public TorrentGroupPagerAdapter(FragmentManager fm, int groupId) {
super(fm);
this.groupId = groupId;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new TorrentGroupOverviewFragment();
case 1:
return new DescriptionFragment();
default:
return TorrentCommentsFragment.newInstance(groupId);
}
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Torrent Group";
case 1:
return "Description";
default:
return "Comments";
}
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment f = (Fragment) super.instantiateItem(container, position);
if (position == 0) {
overview = (TorrentGroupOverviewFragment) f;
if (torrentGroup != null) {
overview.onLoadingComplete(torrentGroup);
}
} else if (position == 1) {
description = (DescriptionFragment) f;
if (torrentGroup != null) {
description.onLoadingComplete(torrentGroup.getResponse().getGroup());
}
} else {
comments = (TorrentCommentsFragment) f;
if (torrentGroup != null) {
//We call logged in on the fragment if loading's done to let it know that it can start loading
comments.onLoadingComplete(torrentGroup);
}
}
return f;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
switch (position) {
case 0:
overview = null;
break;
case 1:
description = null;
break;
default:
comments = null;
}
}
@Override
public void onLoadingComplete(TorrentGroup group) {
torrentGroup = group;
if (overview != null) {
overview.onLoadingComplete(torrentGroup);
}
if (description != null) {
description.onLoadingComplete(torrentGroup.getResponse().getGroup());
}
if (comments != null) {
comments.onLoadingComplete(torrentGroup);
}
}
}