package com.evancharlton.mileage; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.database.Cursor; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import com.evancharlton.mileage.models.Vehicle; public class EditVehicleView extends AddVehicleView { private AlertDialog m_deleteDialog; private Cursor m_vehicleCursor; private boolean m_vehicleWasDefault = false; private static final int DELETE_DIALOG_ID = Menu.FIRST; private static final int MENU_DELETE = Menu.FIRST + 1; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); loadData(); } protected void initUI() { super.initUI(); m_save.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { long id = Long.parseLong(getIntent().getData().getLastPathSegment()); Vehicle vehicle = setData(); if (vehicle == null) { showMessage(false); return; } vehicle.setId(id); vehicle.save(); finish(); showMessage(true); } }); m_deleteDialog = new AlertDialog.Builder(this).create(); m_deleteDialog.setMessage(getString(R.string.confirm_delete)); m_deleteDialog.setCancelable(false); m_deleteDialog.setButton(getString(R.string.yes), m_deleteListener); m_deleteDialog.setButton2(getString(R.string.no), m_deleteListener); m_vehicleCursor = managedQuery(Vehicle.CONTENT_URI, new String[] { Vehicle._ID, Vehicle.TITLE }, null, null, Vehicle.DEFAULT_SORT_ORDER); } protected Vehicle setData() { Vehicle vehicle = super.setData(); boolean checked = m_default.isChecked(); if (m_vehicleWasDefault && checked == false) { // remove it from being default, fall back to whatever was last // default vehicle.setDefault(false); } else if (checked) { vehicle.setDefault(checked); } return vehicle; } private void loadData() { long id = Long.parseLong(getIntent().getData().getLastPathSegment()); Vehicle v = new Vehicle(id); m_year.setText(v.getYear()); m_make.setText(v.getMake()); m_model.setText(v.getModel()); m_title.setText(v.getTitle()); if (m_vehicleCursor.getCount() == 1) { m_default.setVisibility(View.GONE); } else { if (v.isDefault()) { m_default.setChecked(true); m_vehicleWasDefault = true; } } } private void delete() { getContentResolver().delete(getIntent().getData(), null, null); } public boolean onCreateOptionsMenu(Menu menu) { if (m_vehicleCursor.getCount() > 1) { menu.add(Menu.NONE, MENU_DELETE, Menu.NONE, R.string.delete).setShortcut('1', 'd').setIcon(R.drawable.ic_menu_delete); } return super.onCreateOptionsMenu(menu); } public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_DELETE: showDialog(DELETE_DIALOG_ID); return true; case HelpDialog.MENU_HELP: HelpDialog.create(this, R.string.help_title_vehicle_edit, R.string.help_vehicle_edit); return true; } return super.onOptionsItemSelected(item); } protected Dialog onCreateDialog(int id) { switch (id) { case DELETE_DIALOG_ID: return m_deleteDialog; } return null; } private DialogInterface.OnClickListener m_deleteListener = new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); if (which == Dialog.BUTTON1) { delete(); finish(); } } }; }