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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1572 - (hide annotations) (download)
Sat Jul 9 09:45:40 2011 UTC (12 years, 10 months ago) by torben
File size: 7297 byte(s)
Make sure we actually have a stationlist

Bump version to 1.1.2 (55)
1 torben 481 package dk.thoerup.traininfo;
2    
3 torben 1548
4    
5 torben 1555 import java.io.InvalidClassException;
6    
7 torben 481 import android.app.Activity;
8 torben 1547 import android.app.ProgressDialog;
9 torben 481 import android.content.Intent;
10 torben 1547 import android.content.SharedPreferences;
11     import android.content.SharedPreferences.Editor;
12 torben 500 import android.net.Uri;
13 torben 1547 import android.os.AsyncTask;
14 torben 481 import android.os.Bundle;
15 torben 743 import android.os.Handler;
16 torben 1159 import android.util.Log;
17 torben 1548 import android.view.Menu;
18     import android.view.MenuItem;
19 torben 481 import android.view.View;
20 torben 1547 import android.view.View.OnClickListener;
21 torben 482 import android.view.Window;
22 torben 481 import android.widget.Button;
23 torben 1547 import android.widget.Toast;
24 torben 481
25 torben 720 import com.nullwire.trace.ExceptionHandler;
26    
27 torben 1131 import dk.thoerup.androidutils.CheckUpdates;
28 torben 1547 import dk.thoerup.traininfo.provider.OfflineStationProvider;
29 torben 1159 import dk.thoerup.traininfo.provider.ProviderFactory;
30 torben 1547 import dk.thoerup.traininfo.provider.StationProvider;
31 torben 720
32 torben 1551
33 torben 481 public class WelcomeScreen extends Activity{
34 torben 1547
35     final static String stationsreload = "stationsreload";
36 torben 1548 final static int MENU_SETTINGS = 1;
37     final static int MENU_RELOAD = 2;
38 torben 1547
39 torben 1548
40 torben 481 public enum ListType {
41     ListNearest,
42     ListSearch,
43     ListFavorites
44     }
45    
46 torben 743 Handler handler = new Handler();
47    
48 torben 1547 SharedPreferences prefs;
49    
50 torben 1567 StationLoader stationLoader;
51    
52 torben 481 @Override
53     public void onCreate(Bundle savedInstanceState) {
54 torben 916
55     super.onCreate(savedInstanceState);
56 torben 1547
57     prefs = getSharedPreferences("TrainStation", 0);
58    
59 torben 482 requestWindowFeature( Window.FEATURE_NO_TITLE );
60 torben 481 setContentView(R.layout.welcome);
61    
62     Button nearestButton = (Button) findViewById(R.id.nearest);
63     nearestButton.setOnClickListener( new StationListListener(ListType.ListNearest));
64    
65     Button searchButton = (Button) findViewById(R.id.search);
66     searchButton.setOnClickListener( new StationListListener(ListType.ListSearch));
67    
68     Button favoritesButton = (Button) findViewById(R.id.favorites);
69     favoritesButton.setOnClickListener( new StationListListener(ListType.ListFavorites));
70    
71     Button aboutButton = (Button) findViewById(R.id.about);
72     aboutButton.setOnClickListener( new AboutListener() );
73 torben 568
74     ExceptionHandler.register(this, "http://t-hoerup.dk/android/trace.php");
75 torben 720
76     CheckUpdates update = new CheckUpdates();
77 torben 911 update.checkForUpdates(this, "http://t-hoerup.dk/android/traininfo/version.txt", "TrainInfo DK", null);
78 torben 846 /*
79 torben 743 Runnable r = new Runnable() {
80     @Override
81     public void run() {
82     View splash = findViewById(R.id.splash);
83     splash.setVisibility(View.GONE);
84     }
85     };
86     handler.postDelayed(r, 1500);
87 torben 846 */
88 torben 1547
89     StationProvider sp = ProviderFactory.getStationProvider();
90    
91     if (sp instanceof OfflineStationProvider ) {
92     OfflineStationProvider osp = (OfflineStationProvider) sp;
93 torben 1555 long last = prefs.getLong(stationsreload, 0);
94     long now = System.currentTimeMillis();
95     Log.i("TrainInfo", "Last Load: " + last);
96    
97     if ( (now-last) > (14*24*60*60*1000) ) {
98 torben 1567 stationLoader = new StationLoader(osp);
99     stationLoader.execute( (Void)null);
100 torben 1555 } else {
101    
102     boolean didLoad = false;
103 torben 1547
104 torben 1555 try {
105     didLoad = osp.loadStations(this);
106     }
107     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 torben 1547
115 torben 1555 if (didLoad == false) {
116 torben 1567 stationLoader = new StationLoader(osp);
117     stationLoader.execute( (Void)null);
118 torben 1547 }
119     }
120 torben 1555
121 torben 1547 }
122 torben 481 }
123 torben 1159
124    
125 torben 743
126 torben 1159 @Override
127     protected void onDestroy() {
128     super.onDestroy();
129 torben 1567 if (stationLoader != null) {
130     stationLoader.cancel(false);
131     }
132    
133 torben 1159 ProviderFactory.purgeOldEntries(); //exiting application, do some cleanup
134     }
135    
136    
137 torben 1548 @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 torben 1159
173 torben 481 class AboutListener implements OnClickListener {
174    
175     @Override
176     public void onClick(View v) {
177 torben 500 /*
178 torben 484 String appName = WelcomeScreen.this.getResources().getString(R.string.app_name);
179     String ver = WelcomeScreen.this.getResources().getString(R.string.app_version);
180    
181 torben 483 StringBuffer message = new StringBuffer();
182 torben 484 message.append(appName);
183     message.append(" v").append(ver).append("\n");
184 torben 483 message.append("By Torben H. Nielsen\n");
185    
186 torben 500 MessageBox.showMessage(WelcomeScreen.this, message.toString());*/
187 torben 1393 Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://t-hoerup.dk/android/traininfo/"));
188 torben 500 startActivity(browserIntent);
189 torben 481 }
190 torben 483
191 torben 481 }
192 torben 1446
193 torben 483
194 torben 481 class StationListListener implements OnClickListener{
195     ListType launchType;
196     StationListListener(ListType type) {
197     launchType = type;
198     }
199    
200     @Override
201     public void onClick(View v) {
202 torben 1572
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 torben 481 Intent intent = new Intent(WelcomeScreen.this, StationList.class);
216     intent.putExtra("type", launchType);
217     WelcomeScreen.this.startActivity(intent);
218     }
219    
220     }
221 torben 1547
222     class StationLoader extends AsyncTask<Void,Void,Void> {
223    
224    
225     boolean succeeded;
226     ProgressDialog dlg;
227     OfflineStationProvider osp;
228 torben 1550 String exMsg;
229 torben 1547
230     public StationLoader(OfflineStationProvider osp) {
231     this.osp = osp;
232     }
233    
234     @Override
235     protected Void doInBackground(Void... params) {
236     try {
237     osp.downloadStations( WelcomeScreen.this );
238     succeeded = true;
239     } catch (Exception e) {
240     succeeded = false;
241 torben 1550 exMsg = e.getMessage();
242 torben 1547 }
243     return null;
244     }
245    
246 torben 1565
247 torben 1547 @Override
248     protected void onPreExecute() {
249     super.onPreExecute();
250    
251     dlg = new ProgressDialog(WelcomeScreen.this);
252 torben 1565 dlg.setMessage( getText(R.string.welcome_downloadingstations) );
253 torben 1571 dlg.setCancelable(false);
254 torben 1547 dlg.show();
255     }
256    
257     @Override
258     protected void onPostExecute(Void result) {
259     super.onPostExecute(result);
260    
261     dlg.dismiss();
262     dlg = null;
263    
264     if (succeeded) {
265     Editor edit = prefs.edit();
266     edit.putLong(stationsreload, System.currentTimeMillis() );
267     edit.commit();
268 torben 1550 } else {
269     Toast.makeText(WelcomeScreen.this, "Error " + exMsg, Toast.LENGTH_LONG).show();
270 torben 1547 }
271     }
272     }
273    
274 torben 481 }

  ViewVC Help
Powered by ViewVC 1.1.20