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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 252 - (hide annotations) (download)
Mon Aug 10 10:49:43 2009 UTC (14 years, 9 months ago) by torben
File size: 3974 byte(s)
Add more mock locations and a method for removing the test provider
1 torben 237 package dk.thoerup.traininfo;
2    
3     import android.app.Dialog;
4     import android.app.ListActivity;
5     import android.app.ProgressDialog;
6     import android.content.Intent;
7 torben 241 import android.os.AsyncTask;
8 torben 237 import android.os.Bundle;
9     import android.os.Handler;
10     import android.os.Message;
11     import android.view.View;
12     import android.widget.ListView;
13 torben 245 import dk.thoerup.traininfo.util.MessageBox;
14 torben 237
15     public class TrainInfoList extends ListActivity {
16     public static final int GOTLOCATION = 1;
17     public static final int GOTSTATIONLIST = 2;
18     public static final int NOPROVIDER = 3;
19     public static final int FIXTIMEOUT = 4;
20     public static final int LOOKUPSTATIONFAILED = 5;
21    
22     public static final int DLG_PROGRESS = 1;
23    
24     /** Called when the activity is first created. */
25     ProgressDialog dialog;
26     StationLocator locator = null;
27 torben 241 LocatorTask locatorTask = new LocatorTask();
28 torben 237
29     boolean isRunning;
30    
31     StationListAdapter adapter = null;
32     @Override
33     public void onCreate(Bundle savedInstanceState) {
34     super.onCreate(savedInstanceState);
35     setContentView(R.layout.main);
36    
37 torben 252 StationLocator.removeMockLocation(this);
38 torben 241 //StationLocator.injectMockLocation(this);
39    
40 torben 237 adapter = new StationListAdapter(this);
41     setListAdapter(adapter);
42    
43     locator = new StationLocator(this, stationsFetched);
44    
45     startLookup();
46     }
47    
48 torben 243 @Override
49     public void onSaveInstanceState(Bundle outState)
50     {
51     if (dialog.isShowing())
52     dialog.dismiss();
53     }
54 torben 237
55 torben 243
56 torben 237
57     @Override
58     protected Dialog onCreateDialog(int id) {
59     switch (id) {
60     case DLG_PROGRESS:
61     ProgressDialog dlg = new ProgressDialog(this);
62     dlg.setMessage("Wait for location fix");
63     dlg.setCancelable(false);
64     return dlg;
65     default:
66     return super.onCreateDialog(id);
67     }
68    
69     }
70    
71    
72    
73     @Override
74     protected void onPrepareDialog(int id, Dialog dialog) {
75     super.onPrepareDialog(id, dialog);
76     switch (id) {
77     case DLG_PROGRESS:
78     this.dialog = (ProgressDialog) dialog;
79     break;
80     }
81     }
82    
83     public void startLookup() {
84     isRunning = true;
85     showDialog(DLG_PROGRESS);
86    
87     locator.locateStations();
88     stationsFetched.sendEmptyMessageDelayed(FIXTIMEOUT, 20000);
89     }
90    
91    
92     Handler stationsFetched = new Handler() {
93     @Override
94     public void handleMessage(Message msg) {
95    
96     switch (msg.what) {
97     case GOTLOCATION:
98     dialog.setMessage("Finding nearby stations");
99 torben 241 locatorTask.execute();
100 torben 237 break;
101     case GOTSTATIONLIST:
102     dialog.dismiss();
103 torben 245 if (locator.getStations().size() == 0)
104     MessageBox.showMessage(TrainInfoList.this,"Error loading station list!");
105 torben 237 adapter.setStations( locator.getStations() );
106     break;
107     case NOPROVIDER:
108     dialog.dismiss();
109 torben 245 MessageBox.showMessage(TrainInfoList.this,"No location provider enabled. Plase enable gps.");
110 torben 237 break;
111     case FIXTIMEOUT:
112     dialog.dismiss();
113     if (isRunning) {
114     locator.abortLocationListener();
115 torben 245 MessageBox.showMessage(TrainInfoList.this,"GPS fix timed out");
116 torben 237 }
117     break;
118     case LOOKUPSTATIONFAILED:
119     dialog.dismiss();
120 torben 245 MessageBox.showMessage(TrainInfoList.this,"Error on finding nearby stations");
121 torben 237 break;
122     }
123    
124     isRunning = false;
125     }
126     };
127    
128    
129    
130     @Override
131     protected void onListItemClick(ListView l, View v, int position, long id) {
132     super.onListItemClick(l, v, position, id);
133    
134     StationBean station = adapter.getStation(position);
135    
136    
137     Intent intent = new Intent(this, DepartureList.class);
138     intent.putExtra("name", station.getName());
139     intent.putExtra("address", station.getAddress());
140     intent.putExtra("distance", station.getDistance());
141 torben 239 intent.putExtra("latitude", station.getLatitude());
142     intent.putExtra("longitude", station.getLongitude());
143 torben 237 startActivity(intent);
144     }
145    
146 torben 241
147     class LocatorTask extends AsyncTask<Void,Void,Void> {
148     @Override
149     protected void onPreExecute() {
150     super.onPreExecute();
151     }
152    
153     @Override
154     protected Void doInBackground(Void... params) {
155     locator.findNearestStations();
156     return null;
157     }
158    
159     @Override
160     protected void onPostExecute(Void result) {
161     super.onPostExecute(result);
162     }
163     }
164 torben 237 }

  ViewVC Help
Powered by ViewVC 1.1.20