package de.tum.in.tumcampusapp.adapters;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import de.tum.in.tumcampusapp.auxiliary.Const;
import de.tum.in.tumcampusapp.auxiliary.Utils;
import de.tum.in.tumcampusapp.fragments.CafeteriaDetailsSectionFragment;
import de.tum.in.tumcampusapp.managers.CafeteriaMenuManager;
/**
* A {@link FragmentStatePagerAdapter} that returns a fragment corresponding to one
* of the sections/tabs/pages.
*/
public class CafeteriaDetailsSectionsPagerAdapter extends FragmentStatePagerAdapter {
private int mCafeteriaId;
private Cursor cursorCafeteriaDates;
/** Current Date selected (ISO format) */
private final List<String> dates = new ArrayList<>();
public CafeteriaDetailsSectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@SuppressWarnings("deprecation")
public void setCafeteriaId(Activity mainActivity, int cafeteriaId) {
mCafeteriaId = cafeteriaId;
// get all (distinct) dates having menus available
CafeteriaMenuManager cmm = new CafeteriaMenuManager(mainActivity);
cursorCafeteriaDates = cmm.getDatesFromDb();
mainActivity.startManagingCursor(cursorCafeteriaDates);
for (int position = 0; position < getCount(); position++) {
cursorCafeteriaDates.moveToPosition(position);
dates.add(cursorCafeteriaDates.getString(cursorCafeteriaDates.getColumnIndex(Const.ID_COLUMN)));
}
// Tell we just update the data
this.notifyDataSetChanged();
}
@Override
public int getCount() {
return cursorCafeteriaDates.getCount();
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
Fragment fragment = new CafeteriaDetailsSectionFragment();
Bundle args = new Bundle();
args.putString(Const.DATE, dates.get(position));
args.putInt(Const.CAFETERIA_ID, mCafeteriaId);
fragment.setArguments(args);
return fragment;
}
@Override
public CharSequence getPageTitle(int position) {
Date date = Utils.getDate(dates.get(position));
DateFormat formatDate = SimpleDateFormat.getDateInstance(SimpleDateFormat.FULL);
return formatDate.format(date).toUpperCase(Locale.getDefault());
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}