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;
}
}
}
|