package com.evancharlton.mileage;
import com.evancharlton.mileage.dao.ServiceInterval;
import com.evancharlton.mileage.dao.Vehicle;
import com.evancharlton.mileage.math.Calculator;
import com.evancharlton.mileage.provider.FillUpsProvider;
import com.evancharlton.mileage.provider.tables.ServiceIntervalsTable;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class ServiceIntervalsListActivity extends BaseListActivity implements
DialogInterface.OnClickListener, View.OnClickListener {
private static final int MENU_CREATE = 1;
private static final int MENU_TEMPLATES = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Intent intent = getIntent();
long id = intent.getLongExtra(ServiceInterval._ID, -1);
if (id > 0) {
showDialog(R.string.delete_service_interval);
}
}
@Override
protected Dialog onCreateDialog(int id) {
ServiceInterval interval = ServiceInterval.loadById(this,
getIntent().getLongExtra(ServiceInterval._ID, -1));
Vehicle vehicle = Vehicle.loadById(this, interval.getVehicleId());
switch (id) {
case R.string.delete_service_interval:
return new AlertDialog.Builder(this)
.setPositiveButton(android.R.string.yes, this)
.setNegativeButton(android.R.string.no, this)
.setNeutralButton(R.string.remind_later, this)
.setTitle(R.string.delete_service_interval)
.setMessage(
getString(R.string.service_interval_reminder_message,
interval.getTitle(), interval.getDescription(),
vehicle.getTitle())).create();
}
return super.onCreateDialog(id);
}
@Override
protected String[] getFrom() {
return new String[] {
ServiceInterval.TITLE,
ServiceInterval.DESCRIPTION
};
}
@Override
protected Uri getUri() {
return Uri.withAppendedPath(FillUpsProvider.BASE_URI, ServiceIntervalsTable.URI);
}
@Override
public void onItemClick(long id) {
loadItem(id, ServiceIntervalActivity.class);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, MENU_CREATE, Menu.NONE, R.string.add_service_interval).setIcon(
R.drawable.ic_menu_add);
menu.add(Menu.NONE, MENU_TEMPLATES, Menu.NONE, R.string.service_interval_templates)
.setIcon(R.drawable.ic_menu_edit);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_CREATE:
startActivity(new Intent(this, ServiceIntervalActivity.class));
return true;
case MENU_TEMPLATES:
startActivity(new Intent(this, ServiceIntervalTemplateListActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(DialogInterface dialog, int which) {
ServiceInterval interval = ServiceInterval.loadById(this,
getIntent().getLongExtra(ServiceInterval._ID, -1));
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
// delete the interval
interval.delete(this);
break;
case DialogInterface.BUTTON_NEUTRAL:
// remind tomorrow
interval.deleteAlarm(this);
interval.scheduleAlarm(this, System.currentTimeMillis() + Calculator.DAY_MILLIS);
break;
case DialogInterface.BUTTON_NEGATIVE:
// no action
}
dialog.dismiss();
}
@Override
protected void setupEmptyView() {
mEmptyView.removeAllViews();
View emptyView = LayoutInflater.from(this).inflate(R.layout.empty_service_intervals,
mEmptyView);
emptyView.findViewById(R.id.empty_add_interval).setOnClickListener(this);
emptyView.findViewById(R.id.empty_edit_templates).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.empty_add_interval:
startActivity(new Intent(ServiceIntervalsListActivity.this,
ServiceIntervalActivity.class));
break;
case R.id.empty_edit_templates:
startActivity(new Intent(this, ServiceIntervalTemplateListActivity.class));
break;
}
}
}