package com.gmail.charleszq.picorner.ui.helper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import com.gmail.charleszq.picorner.PicornerApplication;
import com.gmail.charleszq.picorner.R;
import com.gmail.charleszq.picorner.model.MediaObject;
import com.gmail.charleszq.picorner.ui.PhotoDetailActivity;
import com.gmail.charleszq.picorner.ui.PhotoDetailCommentsFragment;
import com.gmail.charleszq.picorner.ui.PhotoDetailExifDataFragment;
import com.gmail.charleszq.picorner.ui.PhotoDetailGeneralFragment;
import com.gmail.charleszq.picorner.ui.PhotoDetailLikesFragment;
import com.gmail.charleszq.picorner.ui.PhotoDetailMapFragment;
import com.gmail.charleszq.picorner.ui.flickr.ManagePhotoGroupFragment;
import com.gmail.charleszq.picorner.ui.flickr.MyFlickrPhotoGeneralFragment;
import com.gmail.charleszq.picorner.ui.flickr.OrganizeMyFlickrPhotoFragment;
public class PhotoDetailViewPagerAdapter extends FragmentPagerAdapter {
private MediaObject mPhoto;
private Context mContext;
private List<Fragment> mFragments;
private List<String> mTitles;
private Map<String, Integer> mPageIndexes = new HashMap<String, Integer>();
public PhotoDetailViewPagerAdapter(FragmentManager fragmentManager,
MediaObject photo, Context context) {
super(fragmentManager);
mPhoto = photo;
mContext = context;
mFragments = new ArrayList<Fragment>();
mTitles = new ArrayList<String>();
prepareFragmentsAndTitles();
}
private void prepareFragmentsAndTitles() {
mFragments.clear();
mTitles.clear();
PicornerApplication app = (PicornerApplication) ((Activity) mContext)
.getApplication();
switch (mPhoto.getMediaSource()) {
case FLICKR:
if (app.isMyOwnPhoto(mPhoto)) {
mFragments
.add(MyFlickrPhotoGeneralFragment.newInstance(mPhoto));
mFragments.add(OrganizeMyFlickrPhotoFragment
.newInstance(mPhoto));
mPageIndexes.put(PhotoDetailActivity.MY_F_ORG_PHOTO_SET_PAGE,
mFragments.size() - 1);
mFragments.add(ManagePhotoGroupFragment.newInstance(mPhoto));
mPageIndexes.put(PhotoDetailActivity.MY_F_ORG_GROUP_PAGE,
mFragments.size() - 1);
} else {
mFragments.add(PhotoDetailGeneralFragment.newInstance(mPhoto));
}
mFragments.add(PhotoDetailCommentsFragment.newInstance(mPhoto));
mPageIndexes.put(PhotoDetailActivity.COMMENT_PAGE,
mFragments.size() - 1);
mFragments.add(PhotoDetailExifDataFragment.newInstance(mPhoto));
mPageIndexes.put(PhotoDetailActivity.EXIF_PAGE,
mFragments.size() - 1);
mFragments.add(PhotoDetailLikesFragment.newInstance(mPhoto));
break;
case INSTAGRAM:
mFragments.add(PhotoDetailGeneralFragment.newInstance(mPhoto));
mFragments.add(PhotoDetailCommentsFragment.newInstance(mPhoto));
mPageIndexes.put(PhotoDetailActivity.COMMENT_PAGE,
mFragments.size() - 1);
mFragments.add(PhotoDetailLikesFragment.newInstance(mPhoto));
break;
case PX500:
mFragments.add(PhotoDetailGeneralFragment.newInstance(mPhoto));
mFragments.add(PhotoDetailCommentsFragment.newInstance(mPhoto));
mPageIndexes.put(PhotoDetailActivity.COMMENT_PAGE,
mFragments.size() - 1);
mFragments.add(PhotoDetailExifDataFragment.newInstance(mPhoto));
mPageIndexes.put(PhotoDetailActivity.EXIF_PAGE,
mFragments.size() - 1);
break;
}
if (mPhoto.getLocation() != null) {
mFragments.add(PhotoDetailMapFragment.newMyInstance(mPhoto));
mPageIndexes.put(PhotoDetailActivity.MAP_PAGE,
mFragments.size() - 1);
}
switch (mPhoto.getMediaSource()) {
case FLICKR:
mTitles.add(mContext
.getString(R.string.flickr_detail_general_title));
if (app.isMyOwnPhoto(mPhoto)) {
mTitles.add(mContext
.getString(R.string.menu_item_org_my_flickr_photo));
mTitles.add(mContext
.getString(R.string.menu_item_mng_my_flickr_group));
}
mTitles.add(mContext
.getString(R.string.flickr_detail_comments_title));
mTitles.add(mContext.getString(R.string.flickr_detail_exif_title));
mTitles.add(mContext.getString(R.string.ig_like_users));
break;
case INSTAGRAM:
mTitles.add(mContext
.getString(R.string.flickr_detail_general_title));
mTitles.add(mContext
.getString(R.string.flickr_detail_comments_title));
mTitles.add(mContext.getString(R.string.ig_like_users));
break;
case PX500:
mTitles.add(mContext
.getString(R.string.flickr_detail_general_title));
mTitles.add(mContext
.getString(R.string.flickr_detail_comments_title));
mTitles.add(mContext.getString(R.string.flickr_detail_exif_title));
mTitles.add(mContext.getString(R.string.flickr_detail_map));
break;
}
if (mPhoto.getLocation() != null)
mTitles.add(mContext.getString(R.string.flickr_detail_map));
}
public int getPageIndex(String key) {
if (mPageIndexes.containsKey(key))
return mPageIndexes.get(key);
else
return -1;
}
@Override
public Fragment getItem(int pos) {
return mFragments.get(pos);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mTitles.get(position);
}
@Override
public void notifyDataSetChanged() {
prepareFragmentsAndTitles();
super.notifyDataSetChanged();
}
}