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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 699 - (hide annotations) (download)
Mon May 3 11:19:18 2010 UTC (14 years ago) by torben
File size: 4705 byte(s)
Switch to using type ("S2" vs "FJRN") for differentiating between regional trains and s-tog (corresponding change R697 on TrainInfoService)
1 torben 362 package dk.thoerup.traininfo;
2    
3 torben 365
4 torben 630 import static dk.thoerup.traininfo.R.string.generic_cancel;
5     import static dk.thoerup.traininfo.R.string.generic_retry;
6     import static dk.thoerup.traininfo.R.string.timetablelist_fetchdata;
7     import static dk.thoerup.traininfo.R.string.timetablelist_fetcherror;
8     import static dk.thoerup.traininfo.R.string.timetablelist_nodata;
9    
10 torben 365 import java.util.ArrayList;
11     import java.util.List;
12    
13 torben 366 import android.app.Activity;
14 torben 365 import android.app.AlertDialog;
15     import android.app.Dialog;
16     import android.app.ProgressDialog;
17     import android.content.DialogInterface;
18 torben 364 import android.content.Intent;
19 torben 365 import android.os.AsyncTask;
20 torben 362 import android.os.Bundle;
21 torben 630 import android.util.Log;
22 torben 366 import android.widget.ListView;
23 torben 362 import android.widget.TextView;
24 torben 365 import dk.thoerup.traininfo.provider.ProviderFactory;
25     import dk.thoerup.traininfo.provider.TimetableProvider;
26     import dk.thoerup.traininfo.util.MessageBox;
27 torben 362
28 torben 366 public class TimetableList extends Activity {
29 torben 364
30 torben 365 private static final int DLG_PROGRESS = 8000;
31 torben 364 DepartureBean departure;
32 torben 365 TimetableListAdapter adapter;
33     TimetableFetcher fetcher;
34     List<TimetableBean> timetables;
35 torben 364
36 torben 365 TimetableProvider provider;
37    
38     @SuppressWarnings("unchecked")
39 torben 362 @Override
40     protected void onCreate(Bundle savedInstanceState) {
41     super.onCreate(savedInstanceState);
42     setContentView(R.layout.timetablelist);
43 torben 364
44 torben 365 provider = ProviderFactory.getTimetableProvider();
45    
46     adapter = new TimetableListAdapter(this);
47    
48 torben 366 ListView lv = (ListView) findViewById(R.id.List);
49     lv.setAdapter(adapter);
50    
51    
52 torben 364 Intent launchedBy = getIntent();
53     departure = (DepartureBean) launchedBy.getSerializableExtra("departure");
54    
55     ((TextView)findViewById(R.id.Train)).setText(departure.getTrainNumber());
56     ((TextView)findViewById(R.id.Status)).setText(departure.getStatus());
57 torben 398 ((TextView)findViewById(R.id.Location)).setText(departure.getLocation());
58 torben 364 ((TextView)findViewById(R.id.Note)).setText(departure.getNote());
59 torben 563 ((TextView)findViewById(R.id.Updated)).setText(departure.getLastUpdateString(this));
60 torben 366
61 torben 365
62     if (savedInstanceState == null) {
63     startTimetableFetcher();
64     } else {
65     timetables = (List<TimetableBean>) savedInstanceState.getSerializable("timetables");
66     adapter.setTimetable(timetables);
67     }
68 torben 362 }
69 torben 365
70     @Override
71     public void onSaveInstanceState(Bundle outState)
72     {
73     dismissDialog(DLG_PROGRESS);
74     outState.putSerializable("timetables", (ArrayList<TimetableBean>) timetables);
75     }
76 torben 364
77 torben 365
78     @Override
79     protected void onPrepareDialog(int id, Dialog dialog) {
80     super.onPrepareDialog(id, dialog);
81    
82     switch (id) {
83     case DLG_PROGRESS:
84     //pgDialog = (ProgressDialog) dialog;
85     break;
86     }
87     }
88    
89     @Override
90     protected Dialog onCreateDialog(int id) {
91     switch (id) {
92     case DLG_PROGRESS:
93 torben 561 ProgressDialog dlg = new ProgressDialog(this);
94     dlg.setMessage( getString(timetablelist_fetchdata) );
95 torben 365 dlg.setCancelable(true);
96     return dlg;
97     default:
98     return super.onCreateDialog(id);
99     }
100     }
101    
102     void startTimetableFetcher() {
103     showDialog(DLG_PROGRESS);
104     fetcher = new TimetableFetcher();
105 torben 699 fetcher.execute(departure.getType(), departure.getTrainNumber());
106 torben 365 }
107    
108     class TimetableFetcher extends AsyncTask<String,Void,Void> {
109    
110     boolean success;
111    
112     @Override
113     protected void onPostExecute(Void result) {
114     super.onPostExecute(result);
115     dismissDialog(DLG_PROGRESS);
116    
117    
118     if (success) {
119     adapter.setTimetable(timetables);
120     if (timetables.size() == 0) {
121 torben 561 MessageBox.showMessage(TimetableList.this, getString(timetablelist_nodata));
122 torben 365 }
123     } else { // communication or parse error
124     AlertDialog.Builder builder = new AlertDialog.Builder(TimetableList.this);
125 torben 561 builder.setMessage(getString(timetablelist_fetcherror));
126 torben 365 builder.setCancelable(true);
127 torben 561 builder.setPositiveButton(getString(generic_retry), new DialogInterface.OnClickListener() {
128 torben 365 public void onClick(DialogInterface dialog, int id) {
129     dialog.dismiss();
130     startTimetableFetcher();
131    
132     }
133     });
134 torben 561 builder.setNegativeButton(getString(generic_cancel), new DialogInterface.OnClickListener() {
135 torben 365 public void onClick(DialogInterface dialog, int id) {
136     dialog.dismiss();
137     }
138 torben 630 });
139    
140     try {
141     builder.show();
142     } catch (android.view.WindowManager.BadTokenException e) {
143     Log.i("TimetableList", "BadTokenException"); // this can happen if the user switched away from this activity, while doInBackground was running
144     }
145    
146 torben 365 }
147    
148     }
149    
150     @Override
151     protected Void doInBackground(String... arg0) {
152 torben 699 String type = arg0[0];
153     String trainID = arg0[1];
154     success = provider.lookupTimetable(type, trainID);
155     timetables = provider.getTimetable(type, trainID);
156 torben 365
157     return null;
158     }
159    
160     }
161 torben 362 }

  ViewVC Help
Powered by ViewVC 1.1.20