package edu.mit.mitmobile2.events;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import edu.mit.mitmobile2.MobileWebApi;
import edu.mit.mitmobile2.NewModule;
import edu.mit.mitmobile2.SliderNewModuleActivity;
import edu.mit.mitmobile2.SliderView;
import edu.mit.mitmobile2.SliderView.Adapter;
import edu.mit.mitmobile2.events.EventDayListSliderAdapter.OnDayChangeListener;
import edu.mit.mitmobile2.events.EventsModel.EventType;
public class MITEventsDaysSliderActivity extends SliderNewModuleActivity implements OnDayChangeListener {
final static String LIST_TYPE_KEY = "list_type";
final static int STANDARD_LIST = 0;
final static int LIST_BY_CATEGORY = 1;
final static String CATEGORY_ID_KEY = "category_id";
final static String CATEGORY_NAME_KEY = "category_name";
final static String START_TIME_KEY = "start_time";
final static String EVENT_TYPE_KEY = "event_type";
private long mCurrentTime = -1;
private EventType mEventType = null;
private int mCategoryId = -1;
private String mCategoryName = null;
private SliderView.Adapter mSliderAdapter;
public static void launch(Context context, EventType eventType) {
launchEventType(context, eventType.getTypeId(), null);
}
public static void launchEventType(Context context, String eventType, Long startTime) {
Intent intent = new Intent(context, MITEventsDaysSliderActivity.class);
intent.putExtra(EVENT_TYPE_KEY, eventType);
intent.putExtra(LIST_TYPE_KEY, STANDARD_LIST);
if(startTime != null) {
intent.putExtra(START_TIME_KEY, startTime);
}
context.startActivity(intent);
}
public static void launchCategory(Context context, int categoryId, String categoryName, String eventType, Long startTime) {
Intent intent = new Intent(context, MITEventsDaysSliderActivity.class);
intent.putExtra(LIST_TYPE_KEY, LIST_BY_CATEGORY);
intent.putExtra(CATEGORY_ID_KEY, categoryId);
intent.putExtra(CATEGORY_NAME_KEY, categoryName);
intent.putExtra(EVENT_TYPE_KEY, eventType);
if(startTime != null) {
intent.putExtra(START_TIME_KEY, startTime);
}
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Bundle extras = getIntent().getExtras();
mCurrentTime = System.currentTimeMillis();
if(extras.getInt(LIST_TYPE_KEY) == LIST_BY_CATEGORY) {
mCategoryId = extras.getInt(CATEGORY_ID_KEY);
mCategoryName = extras.getString(CATEGORY_NAME_KEY);
}
if(EventsModel.eventTypesLoaded()) {
mEventType = EventsModel.getEventType(extras.getString(EVENT_TYPE_KEY));
createViews();
} else {
// need to load the event types
showLoading("Events");
EventsModel.fetchEventTypes(this, new Handler() {
@Override
public void handleMessage(Message msg) {
if(msg.arg1 == MobileWebApi.SUCCESS) {
mEventType = EventsModel.getEventType(extras.getString(EVENT_TYPE_KEY));
showLoadingCompleted();
createViews();
} else {
showLoadingError();
}
}
});
}
}
protected void createViews() {
if(mCategoryName != null) {
addSecondaryTitle(mCategoryName);
} else if(mEventType != null) {
addSecondaryTitle(mEventType.getShortName());
}
mSliderAdapter = new EventDayListSliderAdapter(this, mEventType, mCurrentTime/1000, mCategoryId, this);
reloadAdapter();
}
@Override
protected NewModule getNewModule() {
return new EventsModule();
}
@Override
public boolean isModuleHomeActivity() {
return false;
}
@Override
protected Adapter getSliderAdapter() {
return mSliderAdapter;
}
@Override
protected void onOptionSelected(String optionId) {
// TODO Auto-generated method stub
}
private String mPrevious, mCurrent, mNext;
@Override
public void onDayChangeListener(String previous, String current, String next) {
mPrevious = previous;
mCurrent = current;
mNext = next;
}
@Override
protected String getPreviousTitle() {
return mPrevious;
}
@Override
protected String getCurrentHeaderTitle() {
return mCurrent;
}
@Override
protected String getNextTitle() {
return mNext;
}
}