/** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // initialize views
    setGDActionBarContentView(R.layout.timetable_activity);
    addActionBarItem(Type.Refresh, R.id.action_bar_refresh);

    // initialize objects
    prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

    mClasses = new ArrayList<ModuleSlot>();
    mSectionedClassesAdapter =
        new SectionedAdapter() {
          protected View getHeaderView(
              String caption, int index, int count, View convertView, ViewGroup parent) {
            TextView result = (TextView) convertView;

            if (convertView == null) {
              result = (TextView) getLayoutInflater().inflate(R.layout.list_section_header, null);
            }
            result.setText(caption);

            return (result);
          }
        };

    mUTs = new ArrayList<UTSlot>();
    mSectionedUTsAdapter =
        new SectionedAdapter() {
          protected View getHeaderView(
              String caption, int index, int count, View convertView, ViewGroup parent) {
            TextView result = (TextView) convertView;

            if (convertView == null) {
              result = (TextView) getLayoutInflater().inflate(R.layout.list_section_header, null);
            }
            result.setText(caption);

            return (result);
          }
        };

    mAdapters[1] = mSectionedClassesAdapter;
    mAdapters[0] = mSectionedUTsAdapter;

    vfTimetable = (ViewFlow) findViewById(R.id.vf_timetable);
    mTimetableViewsAdapter = new TimetableViewsAdapter();
    vfTimetable.setAdapter(mTimetableViewsAdapter);

    TitleFlowIndicator indicator = (TitleFlowIndicator) findViewById(R.id.vf_timetable_indicator);
    indicator.setTitleProvider(mTimetableViewsAdapter);
    vfTimetable.setFlowIndicator(indicator);

    vfTimetable.setSelection(0); // Select the Class Timetable tab
  }