package com.mareksebera.simpledilbert.core;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import com.mareksebera.simpledilbert.preferences.DilbertPreferences;
import org.joda.time.Days;
import org.joda.time.LocalDate;
final class DilbertFragmentAdapter extends FragmentPagerAdapter {
private int countCache = 0;
public DilbertFragmentAdapter(FragmentManager fm) {
super(fm);
this.countCache = Days.daysBetween(
DilbertPreferences.getFirstStripDate(),
LocalDate.now()).getDays() + 1;
}
@Override
public CharSequence getPageTitle(int position) {
return getDateForPosition(position).toString(
DilbertPreferences.NICE_DATE_FORMATTER);
}
@Override
public Fragment getItem(int position) {
Fragment f = new DilbertFragment();
Bundle bundle = new Bundle();
bundle.putString(
DilbertFragment.ARGUMENT_DATE,
getDateForPosition(position).toString(
DilbertPreferences.DATE_FORMATTER));
f.setArguments(bundle);
return f;
}
public LocalDate getDateForPosition(int position) {
return LocalDate.now().minusDays(
(getCount() - position) - 1);
}
@Override
public int getCount() {
return countCache;
}
public int getPositionForDate(LocalDate date) {
return getCount()
- Days.daysBetween(date,
LocalDate.now())
.plus(Days.ONE).getDays();
}
}