package edu.mit.mitmobile2.events;
import java.text.DateFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.Context;
import edu.mit.mitmobile2.AbstractSliderViewAdapter;
import edu.mit.mitmobile2.SliderInterface;
import edu.mit.mitmobile2.SliderView.ScreenPosition;
public class EventMonthAcademicCalendarListSliderAdapter extends AbstractSliderViewAdapter {
private int mSelectedMonth;
private int mSelectedYear;
private Context mContext;
OnMonthChangeListener mMonthChangeListener;
public interface OnMonthChangeListener {
public void onMonthChange(EventMonthAcademicCalendarListSliderAdapter adapter);
}
EventMonthAcademicCalendarListSliderAdapter(Context context, long currentDayTime,OnMonthChangeListener monthChangeListener) {
mContext = context;
mMonthChangeListener = monthChangeListener;
Date date = new Date(currentDayTime*1000);
String monthString = new SimpleDateFormat("M").format(date);
mSelectedMonth = Integer.parseInt(monthString)-1;
String yearString = new SimpleDateFormat("yyyy").format(date);
mSelectedYear = Integer.parseInt(yearString);
mMonthChangeListener.onMonthChange(this);
}
@Override
public boolean hasScreen(ScreenPosition screenPosition) {
return true;
}
@Override
public SliderInterface getSliderInterface(ScreenPosition screenPosition) {
return EventsListSliderInterface.academicCalendarFactory(
mContext, getYear(screenPosition), getMonth(screenPosition)+1);
}
@Override
public void seek(ScreenPosition screenPosition) {
super.seek(screenPosition);
if (screenPosition == ScreenPosition.Next) {
mSelectedMonth = (mSelectedMonth + 1) % 12;
if (mSelectedMonth == 0) {
mSelectedYear++;
}
} else if (screenPosition == ScreenPosition.Previous) {
if (mSelectedMonth == 0) {
mSelectedYear--;
}
mSelectedMonth = (mSelectedMonth - 1 + 12) % 12;
}
mMonthChangeListener.onMonthChange(this);
}
private int getMonth(ScreenPosition screenPosition) {
int month = mSelectedMonth + 12;
if (screenPosition == ScreenPosition.Next) {
month++;
} else if (screenPosition == ScreenPosition.Previous) {
month--;
}
return month % 12;
}
private int getYear(ScreenPosition screenPosition) {
int year = mSelectedYear;
if (screenPosition == ScreenPosition.Next) {
if (mSelectedMonth == 12 - 1) {
year++;
}
} else if (screenPosition == ScreenPosition.Previous) {
if (mSelectedMonth == 0) {
year--;
}
}
return year;
}
public String monthTitle(ScreenPosition screenPosition, boolean fullTitle) {
String title = new DateFormatSymbols().getMonths()[getMonth(screenPosition)];
if (fullTitle) {
title += " " + getYear(screenPosition);
}
return title;
}
}