CourseActivity.java :  » UnTagged » s00083451-s00083031-y4 » com » itsm » Android Open Source

Android Open Source » UnTagged » s00083451 s00083031 y4 
s00083451 s00083031 y4 » com » itsm » CourseActivity.java
package com.itsm;

import java.util.ArrayList;
import java.util.List;

import android.app.ExpandableListActivity;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
import android.widget.SimpleCursorTreeAdapter;
import android.widget.TextView;

import com.itsm.dao.CourseDao;
import com.itsm.dao.SettingsDao;
import com.itsm.entities.Course;
import com.itsm.entities.Department;
import com.itsm.entities.Person;
import com.itsm.entities.Settings;
import com.itsm.helper.DatabaseHelper;
import com.itsm.helper.Helper;

public class CourseActivity extends ExpandableListActivity {

  Cursor deptCursor;
  Cursor courseCursor;
  CourseDao courseDao;
  String parentAactivity;
  ListView lvSimple;
  ListAdapter adapterSimple;
  TextView tv;
  boolean isListViewVisible = false;
  ArrayAdapter<Course> courseAdapter;
  ArrayList<Course> courseFiltered;

  private ExpandableListAdapter listAdapter;
  private Intent intent;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.course_select);
    setTitleBar();
    init();
    this.registerForContextMenu(getExpandableListView());

    registerForContextMenu(lvSimple);

    parentAactivity = getIntent().getStringExtra(Helper.CALLER_CLASS);
    getWindow().setFormat(PixelFormat.RGBA_8888);
  }

  /**
   * Creates Options Menu
   */
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.om_course_select, menu);
    return super.onCreateOptionsMenu(menu);
  }

  /**
   * Handles item selected in options menu
   */
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case R.id.optCourseSearch:
      onSearchRequested();
      tv.setVisibility(View.GONE);
      lvSimple.setVisibility(View.VISIBLE);
      getExpandableListView().setVisibility(View.GONE);
      return true;
    case R.id.optCourseViewAll:
      lvSimple.setVisibility(View.GONE);
      tv.setVisibility(View.GONE);
      getExpandableListView().setVisibility(View.VISIBLE);
      courseFiltered = null;
      return true;

    }

    return super.onOptionsItemSelected(item);
  }

  @Override
  public void onCreateContextMenu(ContextMenu menu, View v,
      ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    int type = 0;
    ExpandableListView.ExpandableListContextMenuInfo info;
    AdapterView.AdapterContextMenuInfo infoListView;

    if (v instanceof ExpandableListView) {
      isListViewVisible = false;
      info = (ExpandableListView.ExpandableListContextMenuInfo) menuInfo;

      type = ExpandableListView
      .getPackedPositionType(info.packedPosition);

      if (type == 1)// child Item
      {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.cm_course_select, menu);
        menu.setHeaderTitle(courseDao.getCourseById((int) info.id)
            .getCourseName());
      }

    } else {
      isListViewVisible = true;
      infoListView = (AdapterView.AdapterContextMenuInfo) menuInfo;

      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.menu.cm_course_select, menu);

      Course c = (Course) lvSimple
      .getItemAtPosition(infoListView.position);

      menu.setHeaderTitle(courseDao.getCourseById(c.getId())
          .getCourseName());
    }

  }

  @Override
  public boolean onContextItemSelected(MenuItem item) {
    int selectedId = 0;

    if (isListViewVisible) {
      AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
      Course c = (Course) lvSimple.getItemAtPosition(info.position);

      selectedId = c.getId();
    } else {
      ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item
      .getMenuInfo();
      selectedId = (int) info.id;
    }

    switch (item.getItemId()) {

    case R.id.ctxCourseSemester1:
      intent.putExtra(Helper.TIMETABLE_SEMESTER,
          Helper.TIMETABLE_SEMESTER_ONE);
      intent.putExtra(Helper.TIMETABLE_COURSE_ID, selectedId);
      processSelection(selectedId);
      return true;
    case R.id.ctxCourseSemester2:
      intent.putExtra(Helper.TIMETABLE_SEMESTER,
          Helper.TIMETABLE_SEMESTER_TWO);
      intent.putExtra(Helper.TIMETABLE_COURSE_ID, selectedId);
      processSelection(selectedId);
      return true;
    case R.id.ctxCourseSemesterThisWeek:
      intent.putExtra(Helper.TIMETABLE_SEMESTER,
          Helper.TIMETABLE_SEMESTER_THIS_WEEk);
      intent.putExtra(Helper.TIMETABLE_COURSE_ID, selectedId);
      processSelection(selectedId);
      return true;

    default:
      return super.onContextItemSelected(item);
    }
  }

  private void processSelection(int id) {
    if (parentAactivity.equalsIgnoreCase(Helper.ACTIVITY_IDENIFIER_MAIN)) {
          intent.putExtra(Helper.IS_USER_TIMETABLE, true);
          intent.putExtra(Helper.SAVE_TIMETABLE, Helper.SAVE_TIMETABLE_YES);
      courseIsSelected(id, false);
    } else if (parentAactivity
        .equalsIgnoreCase(Helper.ACTIVITY_IDENIFIER_TIMETABLE)) {
      intent.putExtra(Helper.SAVE_TIMETABLE, Helper.SAVE_TIMETABLE_NO);

      boolean isUpdateToTimetable = getIntent().getBooleanExtra(
          Helper.IS_USER_TIMETABLE, false);

      if (isUpdateToTimetable)
        intent.putExtra(Helper.IS_USER_TIMETABLE, true);
      else
        intent.putExtra(Helper.IS_USER_TIMETABLE, false);

      courseIsSelected(id, true);
    }
  }

  @Override
  protected void onNewIntent(Intent intent) {
    setIntent(intent);
    handleIntent(intent);
  }

  private void fillSearchAdapter(String qry) {
    courseFiltered = new ArrayList<Course>();

    courseFiltered = courseDao.findCourses(qry);
    if (courseFiltered.size() > 0) {
      courseAdapter = new ArrayAdapter<Course>(this,
          R.layout.simple_listview_item, courseFiltered);
      lvSimple.setAdapter(courseAdapter);
    } else {
      tv.setVisibility(View.VISIBLE);
      lvSimple.setVisibility(View.GONE);
      getExpandableListView().setVisibility(View.GONE);
    }

  }

  private void handleIntent(Intent intent) {
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
      String query = intent.getStringExtra(SearchManager.QUERY);
      getExpandableListView().setVisibility(View.GONE);
      lvSimple.setVisibility(View.VISIBLE);
      fillSearchAdapter(query);
    }
  }

  private void setTitleBar() {
    TextView subTitle = (TextView) findViewById(R.id.txtSubTitle);
    subTitle.setText(R.string.course_select_title);
  }

  public void init() {
    tv = (TextView) findViewById(R.id.txtNoResult);

    lvSimple = (ListView) findViewById(R.id.list_course_search);
    courseDao = new CourseDao();

    deptCursor = DatabaseHelper.getSQLiteDatabase.query(
        Department.TABLE_NAME, null, null, null, null, null,
        Department.DEPARTMENT_NAME_FIELD);

    startManagingCursor(deptCursor);

    listAdapter = new CourseSelectAdapter(getApplicationContext(),
        deptCursor, R.layout.expandable_list_parent_item,
        new String[] { Department.DEPARTMENT_NAME_FIELD },
        new int[] { R.id.txtExpandableParentItem },
        R.layout.expandable_list_child_item,
        new String[] { Course.COURSE_NAME_FIELD },
        new int[] { R.id.txtExpandableChildItem });

    setListAdapter(listAdapter);

    intent = new Intent(CourseActivity.this, SetupTimetableActivity.class);

  }

  private void courseIsSelected(int courseId, boolean isAccountCreated) {

    SettingsDao settingsDao = new SettingsDao();

    if (!isAccountCreated) {

      if (settingsDao.getSettings().getId() < 1) {
        // insert account settings
        settingsDao.insertSettings(courseDao.getCourseById(courseId)
            .getCourseName(), 1);
      }
    } else {
      boolean isupdate = getIntent().getBooleanExtra(
          Helper.IS_USER_TIMETABLE, false);

      if (isupdate) {
        Settings settings = settingsDao.getSettings();
        settings.setCourseName(courseDao.getCourseById(courseId)
            .getCourseName());
        settingsDao.updateSettings(settings);
      }
    }

    loadTimetableSetup();

  }

  private void loadTimetableSetup() {
    // switch activity to select course
    intent.putExtra(Helper.CALLER_CLASS, Helper.ACTIVITY_IDENIFIER_COURSE);
    startActivity(intent);
    // end this activity
    CourseActivity.this.finish();

  }

  public class CourseSelectAdapter extends SimpleCursorTreeAdapter {

    public CourseSelectAdapter(Context context, Cursor groupCursor,
        int groupLayout, String[] groupFrom, int[] groupTo,
        int childLayout, String[] childFrom, int[] childTo) {
      super(context, groupCursor, groupLayout, groupFrom, groupTo,
          childLayout, childFrom, childTo);
    }

    @Override
    protected Cursor getChildrenCursor(Cursor groupCursor) {

      String where_clause = Course.COURSE_DEPT_FIELD
      + " = "
      + deptCursor.getString(deptCursor
          .getColumnIndex(Department.ID_FIELD));

      courseCursor = DatabaseHelper.getSQLiteDatabase.query(
          Course.TABLE_NAME, null, where_clause, null, null, null,
          Course.COURSE_NAME_FIELD);

      startManagingCursor(courseCursor);

      return courseCursor;
    }

  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.