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

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

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

revision 316 by torben, Fri Sep 11 08:48:18 2009 UTC revision 336 by torben, Wed Sep 23 12:51:49 2009 UTC
# Line 5  import java.util.ArrayList; Line 5  import java.util.ArrayList;
5  import java.util.List;  import java.util.List;
6  import java.util.Locale;  import java.util.Locale;
7    
8    import android.app.AlertDialog;
9  import android.app.Dialog;  import android.app.Dialog;
10  import android.app.ListActivity;  import android.app.ListActivity;
11  import android.app.ProgressDialog;  import android.app.ProgressDialog;
12    import android.content.DialogInterface;
13  import android.content.Intent;  import android.content.Intent;
14  import android.location.Address;  import android.location.Address;
15  import android.location.Geocoder;  import android.location.Geocoder;
# Line 37  public class DepartureList extends ListA Line 39  public class DepartureList extends ListA
39          ProgressDialog pgDialog;          ProgressDialog pgDialog;
40          Dialog detailsDialog;          Dialog detailsDialog;
41          DepartureFetcher fetcher;          DepartureFetcher fetcher;
42            int stationId;
43                    
44          double latitude,longitude;          double latitude,longitude;
45                    
# Line 56  public class DepartureList extends ListA Line 59  public class DepartureList extends ListA
59                                    
60                  String name = launchedBy.getStringExtra("name");                  String name = launchedBy.getStringExtra("name");
61                  ((TextView) findViewById(R.id.stationName)).setText( name );                  ((TextView) findViewById(R.id.stationName)).setText( name );
62    
63                    String address = launchedBy.getStringExtra("address");
64                    ((TextView) findViewById(R.id.stationAddr)).setText( address );
65                                    
66                  ((TextView) findViewById(R.id.stationAddr)).setText( "searching..." );                  stationId = launchedBy.getIntExtra("stationid", -1);
                   
                 int stationId = launchedBy.getIntExtra("stationid", -1);  
67                                    
68                  findViewById(R.id.header).setOnClickListener( mapLauncher );                  findViewById(R.id.header).setOnClickListener( mapLauncher );
69                                    
# Line 72  public class DepartureList extends ListA Line 76  public class DepartureList extends ListA
76                                    
77                  provider = ProviderFactory.getDepartureProvider();                  provider = ProviderFactory.getDepartureProvider();
78                                    
                 fetcher = new DepartureFetcher();  
79                  if (savedInstanceState == null) {                  if (savedInstanceState == null) {
80                          showDialog(DLG_PROGRESS);                          startDepartureFetcher();
                         fetcher.execute(stationId);  
81                  } else {                  } else {
82                          departures = (List<DepartureBean>) savedInstanceState.getSerializable("departures");                          departures = (List<DepartureBean>) savedInstanceState.getSerializable("departures");
83                          adapter.setDepartures(departures);                          adapter.setDepartures(departures);
# Line 157  public class DepartureList extends ListA Line 159  public class DepartureList extends ListA
159                  }                  }
160          }          }
161    
162          String lookupAddress(double latitude, double longitude) {          void startDepartureFetcher() {
163                                    showDialog(DLG_PROGRESS);
164                  Geocoder coder = new Geocoder(this, new Locale("da"));                  fetcher = new DepartureFetcher();
165                  StringBuilder sb = new StringBuilder();                  fetcher.execute(stationId);
                 Log.i("lookupaddr", "" + latitude + "/" + longitude);  
                 try {  
                         List<Address> addressList = coder.getFromLocation(latitude, longitude, 1);  
                         Address addr = addressList.get(0);  
                           
                           
                         int max = addr.getMaxAddressLineIndex();  
                         for (int i=0; i<max; i++) {  
                                 if (i>0)  
                                         sb.append(", ");  
                                   
                                 sb.append(addr.getAddressLine(i));  
                         }  
                           
                           
                 } catch (Exception e) {  
                         Log.e("DepartureList", "geocoder failed", e);  
                 }  
                   
                 return sb.toString();  
166          }          }
167                    
168          class DialogDismisser implements View.OnClickListener {          class DialogDismisser implements View.OnClickListener {
# Line 195  public class DepartureList extends ListA Line 177  public class DepartureList extends ListA
177                          if (dlg.isShowing())                          if (dlg.isShowing())
178                                  dlg.dismiss();                                  dlg.dismiss();
179                  }                  }
180          }  
181            
182    }
183                    
184          View.OnClickListener mapLauncher = new View.OnClickListener() {          View.OnClickListener mapLauncher = new View.OnClickListener() {
185                  @Override                  @Override
# Line 204  public class DepartureList extends ListA Line 188  public class DepartureList extends ListA
188                          startActivity( new Intent(Intent.ACTION_VIEW, uri));                          startActivity( new Intent(Intent.ACTION_VIEW, uri));
189                  }                  }
190          };          };
191            
192    
193                    
194          class DepartureFetcher extends AsyncTask<Integer, Void, Void> {          class DepartureFetcher extends AsyncTask<Integer, Void, Void> {
195    
196                    boolean success;
197                  String addr;                  String addr;
198                  @Override                  @Override
199                  protected void onPostExecute(Void result) {                  protected void onPostExecute(Void result) {
200                          super.onPostExecute(result);                          super.onPostExecute(result);
201                                                    
                         adapter.setDepartures(departures);  
                         pgDialog.dismiss();  
                           
202                                                    
203                          ((TextView) findViewById(R.id.stationAddr)).setText( addr );                          pgDialog.dismiss();
204                                                    
205                          if (departures.size() == 0)                          if (success) {
206                                  MessageBox.showMessage(DepartureList.this, "No departures found");                                  adapter.setDepartures(departures);
207                                    if (departures.size() == 0) {
208                                            MessageBox.showMessage(DepartureList.this, "No departures found");
209                                    }
210                            } else { // communication or parse error
211                                    AlertDialog.Builder builder = new AlertDialog.Builder(DepartureList.this);                                              
212                                    builder.setMessage("Error finding departures");
213                                    builder.setCancelable(true);
214                                    builder.setPositiveButton("Retry", new DialogInterface.OnClickListener() {
215                                            public void onClick(DialogInterface dialog, int id) {
216                                                    dialog.dismiss();
217                                                    startDepartureFetcher();
218                                                    
219                                            }
220                                    });
221                                    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
222                                            public void onClick(DialogInterface dialog, int id) {
223                                                    dialog.dismiss();
224                                            }                                                      
225                                    });                                                                                            
226                                    builder.show();                        
227                            }
228                  }                  }
229    
230                  @Override                  @Override
231                  protected Void doInBackground(Integer... params) {                  protected Void doInBackground(Integer... params) {
232                          addr = lookupAddress( latitude , longitude);                          success = provider.lookupDepartures(params[0]);
233                          provider.lookupDepartures(params[0]);                          departures = provider.getDepartures(params[0]);
                         departures = provider.getDepartures();  
234                          return null;                          return null;
235                  }                  }
236                                    

Legend:
Removed from v.316  
changed lines
  Added in v.336

  ViewVC Help
Powered by ViewVC 1.1.20