package co.smartreceipts.android.adapters;
import android.content.res.Resources;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import co.smartreceipts.android.R;
import co.smartreceipts.android.config.ConfigurationManager;
import co.smartreceipts.android.fragments.DistanceFragment;
import co.smartreceipts.android.fragments.GenerateReportFragment;
import co.smartreceipts.android.receipts.ReceiptsListFragment;
public class TripFragmentPagerAdapter extends FragmentPagerAdapter {
private static final int FRAGMENT_COUNT = 3;
private final Resources resources;
private final ConfigurationManager configurationManager;
public TripFragmentPagerAdapter(Resources resources, @NonNull FragmentManager fragmentManager, @NonNull ConfigurationManager configurationManager) {
super(fragmentManager);
this.resources = resources;
this.configurationManager = configurationManager;
}
@Override
public int getCount() {
if (configurationManager.isDistanceTrackingOptionAvailable()) {
return FRAGMENT_COUNT;
} else {
return FRAGMENT_COUNT - 1;
}
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
return ReceiptsListFragment.newListInstance();
} else if (position == 1) {
if (configurationManager.isDistanceTrackingOptionAvailable()) {
return DistanceFragment.newInstance();
} else {
return GenerateReportFragment.newInstance();
}
} else if (position == 2) {
return GenerateReportFragment.newInstance();
} else {
throw new IllegalArgumentException("Unexpected Fragment Position");
}
}
@Override
public CharSequence getPageTitle(int position) {
if (position == 0) {
return resources.getString(R.string.report_info_receipts);
} else if (position == 1) {
if (configurationManager.isDistanceTrackingOptionAvailable()) {
return resources.getString(R.string.report_info_distance);
} else {
return resources.getString(R.string.report_info_reports);
}
} else if (position == 2) {
return resources.getString(R.string.report_info_reports);
} else {
throw new IllegalArgumentException("Unexpected Fragment Position");
}
}
}