package org.opensatnav; import org.anddev.openstreetmap.contributor.util.DatabaseAdapter; import org.anddev.openstreetmap.contributor.util.constants.Constants; import android.app.AlertDialog; import android.app.ListActivity; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.SimpleCursorAdapter; import android.widget.TextView; import android.widget.Toast; public class ContributeActivity extends ListActivity { Bundle gpsTracks = new Bundle(); private static final int UPLOAD_NOW = 10; private static final int TRACE_TOGGLE = UPLOAD_NOW + 1; private static final int DELETE_TRACKS = TRACE_TOGGLE + 1; private static final int NEW_WAYPOINT = DELETE_TRACKS + 1; private Boolean inEditName = false; private Boolean inEditDescription = false; public void onCreate(Bundle onSavedInstance) { super.onCreate(onSavedInstance); setTitle(R.string.contribute_title); setContentView(R.layout.contribute); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); if (!(prefs.contains(String.valueOf(R.string.pref_username_key))) && prefs.contains(String.valueOf(R.string.pref_password_key))); TextView textInfo = (TextView) findViewById(R.route_id.textInfo); textInfo.setText(getText(R.string.prefs_contribute_osm_username) + " : " + prefs.getString(getString(R.string.pref_username_key), getString(R.string.contribute_username_not_entered))); fillData(); final Boolean tracing = TraceRecorderService.isTracing(); Button startButton = (Button) findViewById(R.id.startRecord); if (tracing == true) { startButton.setText(this.getResources().getText( R.string.contribute_stop_recording)); } startButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (tracing == true) { TraceRecorderService.stop(ContributeActivity.this); displayToast(R.string.contribute_gps_off); } else { TraceRecorderService.start(ContributeActivity.this); displayToast(R.string.contribute_gps_on); } finish(); } }); } private void fillData() { // Get all of the notes from the database and create the item list DatabaseAdapter mDatabaseAdapter = new DatabaseAdapter(this); mDatabaseAdapter.open(); Cursor c = mDatabaseAdapter.getJourneys(); startManagingCursor(c); String[] from = new String[] { Constants.T_ROUTERECORDER_ID, Constants.T_ROUTERECORDER_JOURNEY_NAME }; int[] to = new int[] { R.route_id.id, R.route_id.route_name }; // Now create an array adapter and set it to display using our row SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.journey_row, c, from, to); setListAdapter(notes); mDatabaseAdapter.close(); } public void askForDescription() { AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setTitle(getText(R.string.contribute_dialogue_trace_description)); alert.setMessage(getText(R.string.contribute_dialogue_trace_message)); // Set an EditText view to get user input final EditText input = new EditText(this); alert.setView(input); alert.setPositiveButton(getText(android.R.string.ok), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { String description = input.getText().toString(); Intent data = getIntent(); data.putExtra("description", description); Log.v("OpenSatNav", "Setting Result"); setResult(UPLOAD_NOW, data); Log.v("OpenSatNav", "Finishing"); finish(); } }); alert.setNegativeButton(getText(android.R.string.cancel), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // Canceled. } }); alert.show(); } public void getWayPointInfo() { AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setTitle(getText(R.string.contribute_dialogue_new_waypoint)); alert.setMessage(getText(R.string.contribute_dialogue_new_waypoint_message)); // Set an EditText view to get user input final EditText wayPointName = new EditText(this); alert.setView(wayPointName); alert.setPositiveButton(getText(android.R.string.ok), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { String name = wayPointName.getText().toString(); Intent data = getIntent(); data.putExtra("wayPointName", name); setResult(NEW_WAYPOINT, data); finish(); } }); alert.setNegativeButton(getText(android.R.string.cancel), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // Canceled. } }); alert.show(); } protected void onSaveInstanceState(Bundle savedInstanceState) { savedInstanceState.putBoolean("inEditName", inEditName); savedInstanceState.putBoolean("inEditDescription", inEditDescription); super.onSaveInstanceState(savedInstanceState); // the UI component values are saved here. } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); if (savedInstanceState.getBoolean("inEditName")) { getWayPointInfo(); } if (savedInstanceState.getBoolean("inEditDescription")) { askForDescription(); } } private void displayToast(String msg) { Toast.makeText(getBaseContext(), msg, Toast.LENGTH_SHORT).show(); } private void displayToast(int stringReference) { displayToast((String) getText(stringReference)); } }