package edu.mit.mitmobile2.events; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.content.Intent; import android.os.Bundle; import edu.mit.mitmobile2.NewModule; import edu.mit.mitmobile2.SliderListNewModuleActivity; import edu.mit.mitmobile2.events.EventsModel.EventType; import edu.mit.mitmobile2.objs.EventDetailsItem; public class MITEventsSliderActivity extends SliderListNewModuleActivity { private final static String LIST_MODE_KEY = "list_mode"; private final static int EVENTS_DAY_LIST = 0; private final static int CATEGORY_DAY_LIST = 2; private final static int SEARCH_LIST = 3; private final static int ACADEMIC_LIST = 4; private final static int HOLIDAYS_LIST = 5; private final static String UNIXTIME_KEY = "unixtime"; private final static String EVENT_TYPE_KEY = "event_type_id"; private final static String CATEGORY_ID_KEY = "category_id"; private final static String EVENT_ID_KEY = "event_id"; private final static String SEARCH_TERMS_KEY = "search_terms"; private final static String YEAR_KEY = "year_key"; private final static String MONTH_KEY = "month_key"; private String mInitialEventId = null; private List<EventDetailsItem> mEvents = null; private boolean mBriefMode = false; // this is used for events which dont have detail information such as (Academic Calendar) private ArrayList<EventDetailsView> eventViews = new ArrayList<EventDetailsView>(); public static void launchEvents(Context context, String eventId, long unixtime, EventType eventType) { Intent intent = new Intent(context, MITEventsSliderActivity.class); intent.putExtra(LIST_MODE_KEY, EVENTS_DAY_LIST); intent.putExtra(EVENT_ID_KEY, eventId); intent.putExtra(UNIXTIME_KEY, unixtime); intent.putExtra(EVENT_TYPE_KEY, eventType.getTypeId()); context.startActivity(intent); } public static void launchCategory(Context context, String eventId, long unixtime, int categoryId, EventType eventType) { Intent intent = new Intent(context, MITEventsSliderActivity.class); intent.putExtra(LIST_MODE_KEY, CATEGORY_DAY_LIST); intent.putExtra(EVENT_ID_KEY, eventId); intent.putExtra(UNIXTIME_KEY, unixtime); intent.putExtra(CATEGORY_ID_KEY , categoryId); intent.putExtra(EVENT_TYPE_KEY, eventType.getTypeId()); context.startActivity(intent); } public static void launchSearchResults(Context context, String eventId, String searchTerms) { Intent intent = new Intent(context, MITEventsSliderActivity.class); intent.putExtra(LIST_MODE_KEY, SEARCH_LIST); intent.putExtra(EVENT_ID_KEY, eventId); intent.putExtra(SEARCH_TERMS_KEY, searchTerms); context.startActivity(intent); } public static void launchAcademicCalendar(Context context, String eventId, int year, int month) { Intent intent = new Intent(context, MITEventsSliderActivity.class); intent.putExtra(LIST_MODE_KEY, ACADEMIC_LIST); intent.putExtra(EVENT_ID_KEY, eventId); intent.putExtra(YEAR_KEY, year); intent.putExtra(MONTH_KEY, month); context.startActivity(intent); } public static void launchHolidaysCalendar(Context context, String eventId) { Intent intent = new Intent(context, MITEventsSliderActivity.class); intent.putExtra(LIST_MODE_KEY, HOLIDAYS_LIST); intent.putExtra(EVENT_ID_KEY, eventId); context.startActivity(intent); } /****************************************************/ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle extras = getIntent().getExtras(); mInitialEventId = extras.getString(EVENT_ID_KEY); int listMode = extras.getInt(LIST_MODE_KEY); EventType eventType = null; if(extras.containsKey(EVENT_TYPE_KEY)) { if(EventsModel.eventTypesLoaded()) { eventType = EventsModel.getEventType(extras.getString(EVENT_TYPE_KEY)); } else { // graceful exit finish(); return; } } if(listMode == EVENTS_DAY_LIST) { long unixtime = extras.getLong(UNIXTIME_KEY); mEvents = EventsModel.getDayEvents(unixtime, eventType); } else if(listMode == CATEGORY_DAY_LIST) { long unixtime = extras.getLong(UNIXTIME_KEY); int categoryId = extras.getInt(CATEGORY_ID_KEY); mEvents = EventsModel.getCategoryDayEvents(unixtime, categoryId, eventType); } else if(listMode == SEARCH_LIST) { String searchTerms = extras.getString(SEARCH_TERMS_KEY); mEvents = EventsModel.executeLocalSearch(searchTerms); } else if(listMode == ACADEMIC_LIST) { int year = extras.getInt(YEAR_KEY); int month = extras.getInt(MONTH_KEY); mEvents = EventsModel.getAcademicCalendar(year, month); mBriefMode = true; } else if(listMode == HOLIDAYS_LIST) { mEvents = EventsModel.getHolidays(); mBriefMode = true; } if(mEvents == null) { // gracefull exit finish(); return; } createViews(); } /****************************************************/ void createViews() { for (EventDetailsItem event : mEvents) { EventDetailsView eventView = new EventDetailsView(this, event, mBriefMode); addScreen(eventView, "Event Details"); eventViews.add(eventView); } int position = EventsModel.getPosition(mInitialEventId, mEvents); setPosition(position); } @Override public void onDestroy() { super.onDestroy(); eventViews = null; } @Override protected NewModule getNewModule() { return new EventsModule(); } @Override public boolean isModuleHomeActivity() { return false; } @Override protected void onOptionSelected(String optionId) { // TODO Auto-generated method stub } }