package org.smartpaws.viewpager;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import org.smartpaws.MainActivity;
import org.smartpaws.R;
import org.smartpaws.fragments.DealerFragment;
import org.smartpaws.fragments.ErrorOfflineFragment;
import org.smartpaws.fragments.MapDealersFragment;
import org.smartpaws.net.DataMan;
import org.smartpaws.net.ResponseHandler;
import org.smartpaws.objects.Convention;
import org.smartpaws.objects.User;
public class DealerViewPager extends Fragment {
private static final int IMAGE_COUNT_PER_FRAGMENT = 2;
private volatile int fetchedCount;
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final int containerId = getArguments().getInt("container_id");
final View loading = inflater.inflate(R.layout.frag_loading, container, false);
DataMan.getConvention("confuzzled", new ResponseHandler<Convention>() {
@Override
public void result(Convention result) {
if (result == null) {
MainActivity.INSTANCE.getSupportFragmentManager()
.beginTransaction()
.replace(containerId, new ErrorOfflineFragment())
.commit();
return;
}
showFragment(containerId, result);
}
});
return loading;
}
private synchronized boolean pollAllFetched(int gohCount) {
fetchedCount++;
return fetchedCount == (IMAGE_COUNT_PER_FRAGMENT * gohCount);
}
private void showFragment(int containerId, Convention convention) {
final Fragment fragment = new DealerViewPagerFragment();
final Bundle bundle = new Bundle();
bundle.putSerializable("dealers", convention.getDealers());
fragment.setArguments(bundle);
MainActivity.INSTANCE.getSupportFragmentManager()
.beginTransaction()
.replace(containerId, fragment)
.commit();
}
public static class DealerViewPagerFragment extends Fragment {
private ViewPager mPager;
private PagerAdapter mPagerAdapter;
private User[] dealers;
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
this.dealers = (User[]) getArguments().getSerializable("dealers");
View root = inflater.inflate(R.layout.view_pager, null);
mPagerAdapter = new DealerViewPagerAdapter(MainActivity.INSTANCE.getSupportFragmentManager());
mPager = (ViewPager) root.findViewById(R.id.pager);
mPager.setAdapter(mPagerAdapter);
return root;
}
private DealerFragment createFragment(User[] dealers) {
DealerFragment fragment = new DealerFragment();
Bundle bundle = new Bundle();
bundle.putSerializable("dealers", dealers);
fragment.setArguments(bundle);
return fragment;
}
private class DealerViewPagerAdapter extends FragmentStatePagerAdapter {
public DealerViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
if (pos == 0) {
return createFragment(dealers);
} else {
return new MapDealersFragment();
}
}
@Override
public int getCount() {
return 2;
}
}
}
}