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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 364 by torben, Wed Sep 30 06:02:03 2009 UTC revision 398 by torben, Tue Oct 6 09:42:10 2009 UTC
# Line 1  Line 1 
1  package dk.thoerup.traininfo;  package dk.thoerup.traininfo;
2    
3  import android.app.ListActivity;  
4    import java.util.ArrayList;
5    import java.util.List;
6    
7    import android.app.Activity;
8    import android.app.AlertDialog;
9    import android.app.Dialog;
10    import android.app.ProgressDialog;
11    import android.content.DialogInterface;
12  import android.content.Intent;  import android.content.Intent;
13    import android.os.AsyncTask;
14  import android.os.Bundle;  import android.os.Bundle;
15    import android.widget.ListView;
16  import android.widget.TextView;  import android.widget.TextView;
17    import dk.thoerup.traininfo.provider.ProviderFactory;
18    import dk.thoerup.traininfo.provider.TimetableProvider;
19    import dk.thoerup.traininfo.util.MessageBox;
20    
21  public class TimetableList extends ListActivity {  public class TimetableList extends Activity {
22                    
23            private static final int DLG_PROGRESS = 8000;
24          DepartureBean departure;          DepartureBean departure;
25            TimetableListAdapter adapter;
26            TimetableFetcher fetcher;
27            List<TimetableBean> timetables;
28                    
29            TimetableProvider provider;
30    
31            @SuppressWarnings("unchecked")
32          @Override          @Override
33          protected void onCreate(Bundle savedInstanceState) {          protected void onCreate(Bundle savedInstanceState) {
34                  super.onCreate(savedInstanceState);                  super.onCreate(savedInstanceState);
35                  setContentView(R.layout.timetablelist);                  setContentView(R.layout.timetablelist);
36                                    
37                    provider = ProviderFactory.getTimetableProvider();
38                    
39                    adapter = new TimetableListAdapter(this);
40                    
41                    ListView lv = (ListView) findViewById(R.id.List);
42                    lv.setAdapter(adapter);
43    
44                    
45                  Intent launchedBy = getIntent();                  Intent launchedBy = getIntent();
46                  departure = (DepartureBean) launchedBy.getSerializableExtra("departure");                  departure = (DepartureBean) launchedBy.getSerializableExtra("departure");
47                                    
48                  ((TextView)findViewById(R.id.Train)).setText(departure.getTrainNumber());                  ((TextView)findViewById(R.id.Train)).setText(departure.getTrainNumber());
49                  ((TextView)findViewById(R.id.Status)).setText(departure.getStatus());                  ((TextView)findViewById(R.id.Status)).setText(departure.getStatus());
50                    ((TextView)findViewById(R.id.Location)).setText(departure.getLocation());
51                  ((TextView)findViewById(R.id.Note)).setText(departure.getNote());                  ((TextView)findViewById(R.id.Note)).setText(departure.getNote());
52                  ((TextView)findViewById(R.id.Updated)).setText(departure.getLastUpdateString());                  ((TextView)findViewById(R.id.Updated)).setText(departure.getLastUpdateString());
53                                                    
54                    
55                    if (savedInstanceState == null) {
56                            startTimetableFetcher();
57                    } else {
58                            timetables = (List<TimetableBean>) savedInstanceState.getSerializable("timetables");
59                            adapter.setTimetable(timetables);
60                    }
61          }          }
62            
63        @Override
64        public void onSaveInstanceState(Bundle outState)
65        {          
66            dismissDialog(DLG_PROGRESS);
67            outState.putSerializable("timetables", (ArrayList<TimetableBean>) timetables);
68        }
69    
70  /*              case DLG_DETAILS:  /*              case DLG_DETAILS:
71                          DepartureBean currentDeparture = departures.get(selectedItemId);                          DepartureBean currentDeparture = departures.get(selectedItemId);
# Line 37  public class TimetableList extends ListA Line 81  public class TimetableList extends ListA
81                          break;                          break;
82    
83   */   */
84            
85            @Override
86            protected void onPrepareDialog(int id, Dialog dialog) {
87                    super.onPrepareDialog(id, dialog);
88                    
89                    switch (id) {
90                    case DLG_PROGRESS:
91                            //pgDialog = (ProgressDialog) dialog;
92                            break;
93                    }
94            }
95            
96            @Override
97            protected Dialog onCreateDialog(int id) {
98                    switch (id) {
99                    case DLG_PROGRESS:
100                            ProgressDialog dlg = new ProgressDialog(this);
101                            dlg.setMessage("Fetch timetable data");
102                            dlg.setCancelable(true);
103                            return dlg;                    
104                    default:
105                            return super.onCreateDialog(id);                
106                    }
107            }
108    
109            void startTimetableFetcher() {
110                    showDialog(DLG_PROGRESS);
111                    fetcher = new TimetableFetcher();
112                    fetcher.execute(departure.getTrainNumber());
113            }
114            
115            class TimetableFetcher extends AsyncTask<String,Void,Void> {
116                    
117                    boolean success;
118                    
119                    @Override
120                    protected void onPostExecute(Void result) {
121                            super.onPostExecute(result);
122                            dismissDialog(DLG_PROGRESS);
123            
124                            
125                            if (success) {
126                                    adapter.setTimetable(timetables);
127                                    if (timetables.size() == 0) {
128                                            MessageBox.showMessage(TimetableList.this, "No timetable found");
129                                    }
130                            } else { // communication or parse error
131                                    AlertDialog.Builder builder = new AlertDialog.Builder(TimetableList.this);                                              
132                                    builder.setMessage("Error finding departures");
133                                    builder.setCancelable(true);
134                                    builder.setPositiveButton("Retry", new DialogInterface.OnClickListener() {
135                                            public void onClick(DialogInterface dialog, int id) {
136                                                    dialog.dismiss();
137                                                    startTimetableFetcher();
138                                                    
139                                            }
140                                    });
141                                    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
142                                            public void onClick(DialogInterface dialog, int id) {
143                                                    dialog.dismiss();
144                                            }                                                      
145                                    });                                                                                            
146                                    builder.show();                        
147                            }
148                            
149                    }
150                    
151                    @Override
152                    protected Void doInBackground(String... arg0) {
153                            String trainID = arg0[0];
154                            success = provider.lookupTimetable(trainID);
155                            timetables = provider.getTimetable(trainID);
156                            
157                            return null;
158                    }
159                    
160            }
161  }  }

Legend:
Removed from v.364  
changed lines
  Added in v.398

  ViewVC Help
Powered by ViewVC 1.1.20