BartRunnerAndroid/src/com/dougkeen/bart/RoutesListActivity.java

171 lines
5.4 KiB
Java
Raw Normal View History

2011-05-23 18:59:34 +00:00
package com.dougkeen.bart;
import android.app.AlertDialog;
import android.app.Dialog;
2011-05-23 18:59:34 +00:00
import android.app.ListActivity;
import android.app.AlertDialog.Builder;
2011-05-23 18:59:34 +00:00
import android.content.ContentUris;
import android.content.DialogInterface;
2011-05-23 18:59:34 +00:00
import android.content.Intent;
import android.database.Cursor;
import android.database.CursorWrapper;
import android.net.Uri;
2011-05-23 18:59:34 +00:00
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
2011-05-23 18:59:34 +00:00
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
2011-05-23 18:59:34 +00:00
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.SimpleCursorAdapter.ViewBinder;
import android.widget.TextView;
import com.dougkeen.bart.data.CursorUtils;
import com.dougkeen.bart.data.RoutesColumns;
public class RoutesListActivity extends ListActivity {
private static final int DIALOG_DELETE_EVENT = 0;
2011-05-23 18:59:34 +00:00
protected Cursor mQuery;
private Uri mCurrentlySelectedUri;
private String mCurrentlySelectedRouteName;
2011-05-23 18:59:34 +00:00
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mQuery = managedQuery(Constants.FAVORITE_CONTENT_URI, new String[] {
2011-11-05 18:51:20 +00:00
RoutesColumns._ID.string, RoutesColumns.FROM_STATION.string,
RoutesColumns.TO_STATION.string }, null, null,
RoutesColumns._ID.string);
2011-05-23 18:59:34 +00:00
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
2011-11-05 18:51:20 +00:00
R.layout.favorite_listing, mQuery, new String[] {
RoutesColumns.FROM_STATION.string,
RoutesColumns.TO_STATION.string }, new int[] {
R.id.originText, R.id.destinationText });
2011-05-23 18:59:34 +00:00
adapter.setViewBinder(new ViewBinder() {
public boolean setViewValue(View view, Cursor cursor,
int columnIndex) {
((TextView) view).setText(Station.getByAbbreviation(cursor
.getString(columnIndex)).name);
return true;
}
});
setListAdapter(adapter);
registerForContextMenu(getListView());
2011-05-23 18:59:34 +00:00
}
@Override
protected void onResume() {
super.onResume();
((TextView) findViewById(R.id.listTitle))
.setText(R.string.favorite_routes);
((TextView) findViewById(android.R.id.empty))
.setText(R.string.empty_favorites_list_message);
}
2011-05-23 18:59:34 +00:00
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.routes_list_menu, menu);
2011-05-23 18:59:34 +00:00
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.add_favorite_menu_button) {
startActivity(new Intent(Intent.ACTION_INSERT,
Constants.FAVORITE_CONTENT_URI));
return true;
2011-07-16 18:01:02 +00:00
} else if (itemId == R.id.view_system_map_button) {
2011-11-05 18:51:20 +00:00
startActivity(new Intent(this, ViewMapActivity.class));
2011-07-16 18:01:02 +00:00
return true;
2011-05-23 18:59:34 +00:00
} else {
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
startActivity(new Intent(Intent.ACTION_VIEW,
ContentUris.withAppendedId(Constants.FAVORITE_CONTENT_URI, id)));
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.route_context_menu, menu);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
CursorWrapper item = (CursorWrapper) getListAdapter().getItem(
info.position);
Station orig = Station.getByAbbreviation(CursorUtils.getString(item,
RoutesColumns.FROM_STATION));
Station dest = Station.getByAbbreviation(CursorUtils.getString(item,
RoutesColumns.TO_STATION));
mCurrentlySelectedRouteName = orig.name + " - " + dest.name;
menu.setHeaderTitle(mCurrentlySelectedRouteName);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
mCurrentlySelectedUri = ContentUris.withAppendedId(
2011-11-05 18:51:20 +00:00
Constants.FAVORITE_CONTENT_URI, info.id);
if (item.getItemId() == R.id.view) {
startActivity(new Intent(Intent.ACTION_VIEW, mCurrentlySelectedUri));
return true;
} else if (item.getItemId() == R.id.delete) {
showDialog(DIALOG_DELETE_EVENT);
return true;
}
return super.onContextItemSelected(item);
}
@Override
protected Dialog onCreateDialog(int id) {
if (id == DIALOG_DELETE_EVENT && mCurrentlySelectedUri != null) {
final AlertDialog.Builder builder = new Builder(this);
builder.setTitle(mCurrentlySelectedRouteName);
builder.setCancelable(false);
builder.setMessage("Are you sure you want to delete this route?");
builder.setPositiveButton(R.string.yes,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
getContentResolver().delete(mCurrentlySelectedUri,
null, null);
mCurrentlySelectedUri = null;
mCurrentlySelectedRouteName = null;
removeDialog(DIALOG_DELETE_EVENT);
}
});
builder.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mCurrentlySelectedUri = null;
mCurrentlySelectedRouteName = null;
removeDialog(DIALOG_DELETE_EVENT);
}
});
return builder.create();
}
return super.onCreateDialog(id);
}
2011-05-23 18:59:34 +00:00
}