package net.coding.program.project;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import net.coding.program.common.SaveFragmentPagerAdapter;
import net.coding.program.model.ProjectObject;
import java.util.ArrayList;
/**
* Created by chenchao on 15/8/1.
*/
class MyProjectPagerAdapter extends SaveFragmentPagerAdapter {
private ProjectFragment projectFragment;
public MyProjectPagerAdapter(ProjectFragment projectFragment, FragmentManager fm) {
super(fm);
this.projectFragment = projectFragment;
}
@Override
public CharSequence getPageTitle(int position) {
return projectFragment.program_title[position];
}
@Override
public int getCount() {
return projectFragment.program_title.length + 1;
}
@Override
public int getItemPosition(Object object) {
return PagerAdapter.POSITION_NONE;
}
// @Override
// public Object instantiateItem(ViewGroup container, int position) {
// ProjectListFragment fragment = (ProjectListFragment) super.instantiateItem(container, position);
// fragment.setData(getChildData(position), projectFragment.requestOk);
//
// return fragment;
// }
@Override
public Fragment getItem(int position) {
Log.d("", "all p " + position);
if (position == projectFragment.program_title.length) {
MenuProjectFragment menuProjectFragment = new MenuProjectFragment_();
return menuProjectFragment;
}
if (position == 3) {
ProjectOtherFragment projectOtherFragment = new ProjectOtherFragment_();
projectOtherFragment.setTitleAndPostion(projectFragment.program_title[position], 0);
return projectOtherFragment;
}
if (position == 4) {
ProjectOtherFragment projectOtherFragment = new ProjectOtherFragment_();
projectOtherFragment.setTitleAndPostion(projectFragment.program_title[position], 1);
return projectOtherFragment;
}
ProjectListFragment fragment = new ProjectListFragment_();
fragment.setPos(position);
fragment.setTitle(projectFragment.program_title[position]);
Bundle bundle = new Bundle();
bundle.putSerializable("mData", getChildData(position));
bundle.putSerializable("type", projectFragment.type);
fragment.setArguments(bundle);
saveFragment(fragment);
return fragment;
}
private ArrayList<ProjectObject> getChildData(int position) {
ArrayList<ProjectObject> childData = new ArrayList<>();
switch (position) {
case 1:
stuffChildData(childData, "member");
break;
case 2:
stuffChildData(childData, "owner");
break;
default:
if (projectFragment.type == ProjectFragment.Type.Pick) {
stuffPrivateProjectChildData(childData);
} else {
childData.addAll(projectFragment.mData);
}
break;
}
return childData;
}
void stuffChildData(ArrayList<ProjectObject> child, String type) {
for (int i = 0; i < projectFragment.mData.size(); ++i) {
ProjectObject item = projectFragment.mData.get(i);
if (item.current_user_role.equals(type)) {
child.add(item);
}
}
}
void stuffPrivateProjectChildData(ArrayList<ProjectObject> child) {
for (int i = 0; i < projectFragment.mData.size(); ++i) {
ProjectObject item = projectFragment.mData.get(i);
if (!item.isPublic()) {
child.add(item);
}
}
}
}