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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1551 - (hide annotations) (download)
Thu Jul 7 20:45:17 2011 UTC (12 years, 10 months ago) by torben
Original Path: android/TrainInfo/src/dk/thoerup/traininfo/WelcomeScreen.java
File size: 6549 byte(s)
Minor cleanups (imports etc)
1 torben 481 package dk.thoerup.traininfo;
2    
3 torben 1548
4    
5 torben 481 import android.app.Activity;
6 torben 1547 import android.app.ProgressDialog;
7 torben 481 import android.content.Intent;
8 torben 1547 import android.content.SharedPreferences;
9     import android.content.SharedPreferences.Editor;
10 torben 500 import android.net.Uri;
11 torben 1547 import android.os.AsyncTask;
12 torben 481 import android.os.Bundle;
13 torben 743 import android.os.Handler;
14 torben 1159 import android.util.Log;
15 torben 1548 import android.view.Menu;
16     import android.view.MenuItem;
17 torben 481 import android.view.View;
18 torben 1547 import android.view.View.OnClickListener;
19 torben 482 import android.view.Window;
20 torben 481 import android.widget.Button;
21 torben 1547 import android.widget.Toast;
22 torben 481
23 torben 720 import com.nullwire.trace.ExceptionHandler;
24    
25 torben 1131 import dk.thoerup.androidutils.CheckUpdates;
26 torben 1547 import dk.thoerup.traininfo.provider.OfflineStationProvider;
27 torben 1159 import dk.thoerup.traininfo.provider.ProviderFactory;
28 torben 1547 import dk.thoerup.traininfo.provider.StationProvider;
29 torben 720
30 torben 1551
31 torben 481 public class WelcomeScreen extends Activity{
32 torben 1547
33     final static String stationsreload = "stationsreload";
34 torben 1548 final static int MENU_SETTINGS = 1;
35     final static int MENU_RELOAD = 2;
36 torben 1547
37 torben 1548
38 torben 481 public enum ListType {
39     ListNearest,
40     ListSearch,
41     ListFavorites
42     }
43    
44 torben 743 Handler handler = new Handler();
45    
46 torben 1547 SharedPreferences prefs;
47    
48 torben 481 @Override
49     public void onCreate(Bundle savedInstanceState) {
50 torben 916
51     super.onCreate(savedInstanceState);
52 torben 1547
53     prefs = getSharedPreferences("TrainStation", 0);
54    
55 torben 482 requestWindowFeature( Window.FEATURE_NO_TITLE );
56 torben 481 setContentView(R.layout.welcome);
57    
58     Button nearestButton = (Button) findViewById(R.id.nearest);
59     nearestButton.setOnClickListener( new StationListListener(ListType.ListNearest));
60    
61     Button searchButton = (Button) findViewById(R.id.search);
62     searchButton.setOnClickListener( new StationListListener(ListType.ListSearch));
63    
64     Button favoritesButton = (Button) findViewById(R.id.favorites);
65     favoritesButton.setOnClickListener( new StationListListener(ListType.ListFavorites));
66    
67     Button aboutButton = (Button) findViewById(R.id.about);
68     aboutButton.setOnClickListener( new AboutListener() );
69 torben 568
70     ExceptionHandler.register(this, "http://t-hoerup.dk/android/trace.php");
71 torben 720
72     CheckUpdates update = new CheckUpdates();
73 torben 911 update.checkForUpdates(this, "http://t-hoerup.dk/android/traininfo/version.txt", "TrainInfo DK", null);
74 torben 846 /*
75 torben 743 Runnable r = new Runnable() {
76     @Override
77     public void run() {
78     View splash = findViewById(R.id.splash);
79     splash.setVisibility(View.GONE);
80     }
81     };
82     handler.postDelayed(r, 1500);
83 torben 846 */
84 torben 1547
85     StationProvider sp = ProviderFactory.getStationProvider();
86    
87     if (sp instanceof OfflineStationProvider ) {
88     OfflineStationProvider osp = (OfflineStationProvider) sp;
89     try {
90    
91     long last = prefs.getLong(stationsreload, 0);
92     long now = System.currentTimeMillis();
93    
94 torben 1549 Log.i("TrainInfo", "Last Load: " + last);
95    
96 torben 1547 if ( (now-last) > (14*24*60*60*1000) ) {
97     new StationLoader(osp).execute( (Void)null);
98     } else {
99    
100     boolean didLoad = osp.loadStations(this);
101    
102     if (didLoad == false) {
103     new StationLoader(osp).execute( (Void)null);
104     }
105     }
106    
107     } catch (Exception e) {
108     Toast.makeText(this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
109     }
110     }
111 torben 481 }
112 torben 1159
113    
114 torben 743
115 torben 1159 @Override
116     protected void onDestroy() {
117     super.onDestroy();
118     ProviderFactory.purgeOldEntries(); //exiting application, do some cleanup
119     }
120    
121    
122 torben 1548 @Override
123     public boolean onCreateOptionsMenu(Menu menu) {
124     MenuItem item;
125    
126     item = menu.add(0, MENU_SETTINGS, 0, getString(R.string.welcome_settings) );
127     item.setIcon(android.R.drawable.ic_menu_preferences);
128    
129     item = menu.add(0, MENU_RELOAD, 0, getString(R.string.welcome_reloadstations));
130     item.setIcon(android.R.drawable.ic_menu_rotate);
131    
132     return true;
133     }
134    
135     @Override
136     public boolean onOptionsItemSelected(MenuItem item) {
137     boolean retval = true;
138    
139     switch (item.getItemId()) {
140     case MENU_SETTINGS:
141     Intent intent = new Intent(WelcomeScreen.this, SettingsScreen.class);
142     WelcomeScreen.this.startActivity(intent);
143     break;
144    
145     case MENU_RELOAD:
146     OfflineStationProvider osp = (OfflineStationProvider) ProviderFactory.getStationProvider();
147     new StationLoader(osp).execute( (Void)null);
148     break;
149    
150     default:
151     retval = super.onOptionsItemSelected(item);
152     }
153    
154     return retval;
155     }
156    
157 torben 1159
158 torben 481 class AboutListener implements OnClickListener {
159    
160     @Override
161     public void onClick(View v) {
162 torben 500 /*
163 torben 484 String appName = WelcomeScreen.this.getResources().getString(R.string.app_name);
164     String ver = WelcomeScreen.this.getResources().getString(R.string.app_version);
165    
166 torben 483 StringBuffer message = new StringBuffer();
167 torben 484 message.append(appName);
168     message.append(" v").append(ver).append("\n");
169 torben 483 message.append("By Torben H. Nielsen\n");
170    
171 torben 500 MessageBox.showMessage(WelcomeScreen.this, message.toString());*/
172 torben 1393 Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://t-hoerup.dk/android/traininfo/"));
173 torben 500 startActivity(browserIntent);
174 torben 481 }
175 torben 483
176 torben 481 }
177 torben 1446
178 torben 483
179 torben 481 class StationListListener implements OnClickListener{
180     ListType launchType;
181     StationListListener(ListType type) {
182     launchType = type;
183     }
184    
185     @Override
186     public void onClick(View v) {
187     Intent intent = new Intent(WelcomeScreen.this, StationList.class);
188     intent.putExtra("type", launchType);
189     WelcomeScreen.this.startActivity(intent);
190     }
191    
192     }
193 torben 1547
194     class StationLoader extends AsyncTask<Void,Void,Void> {
195    
196    
197     boolean succeeded;
198     ProgressDialog dlg;
199     OfflineStationProvider osp;
200 torben 1550 String exMsg;
201 torben 1547
202     public StationLoader(OfflineStationProvider osp) {
203     this.osp = osp;
204     }
205    
206     @Override
207     protected Void doInBackground(Void... params) {
208     try {
209     osp.downloadStations( WelcomeScreen.this );
210     succeeded = true;
211     } catch (Exception e) {
212     succeeded = false;
213 torben 1550 exMsg = e.getMessage();
214 torben 1547 }
215     return null;
216     }
217    
218     @Override
219     protected void onPreExecute() {
220     super.onPreExecute();
221    
222     dlg = new ProgressDialog(WelcomeScreen.this);
223     dlg.setMessage( "Downloading stations list" );//TODO: translate
224     dlg.setCancelable(true);
225     dlg.show();
226     }
227    
228     @Override
229     protected void onPostExecute(Void result) {
230     super.onPostExecute(result);
231    
232     dlg.dismiss();
233     dlg = null;
234    
235     if (succeeded) {
236     Editor edit = prefs.edit();
237     edit.putLong(stationsreload, System.currentTimeMillis() );
238     edit.commit();
239 torben 1550 } else {
240     Toast.makeText(WelcomeScreen.this, "Error " + exMsg, Toast.LENGTH_LONG).show();
241 torben 1547 }
242     }
243     }
244    
245 torben 481 }

  ViewVC Help
Powered by ViewVC 1.1.20