package edu.mit.mitmobile2.events;
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;
import edu.mit.mitmobile2.events.EventsModel.EventType;
public class EventDayListSliderAdapter extends AbstractSliderViewAdapter{
private long mDayTime; //unix timestamp for currently selected day
private long mToday;
private EventType mEventType;
private Integer mCategoryID;
private Context mContext;
private SimpleDateFormat sDateFormat = new SimpleDateFormat("MMMM d");
private OnDayChangeListener mDayChangeListener = null;
private static long SECONDS_PER_DAY = 86400;
public EventDayListSliderAdapter(Context context, EventType eventType, long currentDayTime, OnDayChangeListener dayChangeListener) {
init(context, eventType, currentDayTime, dayChangeListener);
}
public EventDayListSliderAdapter(Context context, EventType eventType, long currentDayTime, int categoryID, OnDayChangeListener dayChangeListener) {
init(context, eventType, currentDayTime, dayChangeListener);
mCategoryID = categoryID;
}
private void init(Context context, EventType eventType, long currentDayTime, OnDayChangeListener dayChangeListener) {
mContext = context;
mEventType = eventType;
mDayTime = currentDayTime;
mToday = mDayTime;
mDayChangeListener = dayChangeListener;
mDayChangeListener.onDayChangeListener("YESTERDAY", "TODAY", "TOMMOROW");
}
public interface OnDayChangeListener {
public void onDayChangeListener(String previous, String current, String next);
}
@Override
public boolean hasScreen(ScreenPosition screenPosition) {
return true;
}
@Override
public SliderInterface getSliderInterface(ScreenPosition screenPosition) {
long dayTime = mDayTime;
if (screenPosition == ScreenPosition.Next) {
dayTime += SECONDS_PER_DAY;
} else if (screenPosition == ScreenPosition.Previous) {
dayTime -= SECONDS_PER_DAY;
}
if (mCategoryID == null) {
return EventsListSliderInterface.daysFactory(mContext, mEventType, dayTime);
} else {
return EventsListSliderInterface.categoriesFactory(mContext, mCategoryID, mEventType, dayTime);
}
}
@Override
public void seek(ScreenPosition screenPosition) {
super.seek(screenPosition);
if (screenPosition == ScreenPosition.Next) {
mDayTime += SECONDS_PER_DAY;
} else if (screenPosition == ScreenPosition.Previous) {
mDayTime -= SECONDS_PER_DAY;
}
mDayChangeListener.onDayChangeListener(dayTitle(-1), dayTitle(0), dayTitle(1));
}
private String dayTitle(int offset) {
long dayTime = mDayTime + offset * SECONDS_PER_DAY;
if (dayTime == mToday) {
return "TODAY";
} else if (dayTime == mToday + SECONDS_PER_DAY) {
return "TOMORROW";
} else if (dayTime == mToday - SECONDS_PER_DAY) {
return "YESTERDAY";
}
return sDateFormat.format(new Date(dayTime*1000));
}
}