package org.sana.android.activity; import org.sana.android.provider.Notifications; import android.app.ListActivity; import android.content.ContentUris; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; //import com.actionbarsherlock.app.SherlockListActivity; /** * NotificationList is the activity that allows a user to browse all of the * current notifications (generally physician-issued diagnoses) that have yet to * be dismissed. It is a simple list view that displays notifications by Patient * ID number. Clicking on a notification launches the NotificationViewer. * * @author Sana Dev Team */ public class NotificationList extends ListActivity implements SimpleCursorAdapter.ViewBinder { private static final String TAG = NotificationList.class.getSimpleName(); private static int MESSAGE_LENGTH_LIMIT = 35; private static final String[] PROJECTION = new String[] { Notifications.Contract._ID, Notifications.Contract.PATIENT_ID, Notifications.Contract.FULL_MESSAGE }; /** * Binds the cursor to either the patient or message column. */ public boolean setViewValue(View v, Cursor cur, int columnIndex) { ((TextView)v).setText(cur.getString(columnIndex)); switch(columnIndex) { case 1: String patientId = cur.getString(columnIndex); ((TextView)v).setText(patientId); break; case 2: // Limit the message to a fixed length. String message = cur.getString(columnIndex); if(message.length() > MESSAGE_LENGTH_LIMIT) { message = message.substring(0, MESSAGE_LENGTH_LIMIT) + "..."; } ((TextView)v).setText(message); break; } return true; } /** {@inheritDoc} */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Uri uri = getIntent().getData(); if (uri == null) { uri = Notifications.CONTENT_URI; } Cursor cursor = managedQuery(uri, PROJECTION, Notifications.Contract.DOWNLOADED + "=1", null, Notifications.DEFAULT_SORT_ORDER); SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.two_line_list_item, cursor, new String[] { Notifications.Contract.PATIENT_ID, Notifications.Contract.FULL_MESSAGE }, new int[] { android.R.id.text1, android.R.id.text2 }); adapter.setViewBinder(this); setListAdapter(adapter); } /** {@inheritDoc} */ @Override protected void onListItemClick(ListView l, View v, int position, long id) { Uri uri = ContentUris.withAppendedId(getIntent().getData(), id); String action = getIntent().getAction(); if (Intent.ACTION_PICK.equals(action) || Intent.ACTION_GET_CONTENT.equals(action)) { setResult(RESULT_OK, new Intent().setData(uri)); finish(); } else { // Launch activity to view/edit the currently selected item startActivity(new Intent(Intent.ACTION_EDIT, uri)); } } }