package com.evancharlton.mileage;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.database.Cursor;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import com.evancharlton.mileage.dao.Field;
import com.evancharlton.mileage.provider.Settings;
import com.evancharlton.mileage.provider.tables.FieldsTable;
public class SettingsActivity extends PreferenceActivity implements
Preference.OnPreferenceClickListener {
public static final String NAME = "com.evancharlton.mileage_preferences";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.settings);
Preference about = findPreference("about");
String version;
try {
version = getPackageManager().getPackageInfo(getPackageName(),
PackageManager.GET_ACTIVITIES).versionName;
} catch (NameNotFoundException e) {
version = "<unknown version>";
}
about.setSummary(getString(R.string.settings_about_summary, version));
about.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivity(new Intent(SettingsActivity.this, AboutActivity.class));
return true;
}
});
findPreference("units").setOnPreferenceClickListener(this);
// findPreference(Settings.META_FIELD).setOnPreferenceClickListener(this);
}
@Override
public boolean onPreferenceClick(Preference preference) {
if ("units".equals(preference.getKey())) {
showDialog(R.string.settings_units);
return true;
} else if (Settings.META_FIELD.equals(preference.getKey())) {
showDialog(R.string.settings_meta_field_title);
return true;
}
return false;
}
@Override
protected Dialog onCreateDialog(final int id) {
switch (id) {
case R.string.settings_units:
return new AlertDialog.Builder(this)
.setTitle(R.string.units_title)
.setMessage(R.string.units_description)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
removeDialog(id);
}
}).create();
case R.string.settings_meta_field_title:
final Cursor c = managedQuery(FieldsTable.URI, FieldsTable.PROJECTION, null, null,
null);
final SharedPreferences prefs = getSharedPreferences(Settings.NAME,
Context.MODE_PRIVATE);
return new AlertDialog.Builder(this)
.setSingleChoiceItems(c, -1, Field.TITLE,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
long id = -1;
if (c.moveToPosition(which)) {
id = c.getLong(c.getColumnIndex(Field._ID));
}
SharedPreferences.Editor editor = prefs.edit();
editor.putLong(Settings.META_FIELD, id);
editor.commit();
}
})
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
removeDialog(id);
}
}).setTitle(R.string.dialog_title_meta_fields).create();
default:
return super.onCreateDialog(id);
}
}
}