/[projects]/android/TrainInfo/src/dk/thoerup/traininfo/DepartureList.java
ViewVC logotype

Annotation of /android/TrainInfo/src/dk/thoerup/traininfo/DepartureList.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1446 - (hide annotations) (download)
Wed May 4 20:25:15 2011 UTC (13 years ago) by torben
File size: 19501 byte(s)
Add preferences
1 torben 237 package dk.thoerup.traininfo;
2    
3 torben 1053 import static dk.thoerup.traininfo.R.string.departurelist_fetcharrivals;
4 torben 835 import static dk.thoerup.traininfo.R.string.departurelist_fetchdepartures;
5     import static dk.thoerup.traininfo.R.string.generic_cancel;
6     import static dk.thoerup.traininfo.R.string.generic_retry;
7    
8 torben 237 import java.text.NumberFormat;
9    
10 torben 336 import android.app.AlertDialog;
11 torben 237 import android.app.Dialog;
12     import android.app.ListActivity;
13     import android.app.ProgressDialog;
14 torben 1433 import android.content.ActivityNotFoundException;
15 torben 336 import android.content.DialogInterface;
16 torben 237 import android.content.Intent;
17 torben 1446 import android.content.SharedPreferences;
18 torben 1053 import android.graphics.Typeface;
19 torben 239 import android.net.Uri;
20 torben 237 import android.os.AsyncTask;
21     import android.os.Bundle;
22 torben 1446 import android.preference.PreferenceManager;
23 torben 630 import android.util.Log;
24 torben 982 import android.view.Menu;
25     import android.view.MenuItem;
26 torben 237 import android.view.View;
27 torben 835 import android.view.View.OnClickListener;
28     import android.widget.Button;
29 torben 237 import android.widget.ListView;
30 torben 1053 import android.widget.TableLayout;
31     import android.widget.TableRow;
32 torben 237 import android.widget.TextView;
33 torben 1433 import android.widget.Toast;
34 torben 1066 import dk.thoerup.android.traininfo.common.DepartureBean;
35     import dk.thoerup.android.traininfo.common.DepartureEntry;
36     import dk.thoerup.android.traininfo.common.MetroBean;
37     import dk.thoerup.android.traininfo.common.MetroBean.MetroEntry;
38 torben 1408 import dk.thoerup.android.traininfo.common.StationEntry;
39 torben 255 import dk.thoerup.traininfo.provider.DepartureProvider;
40 torben 1053 import dk.thoerup.traininfo.provider.MetroProvider;
41 torben 253 import dk.thoerup.traininfo.provider.ProviderFactory;
42 torben 245 import dk.thoerup.traininfo.util.MessageBox;
43 torben 237
44     public class DepartureList extends ListActivity {
45    
46     public static final int DLG_PROGRESS = 1;
47 torben 982 static final int MENU_MAP = 100;
48     static final int MENU_NOTIFICATIONS = 101;
49 torben 1434 static final int MENU_METROMAP = 102;
50     static final int MENU_TOGGLEDETAILS= 103;
51 torben 237
52 torben 362
53 torben 237 DepartureListAdapter adapter;
54     DepartureProvider provider;
55 torben 981 DepartureBean departures;
56 torben 237
57 torben 1053 MetroBean metroBean;
58     MetroProvider metro;
59    
60 torben 257 int selectedItemId;
61     //DepartureBean currentDeparture;
62 torben 237
63     ProgressDialog pgDialog;
64 torben 362
65 torben 238 DepartureFetcher fetcher;
66 torben 1053 MetroFetcher metroFetcher;
67 torben 557
68 torben 1066 StationEntry station;
69 torben 238
70 torben 1250 String trainType = "REGIONAL";
71    
72 torben 1434 boolean arrival = false;
73 torben 981
74 torben 1017 int commFailCounter = 0;
75    
76 torben 237 @Override
77     protected void onCreate(Bundle savedInstanceState) {
78     super.onCreate(savedInstanceState);
79     setContentView(R.layout.departurelist);
80    
81     adapter = new DepartureListAdapter(this);
82 torben 1446 setListAdapter(adapter);
83    
84 torben 237 Intent launchedBy = getIntent();
85 torben 557
86 torben 1066 station = (StationEntry) launchedBy.getSerializableExtra("stationbean");
87 torben 239
88 torben 557 ((TextView) findViewById(R.id.stationName)).setText( station.getName() );
89 torben 317
90 torben 557
91     ((TextView) findViewById(R.id.stationAddr)).setText( station.getAddress() );
92 torben 237
93 torben 835 final Button departureBtn = (Button) findViewById(R.id.departurebtn);
94     final Button arrivalBtn = (Button) findViewById(R.id.arrivalbtn);
95 torben 1044 final Button metroBtn = (Button) findViewById(R.id.metrobtn);
96 torben 1250 final Button regionalBtn = (Button) findViewById(R.id.regionalbtn);
97     final Button stogBtn = (Button) findViewById(R.id.stogbtn);
98 torben 294
99 torben 1053 final View metroView = findViewById(R.id.metroonly);
100    
101 torben 835 departureBtn.setOnClickListener( new OnClickListener() {
102     @Override
103     public void onClick(View arg0) {
104     arrivalBtn.setBackgroundResource(R.drawable.custom_button);
105     departureBtn.setBackgroundResource(R.drawable.custom_button_hilight);
106 torben 1044 metroBtn.setBackgroundResource(R.drawable.custom_button);
107 torben 1053
108     getListView().setVisibility( View.VISIBLE );
109     metroView.setVisibility( View.GONE );
110 torben 835 arrival = false;
111     startDepartureFetcher();
112     }
113     });
114     arrivalBtn.setOnClickListener( new OnClickListener() {
115     @Override
116     public void onClick(View arg0) {
117     arrivalBtn.setBackgroundResource(R.drawable.custom_button_hilight);
118     departureBtn.setBackgroundResource(R.drawable.custom_button);
119 torben 1044 metroBtn.setBackgroundResource(R.drawable.custom_button);
120 torben 1053
121     getListView().setVisibility( View.VISIBLE );
122     metroView.setVisibility( View.GONE );
123 torben 835 arrival = true;
124     startDepartureFetcher();
125     }
126     });
127    
128 torben 1250 regionalBtn.setOnClickListener( new OnClickListener() {
129     @Override
130     public void onClick(View arg0) {
131     regionalBtn.setBackgroundResource(R.drawable.custom_button_hilight);
132     stogBtn.setBackgroundResource(R.drawable.custom_button);
133     metroBtn.setBackgroundResource(R.drawable.custom_button);
134    
135     departureBtn.setVisibility( View.VISIBLE );
136     arrivalBtn.setVisibility( View.VISIBLE );
137    
138     getListView().setVisibility( View.VISIBLE );
139     metroView.setVisibility( View.GONE );
140     trainType = "REGIONAL";
141     startDepartureFetcher();
142     }
143     });
144     stogBtn.setOnClickListener( new OnClickListener() {
145     @Override
146     public void onClick(View arg0) {
147     regionalBtn.setBackgroundResource(R.drawable.custom_button);
148     stogBtn.setBackgroundResource(R.drawable.custom_button_hilight);
149     metroBtn.setBackgroundResource(R.drawable.custom_button);
150    
151    
152     departureBtn.setVisibility( View.VISIBLE );
153     arrivalBtn.setVisibility( View.VISIBLE );
154    
155     getListView().setVisibility( View.VISIBLE );
156     metroView.setVisibility( View.GONE );
157     trainType = "STOG";
158     startDepartureFetcher();
159     }
160     });
161    
162    
163    
164 torben 1044 metroBtn.setOnClickListener( new OnClickListener() {
165     @Override
166     public void onClick(View v) {
167 torben 1250 regionalBtn.setBackgroundResource(R.drawable.custom_button);
168     stogBtn.setBackgroundResource(R.drawable.custom_button);
169 torben 1044 metroBtn.setBackgroundResource(R.drawable.custom_button_hilight);
170 torben 1053
171 torben 1250 departureBtn.setVisibility( View.GONE );
172     arrivalBtn.setVisibility( View.GONE );
173    
174 torben 1053 getListView().setVisibility( View.GONE );
175     metroView.setVisibility( View.VISIBLE );
176     startMetroFetcher();
177 torben 1044 }
178     });
179 torben 835
180    
181    
182 torben 1044
183 torben 982 // findViewById(R.id.header).setOnClickListener( mapLauncher );
184 torben 237
185 torben 1066 int distance = station.getCalcdist();
186 torben 742 if (distance != 0) {
187     NumberFormat format = NumberFormat.getNumberInstance();
188     format.setMaximumFractionDigits(1);
189     format.setMinimumFractionDigits(1);
190 torben 575
191 torben 742 ((TextView) findViewById(R.id.stationDistance)).setText( format.format((double)distance/1000.0) + " km." );
192     } else {
193     ((TextView) findViewById(R.id.stationDistance)).setVisibility(View.GONE);
194     }
195 torben 552
196 torben 1028 ProviderFactory.purgeOldEntries(); //cleanup before fetching more data
197 torben 1044
198     Log.e("Station", station.toCSV() );
199    
200 torben 1446
201    
202 torben 1044 if (station.isMetro() == false) {
203     metroBtn.setVisibility( View.GONE );
204     }
205 torben 1028
206 torben 1053 metro = ProviderFactory.getMetroProvider();
207    
208 torben 1250 if (station.isRegional() == false ) {
209     regionalBtn.setVisibility(View.GONE);
210     }
211    
212     if (station.isStrain() == false ) {
213     stogBtn.setVisibility(View.GONE);
214     }
215    
216     if (station.isRegional() == true && station.isStrain() == false ) {
217     if ( station.isMetro() == false )
218     regionalBtn.setVisibility(View.GONE);
219     trainType = "REGIONAL";
220     }
221    
222     if (station.isRegional() == false && station.isStrain() == true) {
223     if (station.isMetro() == false)
224     stogBtn.setVisibility(View.GONE);
225    
226     stogBtn.setBackgroundResource(R.drawable.custom_button_hilight);
227     trainType = "STOG";
228    
229     }
230 torben 1446 //Both enabled - use preferred from preferences
231     if (station.isRegional() == true && station.isStrain() == true ) {
232     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
233     trainType = prefs.getString("traintype", "REGIONAL"); //default value is gps
234    
235     if (trainType.equals("STOG") ) {
236     stogBtn.setBackgroundResource(R.drawable.custom_button_hilight);
237     regionalBtn.setBackgroundResource(R.drawable.custom_button);
238     }
239     }
240 torben 1250
241    
242 torben 1066 if (station.isRegional() == false && station.isStrain() == false) {
243 torben 552 getListView().setVisibility( View.GONE );
244 torben 1053 metroView.setVisibility( View.VISIBLE );
245    
246 torben 835 departureBtn.setVisibility( View.GONE );
247     arrivalBtn.setVisibility(View.GONE);
248 torben 1250 metroBtn.setVisibility( View.GONE );
249 torben 552
250 torben 1250
251    
252 torben 1053 if (savedInstanceState == null) {
253     startMetroFetcher();
254     } else {
255     metroBean = (MetroBean) savedInstanceState.getSerializable("metro");
256     loadMetroData();
257     }
258    
259 torben 257 } else {
260 torben 552 provider = ProviderFactory.getDepartureProvider();
261    
262     if (savedInstanceState == null) {
263     startDepartureFetcher();
264     } else {
265 torben 981 departures = (DepartureBean) savedInstanceState.getSerializable("departures");
266 torben 990
267     if ( (departures != null) && (departures.entries != null) ) {
268     adapter.setDepartures(departures.entries);
269     }
270 torben 982 selectedItemId = savedInstanceState.getInt("selectedItemId");
271    
272     if ( hasNotifications() ) {
273     findViewById(R.id.notifIcon).setVisibility(View.VISIBLE);
274     }
275    
276 torben 552 }
277 torben 257 }
278 torben 237 }
279    
280 torben 1446
281    
282 torben 982 boolean hasNotifications() {
283     return (departures != null && departures.notifications.size() > 0);
284     }
285    
286 torben 243 @Override
287     public void onSaveInstanceState(Bundle outState)
288     {
289 torben 257 if (pgDialog != null && pgDialog.isShowing())
290     dismissDialog(DLG_PROGRESS);
291 torben 362
292 torben 257 outState.putInt("selectedItemId", selectedItemId);
293    
294 torben 981 outState.putSerializable("departures", departures);
295 torben 1053 outState.putSerializable("metro", metroBean);
296 torben 243 }
297 torben 918
298    
299 torben 243
300 torben 237 @Override
301 torben 918 protected void onDestroy() {
302     super.onDestroy();
303    
304     if (fetcher != null) {
305     fetcher.cancel(true);
306     }
307 torben 1053
308     if (metroFetcher != null) {
309     metroFetcher.cancel(true);
310     }
311 torben 918 }
312    
313     @Override
314 torben 237 protected void onListItemClick(ListView l, View v, int position, long id) {
315     super.onListItemClick(l, v, position, id);
316 torben 362
317     selectedItemId = position;
318 torben 364
319 torben 981 DepartureEntry dep = departures.entries.get(selectedItemId);
320 torben 237
321 torben 362 Intent intent = new Intent(this, TimetableList.class);
322 torben 364 intent.putExtra("departure", dep);
323 torben 362
324     startActivity(intent);
325    
326 torben 237 }
327    
328    
329     @Override
330     protected void onPrepareDialog(int id, Dialog dialog) {
331     super.onPrepareDialog(id, dialog);
332 torben 257
333 torben 237 switch (id) {
334     case DLG_PROGRESS:
335     pgDialog = (ProgressDialog) dialog;
336 torben 835 int messageId = arrival == false ? departurelist_fetchdepartures : departurelist_fetcharrivals;
337     pgDialog.setMessage( getString(messageId) );
338 torben 237 break;
339     }
340     }
341    
342     @Override
343     protected Dialog onCreateDialog(int id) {
344     switch (id) {
345     case DLG_PROGRESS:
346 torben 835
347 torben 237 ProgressDialog dlg = new ProgressDialog(this);
348     dlg.setCancelable(true);
349 torben 362 return dlg;
350 torben 237 default:
351     return super.onCreateDialog(id);
352     }
353     }
354 torben 982
355    
356 torben 336
357 torben 982 @Override
358 torben 1442 public boolean onPrepareOptionsMenu(Menu menu) {
359     super.onPrepareOptionsMenu(menu);
360    
361     MenuItem item = menu.findItem( MENU_NOTIFICATIONS );
362     boolean notifEnabled = hasNotifications();
363     item.setEnabled(notifEnabled);
364    
365     return true;
366     }
367    
368     @Override
369 torben 982 public boolean onCreateOptionsMenu(Menu menu) {
370     MenuItem item;
371 torben 985
372 torben 1434
373     item = menu.add(0, MENU_TOGGLEDETAILS, 0, getString(R.string.departurelist_toggledetails));
374     item.setIcon(android.R.drawable.ic_menu_view);
375    
376 torben 985 item = menu.add(0, MENU_MAP, 0, getString(R.string.departurelist_showonmap) );
377 torben 982 item.setIcon(android.R.drawable.ic_menu_mapmode);
378    
379 torben 985 item = menu.add(0, MENU_NOTIFICATIONS, 0, getString(R.string.departurelist_notifications) );
380 torben 1057 item.setIcon(android.R.drawable.ic_menu_info_details);
381 torben 982
382     boolean notifEnabled = hasNotifications();
383     item.setEnabled(notifEnabled);
384    
385 torben 1057 if (station.isMetro()) {
386     item = menu.add(0, MENU_METROMAP, 0, "Metro" ); //TODO:translate!?!
387     item.setIcon(android.R.drawable.ic_menu_mapmode);
388 torben 1434 }
389 torben 982
390     return true;
391     }
392    
393     @Override
394     public boolean onOptionsItemSelected(MenuItem item) {
395 torben 1434 boolean res = true;
396 torben 982 switch(item.getItemId()) {
397     case MENU_MAP:
398 torben 1434 Uri uri = Uri.parse("geo:" + station.getLatitude() + "," + station.getLongitude() + "?z=16");
399    
400     try {
401 torben 1432 startActivity( new Intent(Intent.ACTION_VIEW, uri));
402     } catch (ActivityNotFoundException anfe) {
403     Toast.makeText(this, "Could not launch google maps", Toast.LENGTH_LONG).show();
404     }
405 torben 1434
406 torben 982 break;
407     case MENU_NOTIFICATIONS:
408     Intent i = new Intent(this,dk.thoerup.traininfo.NotificationList.class);
409     i.putExtra(NotificationList.EXTRA_NOTIFICATIONS, departures.notifications);
410 torben 1434 startActivity(i);
411 torben 982 break;
412 torben 1057 case MENU_METROMAP:
413     Intent metroMap = new Intent(this,dk.thoerup.traininfo.MetroMap.class);
414 torben 1434 startActivity(metroMap);
415 torben 1057 break;
416 torben 1434 case MENU_TOGGLEDETAILS:
417     adapter.toggleShowDetails();
418     break;
419 torben 982 default:
420     res = super.onOptionsItemSelected(item);
421     }
422     return res;
423     }
424    
425 torben 336 void startDepartureFetcher() {
426     showDialog(DLG_PROGRESS);
427     fetcher = new DepartureFetcher();
428 torben 557 fetcher.execute(station.getId());
429 torben 336 }
430 torben 316
431 torben 1053 void startMetroFetcher() {
432     showDialog(DLG_PROGRESS);
433     metroFetcher = new MetroFetcher();
434     metroFetcher.execute(station.getId());
435     }
436    
437 torben 237 class DialogDismisser implements View.OnClickListener {
438    
439     Dialog dlg;
440     public DialogDismisser(Dialog d) {
441     dlg = d;
442     }
443    
444     @Override
445     public void onClick(View v) {
446     if (dlg.isShowing())
447     dlg.dismiss();
448 torben 365 }
449     }
450 torben 238
451 torben 982 /*View.OnClickListener mapLauncher = new View.OnClickListener() {
452 torben 239 @Override
453 torben 557 public void onClick(View v) {
454     Uri uri = Uri.parse("geo:" + station.getLatitude() + "," + station.getLongitude());
455 torben 239 startActivity( new Intent(Intent.ACTION_VIEW, uri));
456     }
457 torben 982 };*/
458 torben 336
459    
460 torben 238
461 torben 310 class DepartureFetcher extends AsyncTask<Integer, Void, Void> {
462 torben 238
463     @Override
464     protected void onPostExecute(Void result) {
465     super.onPostExecute(result);
466    
467 torben 336
468 torben 238 pgDialog.dismiss();
469 torben 1423
470 torben 1373 if (departures != null && departures.errorCode == null) {
471 torben 1017 commFailCounter = 0;
472 torben 917 DepartureList.this.getListView().setVisibility(View.GONE); //Experimental, inspired by http://osdir.com/ml/Android-Developers/2010-04/msg01198.html
473 torben 981 adapter.setDepartures(departures.entries);
474 torben 917 DepartureList.this.getListView().setVisibility(View.VISIBLE);
475    
476 torben 982
477 torben 1441 // handle notification icon.
478     View notifIcon = findViewById(R.id.notifIcon);
479     if ( hasNotifications() ) {
480 torben 1261 notifIcon.setVisibility(View.VISIBLE);
481     notifIcon.setClickable(true);
482     notifIcon.setOnClickListener( new View.OnClickListener() {
483     @Override
484     public void onClick(View v) {
485     Intent i = new Intent(DepartureList.this, dk.thoerup.traininfo.NotificationList.class);
486     i.putExtra(NotificationList.EXTRA_NOTIFICATIONS, departures.notifications);
487     startActivity(i);
488     }
489     });
490 torben 1441 } else {
491     notifIcon.setVisibility(View.INVISIBLE);
492     }
493 torben 982
494 torben 1264 if (departures.entries.size() == 0) {
495 torben 1262 int msgId = (arrival==false) ? R.string.departurelist_nodepartures : R.string.departurelist_noarrivals;
496     MessageBox.showMessage(DepartureList.this, getString(msgId), false);
497 torben 319 }
498     } else { // communication or parse error
499 torben 1017 commFailCounter++;
500 torben 1373 AlertDialog.Builder builder = new AlertDialog.Builder(DepartureList.this);
501    
502     if (departures != null && departures.errorCode != null ) { //got an error xml back
503     commFailCounter = 10;
504     builder.setMessage( getString(R.string.no_backend) );
505     } else {
506     builder.setMessage( getString(R.string.departurelist_fetcherror) );
507     }
508 torben 336 builder.setCancelable(true);
509 torben 1373
510 torben 1017 if (commFailCounter < 3) {
511     builder.setPositiveButton(getString(generic_retry), new DialogInterface.OnClickListener() {
512     public void onClick(DialogInterface dialog, int id) {
513     dialog.dismiss();
514     startDepartureFetcher();
515    
516     }
517     });
518     }
519 torben 561 builder.setNegativeButton(getString(generic_cancel), new DialogInterface.OnClickListener() {
520 torben 336 public void onClick(DialogInterface dialog, int id) {
521     dialog.dismiss();
522 torben 843 DepartureList.this.finish();
523 torben 336 }
524 torben 630 });
525    
526 torben 1263 try { //TODO: is this still necessary after the 0.9.4.1 fix ?
527 torben 630 builder.show();
528     } catch (android.view.WindowManager.BadTokenException e) {
529     Log.i("DepartureList", "BadTokenException"); // this can happen if the user switched away from this activity, while doInBackground was running
530     }
531 torben 319 }
532 torben 238 }
533    
534     @Override
535 torben 310 protected Void doInBackground(Integer... params) {
536 torben 1250 departures = provider.lookupDepartures(params[0], DepartureList.this.arrival, trainType);
537 torben 238 return null;
538     }
539    
540     }
541 torben 1053
542     public void loadMetroData() {
543     ((TextView) findViewById(R.id.operations)).setText( metroBean.operationInfo );
544     ((TextView) findViewById(R.id.plan)).setText( metroBean.plan );
545    
546    
547     TableLayout table = (TableLayout) findViewById(R.id.metrotable);
548     table.removeAllViews();
549    
550     TableRow head = new TableRow(this);
551    
552     TextView h1 = new TextView(this);
553     h1.setText("Metro");
554 torben 1072 h1.setTextSize(16);
555 torben 1053 h1.setTypeface( Typeface.defaultFromStyle(Typeface.BOLD));
556    
557    
558     TableRow.LayoutParams params = new TableRow.LayoutParams();
559     params.span = 2;
560     head.addView(h1, params);
561    
562 torben 1055
563    
564 torben 1053 TextView h2 = new TextView(this);
565 torben 1072 h2.setTextSize(16);
566 torben 1053 h2.setTypeface( Typeface.defaultFromStyle(Typeface.BOLD));
567 torben 1055 h2.setText("Om minutter");
568    
569 torben 1072 params = new TableRow.LayoutParams();
570     params.weight = 2;
571 torben 1055 head.addView(h2,params);
572 torben 1053
573    
574    
575     table.addView(head);
576    
577     for (MetroEntry entry : metroBean.entries) {
578     TableRow row = new TableRow(this);
579    
580     Log.e("Test", "" + entry.destination);
581    
582     TextView v1 = new TextView(this);
583 torben 1072 v1.setTextSize(16);
584     v1.setText( entry.metro );
585 torben 1053 row.addView(v1);
586    
587     TextView v2 = new TextView(this);
588 torben 1072 v2.setTextSize(16);
589 torben 1053 v2.setText( entry.destination );
590     row.addView(v2);
591 torben 1055
592 torben 1053 TextView v3 = new TextView(this);
593 torben 1072 v3.setTextSize(16);
594 torben 1053 v3.setText( entry.minutes );
595     row.addView(v3);
596    
597     table.addView(row);
598    
599     }
600     findViewById(R.id.rootView).requestLayout();
601     }
602    
603     class MetroFetcher extends AsyncTask<Integer, Void, Void> {
604    
605     @Override
606     protected void onPostExecute(Void result) {
607     super.onPostExecute(result);
608    
609    
610    
611     pgDialog.dismiss();
612    
613     if (metroBean != null) {
614     loadMetroData();
615     } else { // communication or parse error
616     commFailCounter++;
617     AlertDialog.Builder builder = new AlertDialog.Builder(DepartureList.this);
618     builder.setMessage("Error finding metro data");
619     builder.setCancelable(true);
620     if (commFailCounter < 3) {
621     builder.setPositiveButton(getString(generic_retry), new DialogInterface.OnClickListener() {
622     public void onClick(DialogInterface dialog, int id) {
623     dialog.dismiss();
624     startMetroFetcher();
625    
626     }
627     });
628     }
629     builder.setNegativeButton(getString(generic_cancel), new DialogInterface.OnClickListener() {
630     public void onClick(DialogInterface dialog, int id) {
631     dialog.dismiss();
632 torben 1263 DepartureList.this.finish(); //TODO: should we really close the activity ??
633 torben 1053 }
634     });
635    
636 torben 1263 try { //TODO: is this still necessary after the 0.9.4.1 fix ?
637 torben 1053 builder.show();
638     } catch (android.view.WindowManager.BadTokenException e) {
639     Log.i("DepartureList", "BadTokenException"); // this can happen if the user switched away from this activity, while doInBackground was running
640     }
641     }
642     }
643    
644     @Override
645     protected Void doInBackground(Integer... params) {
646     metroBean = metro.lookupMetroInfo(params[0]);
647     return null;
648     }
649    
650     }
651    
652 torben 237 }

  ViewVC Help
Powered by ViewVC 1.1.20