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

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

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

revision 1547 by torben, Thu Jul 7 19:07:55 2011 UTC revision 1594 by torben, Wed Aug 31 20:23:36 2011 UTC
# Line 1  Line 1 
1  package dk.thoerup.traininfo;  package dk.thoerup.traininfo;
2    
3    
4    
5    import java.io.InvalidClassException;
6    
7  import android.app.Activity;  import android.app.Activity;
8  import android.app.ProgressDialog;  import android.app.ProgressDialog;
9  import android.content.Intent;  import android.content.Intent;
# Line 10  import android.os.AsyncTask; Line 14  import android.os.AsyncTask;
14  import android.os.Bundle;  import android.os.Bundle;
15  import android.os.Handler;  import android.os.Handler;
16  import android.util.Log;  import android.util.Log;
17    import android.view.Menu;
18    import android.view.MenuItem;
19  import android.view.View;  import android.view.View;
20  import android.view.View.OnClickListener;  import android.view.View.OnClickListener;
21  import android.view.Window;  import android.view.Window;
# Line 23  import dk.thoerup.traininfo.provider.Off Line 29  import dk.thoerup.traininfo.provider.Off
29  import dk.thoerup.traininfo.provider.ProviderFactory;  import dk.thoerup.traininfo.provider.ProviderFactory;
30  import dk.thoerup.traininfo.provider.StationProvider;  import dk.thoerup.traininfo.provider.StationProvider;
31    
32    
33  public class WelcomeScreen extends Activity{  public class WelcomeScreen extends Activity{
34                    
35          final static String stationsreload = "stationsreload";          final static String stationsreload = "stationsreload";
36            final static int MENU_SETTINGS = 1;
37            final static int MENU_RELOAD = 2;
38            
39                    
40          public enum ListType {          public enum ListType {
41                  ListNearest,                  ListNearest,
# Line 37  public class WelcomeScreen extends Activ Line 47  public class WelcomeScreen extends Activ
47                    
48          SharedPreferences prefs;          SharedPreferences prefs;
49                    
50            StationLoader stationLoader;
51            
52          @Override          @Override
53          public void onCreate(Bundle savedInstanceState) {          public void onCreate(Bundle savedInstanceState) {
54                                    
# Line 56  public class WelcomeScreen extends Activ Line 68  public class WelcomeScreen extends Activ
68                  Button favoritesButton = (Button) findViewById(R.id.favorites);                  Button favoritesButton = (Button) findViewById(R.id.favorites);
69                  favoritesButton.setOnClickListener( new StationListListener(ListType.ListFavorites));                  favoritesButton.setOnClickListener( new StationListListener(ListType.ListFavorites));
70                                    
                 Button settingsButton = (Button) findViewById(R.id.settings);  
                 settingsButton.setOnClickListener( new SettingsListener() );  
                   
71                  Button aboutButton = (Button) findViewById(R.id.about);                  Button aboutButton = (Button) findViewById(R.id.about);
72                  aboutButton.setOnClickListener( new AboutListener() );                  aboutButton.setOnClickListener( new AboutListener() );
73                                    
# Line 81  public class WelcomeScreen extends Activ Line 90  public class WelcomeScreen extends Activ
90                                    
91                  if (sp instanceof OfflineStationProvider ) {                  if (sp instanceof OfflineStationProvider ) {
92                          OfflineStationProvider osp = (OfflineStationProvider) sp;                          OfflineStationProvider osp = (OfflineStationProvider) sp;
93                          try {                          long last = prefs.getLong(stationsreload, 0);
94                                                            long now = System.currentTimeMillis();
95                                  long last = prefs.getLong(stationsreload, 0);                          Log.i("TrainInfo", "Last Load: " + last);
96                                  long now = System.currentTimeMillis();                          
97                                                            if ( (now-last) > (14*24*60*60*1000) ) {
98                                  if ( (now-last) > (14*24*60*60*1000) ) {                                  stationLoader = new StationLoader(osp);
99                                          new StationLoader(osp).execute( (Void)null);                                  stationLoader.execute( (Void)null);
100                                  } else {                          } else {
101                            
102                                    boolean didLoad = false;
103                                                                    
104                                          boolean didLoad = osp.loadStations(this);                                  try {
105                                                                                    didLoad = osp.loadStations(this);
106                                          if (didLoad == false) {                                                                  }
107                                                  new StationLoader(osp).execute( (Void)null);                                  catch (InvalidClassException e) {
108                                          }                                          Log.i("TrainInfo", "invalid class - do a new download of stationlist");
109                                    }
110                                    catch (Exception e) {
111                                            Toast.makeText(this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
112                                            Log.e("TrainInfo", "load error", e);
113                                  }                                  }
114                                                                    
115                          } catch (Exception e) {                                  if (didLoad == false) {                                
116                                  Toast.makeText(this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();                                          stationLoader = new StationLoader(osp);
117                                            stationLoader.execute( (Void)null);
118                                    }
119                          }                          }
120    
121                  }                  }
122          }          }
123                    
# Line 108  public class WelcomeScreen extends Activ Line 126  public class WelcomeScreen extends Activ
126          @Override          @Override
127          protected void onDestroy() {          protected void onDestroy() {
128                  super.onDestroy();                  super.onDestroy();
129                    if (stationLoader != null) {
130                            stationLoader.cancel(true);
131                    }
132                    
133                  ProviderFactory.purgeOldEntries(); //exiting application, do some cleanup                  ProviderFactory.purgeOldEntries(); //exiting application, do some cleanup
134          }          }
135    
136    
137            @Override
138            public boolean onCreateOptionsMenu(Menu menu) {
139                    MenuItem item;
140                    
141                    item = menu.add(0, MENU_SETTINGS, 0, getString(R.string.welcome_settings) );
142                    item.setIcon(android.R.drawable.ic_menu_preferences);
143                    
144                    item = menu.add(0, MENU_RELOAD, 0, getString(R.string.welcome_reloadstations));
145                    item.setIcon(android.R.drawable.ic_menu_rotate);
146                    
147                    return true;
148            }
149            
150            @Override
151            public boolean onOptionsItemSelected(MenuItem item) {
152                    boolean retval = true;
153                    
154                    switch (item.getItemId()) {
155                    case MENU_SETTINGS:
156                            Intent intent = new Intent(WelcomeScreen.this, SettingsScreen.class);
157                            WelcomeScreen.this.startActivity(intent);
158                            break;
159                            
160                    case MENU_RELOAD:
161                            OfflineStationProvider osp = (OfflineStationProvider) ProviderFactory.getStationProvider();
162                            new StationLoader(osp).execute( (Void)null);                    
163                            break;
164                            
165                    default:
166                            retval = super.onOptionsItemSelected(item);
167                    }
168                    
169                    return retval;
170            }
171            
172    
173          class AboutListener implements OnClickListener {          class AboutListener implements OnClickListener {
174    
# Line 133  public class WelcomeScreen extends Activ Line 190  public class WelcomeScreen extends Activ
190    
191          }          }
192                    
         class SettingsListener implements OnClickListener{  
           
                 @Override  
                 public void onClick(View v) {  
                         Intent intent = new Intent(WelcomeScreen.this, SettingsScreen.class);  
                         WelcomeScreen.this.startActivity(intent);  
                 }                
         }  
193    
194          class StationListListener implements OnClickListener{          class StationListListener implements OnClickListener{
195                  ListType launchType;                  ListType launchType;
# Line 150  public class WelcomeScreen extends Activ Line 199  public class WelcomeScreen extends Activ
199                                    
200                  @Override                  @Override
201                  public void onClick(View v) {                  public void onClick(View v) {
202                            
203                            StationProvider sp = ProviderFactory.getStationProvider();
204                            
205                            if (sp instanceof OfflineStationProvider ) {
206                                    OfflineStationProvider osp = (OfflineStationProvider) sp;
207                                    
208                                    if (! osp.hasStations()) {
209                                            stationLoader = new StationLoader(osp);
210                                            stationLoader.execute( (Void)null);    
211                                            return;
212                                    }
213                            }
214                            
215                          Intent intent = new Intent(WelcomeScreen.this, StationList.class);                          Intent intent = new Intent(WelcomeScreen.this, StationList.class);
216                          intent.putExtra("type", launchType);                          intent.putExtra("type", launchType);
217                          WelcomeScreen.this.startActivity(intent);                          WelcomeScreen.this.startActivity(intent);
# Line 163  public class WelcomeScreen extends Activ Line 225  public class WelcomeScreen extends Activ
225                  boolean succeeded;                  boolean succeeded;
226                  ProgressDialog dlg;                  ProgressDialog dlg;
227                  OfflineStationProvider osp;                  OfflineStationProvider osp;
228                    String exMsg;
229                                    
230                  public StationLoader(OfflineStationProvider osp) {                  public StationLoader(OfflineStationProvider osp) {
231                          this.osp = osp;                          this.osp = osp;
# Line 175  public class WelcomeScreen extends Activ Line 238  public class WelcomeScreen extends Activ
238                                  succeeded = true;                                  succeeded = true;
239                          } catch (Exception e) {                          } catch (Exception e) {
240                                  succeeded = false;                                  succeeded = false;
241                                  Toast.makeText(WelcomeScreen.this, "Error " + e.getMessage(), Toast.LENGTH_LONG).show();                                  exMsg = e.getMessage();                        
242                          }                          }
243                          return null;                          return null;
244                  }                  }
245    
246                    
247                  @Override                  @Override
248                  protected void onPreExecute() {                  protected void onPreExecute() {
249                          super.onPreExecute();                          super.onPreExecute();
250                                                    
251                          dlg = new ProgressDialog(WelcomeScreen.this);                          dlg = new ProgressDialog(WelcomeScreen.this);
252                          dlg.setMessage( "Downloading stations list" );//TODO: translate                          dlg.setMessage( getText(R.string.welcome_downloadingstations) );
253                          dlg.setCancelable(true);                          dlg.setCancelable(false);
254                          dlg.show();                          dlg.show();
255                  }                  }
256    
# Line 201  public class WelcomeScreen extends Activ Line 265  public class WelcomeScreen extends Activ
265                                  Editor edit = prefs.edit();                                  Editor edit = prefs.edit();
266                                  edit.putLong(stationsreload, System.currentTimeMillis() );                                  edit.putLong(stationsreload, System.currentTimeMillis() );
267                                  edit.commit();                                  edit.commit();
268                            } else {
269                                    Toast.makeText(WelcomeScreen.this, "Error " + exMsg, Toast.LENGTH_LONG).show();
270                          }                          }
271                  }                        }      
272          }          }

Legend:
Removed from v.1547  
changed lines
  Added in v.1594

  ViewVC Help
Powered by ViewVC 1.1.20