--- android/TrainInfo/src/dk/thoerup/traininfo/DepartureList.java 2009/08/08 20:09:47 238 +++ android/TrainInfo/src/dk/thoerup/traininfo/DepartureList.java 2009/08/10 17:01:51 255 @@ -7,14 +7,15 @@ import android.app.ListActivity; import android.app.ProgressDialog; import android.content.Intent; +import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; -import dk.thoerup.traininfo.provider.DepartureFactory; import dk.thoerup.traininfo.provider.DepartureProvider; +import dk.thoerup.traininfo.provider.ProviderFactory; +import dk.thoerup.traininfo.util.MessageBox; public class DepartureList extends ListActivity { @@ -32,6 +33,8 @@ DepartureFetcher fetcher; + double latitude,longitude; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -41,12 +44,17 @@ setListAdapter(adapter); Intent launchedBy = getIntent(); + + latitude = launchedBy.getDoubleExtra("latitude", 0.0); + longitude = launchedBy.getDoubleExtra("longitude", 0.0); + String name = launchedBy.getStringExtra("name"); ((TextView) findViewById(R.id.stationName)).setText( name ); String addr = launchedBy.getStringExtra("address"); ((TextView) findViewById(R.id.stationAddr)).setText( addr ); + findViewById(R.id.header).setOnClickListener( mapLauncher ); NumberFormat format = NumberFormat.getNumberInstance(); format.setMaximumFractionDigits(1); @@ -56,12 +64,19 @@ showDialog(DLG_PROGRESS); - provider = DepartureFactory.getProvider(); + provider = ProviderFactory.getDepartureProvider(); fetcher = new DepartureFetcher(); fetcher.execute(name); } + @Override + public void onSaveInstanceState(Bundle outState) + { + if (pgDialog.isShowing()) + pgDialog.dismiss(); + } + @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); @@ -78,6 +93,7 @@ switch (id) { case DLG_DETAILS: ((TextView)dialog.findViewById(R.id.Time)).setText(currentDeparture.getTime()); + ((TextView)dialog.findViewById(R.id.Train)).setText(currentDeparture.getTrainNumber()); ((TextView)dialog.findViewById(R.id.Destination)).setText( currentDeparture.getDestination()); ((TextView)dialog.findViewById(R.id.Origin)).setText(currentDeparture.getOrigin()); ((TextView)dialog.findViewById(R.id.Location)).setText(currentDeparture.getLocation()); @@ -129,6 +145,14 @@ } } + View.OnClickListener mapLauncher = new View.OnClickListener() { + @Override + public void onClick(View v) { + Uri uri = Uri.parse("geo:" + latitude + "," + longitude); + startActivity( new Intent(Intent.ACTION_VIEW, uri)); + } + }; + class DepartureFetcher extends AsyncTask { @@ -140,7 +164,7 @@ pgDialog.dismiss(); if (departures.size() == 0) - Toast.makeText(DepartureList.this, "No departures found", Toast.LENGTH_LONG); + MessageBox.showMessage(DepartureList.this, "No departures found"); } @Override