23 |
import static dk.thoerup.traininfo.R.string.stationlist_nostations; |
import static dk.thoerup.traininfo.R.string.stationlist_nostations; |
24 |
import static dk.thoerup.traininfo.R.string.stationlist_obtainedby; |
import static dk.thoerup.traininfo.R.string.stationlist_obtainedby; |
25 |
import static dk.thoerup.traininfo.R.string.stationlist_removefavorite; |
import static dk.thoerup.traininfo.R.string.stationlist_removefavorite; |
26 |
|
import static dk.thoerup.traininfo.R.string.stationlist_satellitecount; |
27 |
import static dk.thoerup.traininfo.R.string.stationlist_search; |
import static dk.thoerup.traininfo.R.string.stationlist_search; |
28 |
import static dk.thoerup.traininfo.R.string.stationlist_stationadded; |
import static dk.thoerup.traininfo.R.string.stationlist_stationadded; |
29 |
import static dk.thoerup.traininfo.R.string.stationlist_stationmap; |
import static dk.thoerup.traininfo.R.string.stationlist_stationmap; |
31 |
import static dk.thoerup.traininfo.R.string.stationlist_stationsearch; |
import static dk.thoerup.traininfo.R.string.stationlist_stationsearch; |
32 |
import static dk.thoerup.traininfo.R.string.stationlist_twocharmin; |
import static dk.thoerup.traininfo.R.string.stationlist_twocharmin; |
33 |
import static dk.thoerup.traininfo.R.string.stationlist_waitforlocation; |
import static dk.thoerup.traininfo.R.string.stationlist_waitforlocation; |
|
import static dk.thoerup.traininfo.R.string.stationlist_satellitecount; |
|
34 |
|
|
35 |
import java.util.ArrayList; |
import java.util.ArrayList; |
36 |
|
|
48 |
import android.os.Bundle; |
import android.os.Bundle; |
49 |
import android.os.Handler; |
import android.os.Handler; |
50 |
import android.os.Message; |
import android.os.Message; |
51 |
|
import android.util.Log; |
52 |
import android.view.ContextMenu; |
import android.view.ContextMenu; |
53 |
|
import android.view.ContextMenu.ContextMenuInfo; |
54 |
import android.view.LayoutInflater; |
import android.view.LayoutInflater; |
55 |
import android.view.Menu; |
import android.view.Menu; |
56 |
import android.view.MenuItem; |
import android.view.MenuItem; |
57 |
import android.view.View; |
import android.view.View; |
|
import android.view.ContextMenu.ContextMenuInfo; |
|
58 |
import android.view.View.OnCreateContextMenuListener; |
import android.view.View.OnCreateContextMenuListener; |
59 |
import android.widget.AdapterView; |
import android.widget.AdapterView; |
60 |
import android.widget.EditText; |
import android.widget.EditText; |
61 |
import android.widget.ListView; |
import android.widget.ListView; |
62 |
import android.widget.Toast; |
import android.widget.Toast; |
63 |
import dk.thoerup.android.traininfo.common.StationBean; |
import dk.thoerup.android.traininfo.common.StationBean; |
64 |
import dk.thoerup.android.traininfo.common.StationBean.StationEntry; |
import dk.thoerup.android.traininfo.common.StationEntry; |
65 |
import dk.thoerup.traininfo.provider.ProviderFactory; |
import dk.thoerup.traininfo.provider.ProviderFactory; |
66 |
import dk.thoerup.traininfo.provider.StationProvider; |
import dk.thoerup.traininfo.provider.StationProvider; |
67 |
import dk.thoerup.traininfo.stationmap.GeoPair; |
import dk.thoerup.traininfo.stationmap.GeoPair; |
73 |
|
|
74 |
|
|
75 |
|
|
76 |
public static final int OPTIONS_MAP = 2003; |
public static final int OPTIONS_MAP = 103; |
77 |
public static final int OPTIONS_GPSINFO = 2004; |
public static final int OPTIONS_GPSINFO = 104; |
78 |
|
|
79 |
public static final int DLG_PROGRESS = 3001; |
public static final int DLG_PROGRESS = 3001; |
80 |
public static final int DLG_STATIONNAME = 3002; |
public static final int DLG_STATIONNAME = 3002; |
150 |
|
|
151 |
switch (listType) { |
switch (listType) { |
152 |
case ListNearest: |
case ListNearest: |
153 |
startLookup(); |
startNearestLookup(); |
154 |
break; |
break; |
155 |
case ListSearch: |
case ListSearch: |
156 |
showDialog(DLG_STATIONNAME); |
showDialog(DLG_STATIONNAME); |
178 |
protected void onDestroy() { |
protected void onDestroy() { |
179 |
super.onDestroy(); |
super.onDestroy(); |
180 |
|
|
181 |
|
stationsFetched.removeMessages(0); |
182 |
|
|
183 |
|
|
184 |
if (locationLookup != null) { |
if (locationLookup != null) { |
185 |
locationLookup.stopSearch(); |
locationLookup.stopSearch(); |
231 |
item.setIcon(android.R.drawable.ic_menu_mapmode); |
item.setIcon(android.R.drawable.ic_menu_mapmode); |
232 |
|
|
233 |
item = menu.add(0, OPTIONS_GPSINFO, 0, getString(stationlist_gpsinfo)); |
item = menu.add(0, OPTIONS_GPSINFO, 0, getString(stationlist_gpsinfo)); |
234 |
item.setIcon(android.R.drawable.ic_menu_mapmode); |
item.setIcon(android.R.drawable.ic_menu_info_details); |
235 |
|
boolean hasLoc = (locationLookup.getLocation() != null); |
236 |
|
item.setEnabled(hasLoc); |
237 |
|
|
238 |
return true; |
return true; |
239 |
} |
} |
240 |
|
|
241 |
|
|
242 |
|
|
243 |
|
|
244 |
@Override |
@Override |
245 |
public boolean onOptionsItemSelected(MenuItem item) { |
public boolean onOptionsItemSelected(MenuItem item) { |
246 |
boolean retval = true; |
boolean retval = true; |
247 |
|
|
248 |
//TODO: Cleanup |
|
249 |
switch (item.getItemId()) { |
switch (item.getItemId()) { |
250 |
case OPTIONS_MAP: |
case OPTIONS_MAP: |
251 |
|
|
252 |
|
if ( stations == null || stations.entries == null || stations.entries.size() == 0 ) { |
253 |
|
Toast.makeText(this, "No stations to show on map", Toast.LENGTH_SHORT); //TODO: Translate |
254 |
|
return true; |
255 |
|
} |
256 |
|
|
257 |
Intent intent = new Intent(this,StationMapView.class); |
Intent intent = new Intent(this,StationMapView.class); |
258 |
|
|
259 |
ArrayList<GeoPair> stationPoints = new ArrayList<GeoPair>(); |
ArrayList<GeoPair> stationPoints = new ArrayList<GeoPair>(); |
269 |
Location loc = locationLookup.getLocation(); |
Location loc = locationLookup.getLocation(); |
270 |
StringBuffer message = new StringBuffer(); |
StringBuffer message = new StringBuffer(); |
271 |
message.append( getString(stationlist_locationinfo) ).append(":\n"); |
message.append( getString(stationlist_locationinfo) ).append(":\n"); |
272 |
if (loc != null) { |
|
273 |
message.append( getString(stationlist_obtainedby) ).append( loc.getProvider() ).append("\n"); |
message.append( getString(stationlist_obtainedby) ).append( loc.getProvider() ).append("\n"); |
274 |
message.append( getString(stationlist_accuracy) ).append( (int)loc.getAccuracy()).append("m\n"); |
message.append( getString(stationlist_accuracy) ).append( (int)loc.getAccuracy()).append("m\n"); |
275 |
message.append( getString(stationlist_latitude) ).append( (float)loc.getLatitude()).append("\n"); |
message.append( getString(stationlist_latitude) ).append( (float)loc.getLatitude()).append("\n"); |
276 |
message.append( getString(stationlist_longitude) ).append( (float)loc.getLongitude() ).append("\n"); |
message.append( getString(stationlist_longitude) ).append( (float)loc.getLongitude() ).append("\n"); |
277 |
} else { |
|
|
message.append( getString(stationlist_nolocation) ); |
|
|
} |
|
278 |
|
|
279 |
MessageBox.showMessage(this, message.toString(), false); |
MessageBox.showMessage(this, message.toString(), false); |
280 |
break; |
break; |
335 |
dialog.dismiss(); |
dialog.dismiss(); |
336 |
String search = et.getText().toString().trim(); |
String search = et.getText().toString().trim(); |
337 |
if (search.length() >= 2) { |
if (search.length() >= 2) { |
338 |
startNameSearch(search); |
startNameLookup(search); |
339 |
} else { |
} else { |
340 |
showMessageAndClose( getString(stationlist_twocharmin) ); |
showMessageAndClose( getString(stationlist_twocharmin) ); |
341 |
} |
} |
391 |
///////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////// |
392 |
// |
// |
393 |
|
|
394 |
public void startLookup() { |
public void startNearestLookup() { |
395 |
dialogMessage = getString( stationlist_waitforlocation ); |
dialogMessage = getString( stationlist_waitforlocation ); |
396 |
showDialog(DLG_PROGRESS); |
showDialog(DLG_PROGRESS); |
397 |
|
|
399 |
stationsFetched.sendEmptyMessageDelayed(0, 500); |
stationsFetched.sendEmptyMessageDelayed(0, 500); |
400 |
} |
} |
401 |
|
|
402 |
void startNameSearch(String name) { |
void startNameLookup(String name) { |
403 |
dialogMessage = getString( stationlist_findbyname ); |
dialogMessage = getString( stationlist_findbyname ); |
404 |
showDialog(DLG_PROGRESS); |
showDialog(DLG_PROGRESS); |
405 |
|
|
459 |
MessageBox.showMessage(StationList.this, getString(stationlist_nolocationprovider), true ); |
MessageBox.showMessage(StationList.this, getString(stationlist_nolocationprovider), true ); |
460 |
//StationList.this.finish(); |
//StationList.this.finish(); |
461 |
return; |
return; |
462 |
|
case IDLE: |
463 |
|
Log.e("TrainInfo", "How did this happen ???"); |
464 |
|
dismissDialog(DLG_PROGRESS); // how did we get here ?? |
465 |
|
return; |
466 |
|
|
467 |
} |
} |
468 |
|
|
469 |
|
|
471 |
if (locationLookup.elapsedTime() >= GPS_TIMEOUT_MS) { |
if (locationLookup.elapsedTime() >= GPS_TIMEOUT_MS) { |
472 |
dismissDialog(DLG_PROGRESS); |
dismissDialog(DLG_PROGRESS); |
473 |
|
|
474 |
|
|
475 |
locationLookup.stopSearch(); |
locationLookup.stopSearch(); |
476 |
|
|
477 |
if (locationLookup.hasLocation()) { |
if (locationLookup.hasLocation()) { |
483 |
builder.setPositiveButton(getString(generic_retry), new DialogInterface.OnClickListener() { |
builder.setPositiveButton(getString(generic_retry), new DialogInterface.OnClickListener() { |
484 |
public void onClick(DialogInterface dialog, int id) { |
public void onClick(DialogInterface dialog, int id) { |
485 |
dialog.dismiss(); |
dialog.dismiss(); |
486 |
startLookup(); |
startNearestLookup(); |
487 |
|
|
488 |
} |
} |
489 |
}); |
}); |
548 |
|
|
549 |
switch (method) { |
switch (method) { |
550 |
case ByLocation: |
case ByLocation: |
551 |
stations = stationProvider.lookupStations(loc); |
stations = stationProvider.lookupStationsByLocation(loc); |
552 |
break; |
break; |
553 |
case ByName: |
case ByName: |
554 |
stations = stationProvider.lookupStationsByName(name); |
stations = stationProvider.lookupStationsByName(name); |
601 |
runner = new Runnable() { |
runner = new Runnable() { |
602 |
@Override |
@Override |
603 |
public void run() { |
public void run() { |
604 |
startNameSearch( FindStationsTask.this.name ); |
startNameLookup( FindStationsTask.this.name ); |
605 |
} |
} |
606 |
}; |
}; |
607 |
break; |
break; |