diff options
author | Christopher Baines <cbaines8@gmail.com> | 2012-02-20 10:29:21 +0000 |
---|---|---|
committer | Christopher Baines <cbaines8@gmail.com> | 2012-02-20 10:29:21 +0000 |
commit | 420be2795802a4a828c2d0063b9a9cdf382130e1 (patch) | |
tree | 565d8ffb39bb5d468fae15733ffbac7efce1bb11 /src/net/cbaines/suma/BusStopActivity.java | |
parent | a02e8ae9eed3b2e3c105db19e84c27a0774172dd (diff) | |
download | southamptonuniversitymap-420be2795802a4a828c2d0063b9a9cdf382130e1.tar southamptonuniversitymap-420be2795802a4a828c2d0063b9a9cdf382130e1.tar.gz |
Added libs to folder libs/
Diffstat (limited to 'src/net/cbaines/suma/BusStopActivity.java')
-rw-r--r-- | src/net/cbaines/suma/BusStopActivity.java | 836 |
1 files changed, 431 insertions, 405 deletions
diff --git a/src/net/cbaines/suma/BusStopActivity.java b/src/net/cbaines/suma/BusStopActivity.java index 03dcbca..d9eaed3 100644 --- a/src/net/cbaines/suma/BusStopActivity.java +++ b/src/net/cbaines/suma/BusStopActivity.java @@ -59,455 +59,481 @@ import com.j256.ormlite.dao.Dao; import com.j256.ormlite.stmt.PreparedQuery; import com.j256.ormlite.stmt.QueryBuilder; -public class BusStopActivity extends OrmLiteBaseActivity<DatabaseHelper> implements OnCheckedChangeListener, Preferences, OnItemClickListener { +public class BusStopActivity extends OrmLiteBaseActivity<DatabaseHelper> + implements OnCheckedChangeListener, Preferences, OnItemClickListener { - final static String TAG = "BusTimeActivity"; - - private boolean dataChanged; - - private ListView busTimeList; - private TextView busName; - private TextView busID; - private CheckBox busFavourite; - private TextView busStopMessage; - private ProgressBar progBar; - private LinearLayout busTimeContentLayout; - - protected Timetable timetable; - private Timetable visibleTimetable; - - protected String busStopID; - private String busStopName; - - private Dao<BusStop, String> busStopDao; - - private BusStop busStop; - - private GetTimetableTask timetableTask; - - private Context instance; - - private Handler mHandler; - private Runnable refreshData; - - private CheckBox U1RouteRadioButton; - private CheckBox U1NRouteRadioButton; - private CheckBox U2RouteRadioButton; - private CheckBox U6RouteRadioButton; - private CheckBox U9RouteRadioButton; - - private static final int POI_DIALOG_ID = 0; - private POIDialog busDialog; - - private HashSet<BusRoute> routes = new HashSet<BusRoute>(); - - Toast activityToast; - - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.bustimes); - - final DatabaseHelper helper = getHelper(); - - instance = this; - - busStopID = getIntent().getExtras().getString("busStopID"); - busStopName = getIntent().getExtras().getString("busStopName"); - - U1RouteRadioButton = (CheckBox) findViewById(R.id.radio_u1); - U1NRouteRadioButton = (CheckBox) findViewById(R.id.radio_u1n); - U2RouteRadioButton = (CheckBox) findViewById(R.id.radio_u2); - U6RouteRadioButton = (CheckBox) findViewById(R.id.radio_u6); - U9RouteRadioButton = (CheckBox) findViewById(R.id.radio_u9); - - U1RouteRadioButton.setOnCheckedChangeListener(this); - U1NRouteRadioButton.setOnCheckedChangeListener(this); - U2RouteRadioButton.setOnCheckedChangeListener(this); - U6RouteRadioButton.setOnCheckedChangeListener(this); - U9RouteRadioButton.setOnCheckedChangeListener(this); - - try { - Dao<BusRoute, Integer> busRouteDao = helper.getBusRouteDao(); - Dao<RouteStops, Integer> routeStopsDao = helper.getRouteStopsDao(); - - for (BusRoute route : busRouteDao) { - QueryBuilder<RouteStops, Integer> queryBuilder = routeStopsDao.queryBuilder(); - - queryBuilder.where().eq(RouteStops.ROUTE_ID_FIELD_NAME, route.id).and().eq(RouteStops.STOP_ID_FIELD_NAME, busStopID); - queryBuilder.setCountOf(true); - PreparedQuery<RouteStops> preparedQuery = queryBuilder.prepare(); - - long count = routeStopsDao.countOf(preparedQuery); - - if (route.code.equals("U1")) { - if (count != 0) { - U1RouteRadioButton.setVisibility(View.VISIBLE); - routes.add(route); - } else { - U1RouteRadioButton.setVisibility(View.GONE); - } - } else if (route.code.equals("U1N")) { - if (count != 0) { - U1NRouteRadioButton.setVisibility(View.VISIBLE); - routes.add(route); - } else { - U1NRouteRadioButton.setVisibility(View.GONE); - } - } else if (route.code.equals("U2")) { - if (count != 0) { - U2RouteRadioButton.setVisibility(View.VISIBLE); - routes.add(route); - } else { - U2RouteRadioButton.setVisibility(View.GONE); - } - } else if (route.code.equals("U6")) { - if (count != 0) { - U6RouteRadioButton.setVisibility(View.VISIBLE); - routes.add(route); - } else { - U6RouteRadioButton.setVisibility(View.GONE); - } - } else if (route.code.equals("U9")) { - if (count != 0) { - U9RouteRadioButton.setVisibility(View.VISIBLE); - routes.add(route); - } else { - U9RouteRadioButton.setVisibility(View.GONE); - } - } - } + final static String TAG = "BusTimeActivity"; - busStopDao = helper.getBusStopDao(); + private boolean dataChanged; - busStop = busStopDao.queryForId(busStopID); + private ListView busTimeList; + private TextView busName; + private TextView busID; + private CheckBox busFavourite; + private TextView busStopMessage; + private ProgressBar progBar; + private LinearLayout busTimeContentLayout; - busFavourite = (CheckBox) findViewById(R.id.favouriteCheckBox); - busFavourite.setChecked(busStop.favourite); - busFavourite.setOnCheckedChangeListener(this); + protected Timetable timetable; + private Timetable visibleTimetable; - } catch (SQLException e) { - e.printStackTrace(); - } + protected String busStopID; + private String busStopName; - busName = (TextView) findViewById(R.id.busStopName); - busID = (TextView) findViewById(R.id.busStopID); + private Dao<BusStop, String> busStopDao; - busStopMessage = (TextView) findViewById(R.id.busStopMessage); - progBar = (ProgressBar) findViewById(R.id.busStopLoadBar); - busTimeList = (ListView) findViewById(R.id.busStopTimes); - busTimeContentLayout = (LinearLayout) findViewById(R.id.busTimeContentLayout); + private BusStop busStop; - Log.i(TAG, "Got busstop id " + busStopID); + private GetTimetableTask timetableTask; - busName.setText(busStopName); - busID.setText(busStopID); - } + private Context instance; - public void onResume() { - super.onResume(); + private Handler mHandler; + private Runnable refreshData; - SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); - if (sharedPrefs.getBoolean(UNI_LINK_BUS_TIMES, UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT) - || sharedPrefs.getBoolean(NON_UNI_LINK_BUS_TIMES, NON_UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT)) { - Log.i(TAG, "Live Times enabled"); - timetable = (Timetable) getLastNonConfigurationInstance(); + private CheckBox U1RouteRadioButton; + private CheckBox U1NRouteRadioButton; + private CheckBox U2RouteRadioButton; + private CheckBox U6RouteRadioButton; + private CheckBox U9RouteRadioButton; - refreshData = new Runnable() { - @Override - public void run() { - timetableTask = new GetTimetableTask(); - timetableTask.execute(busStopID); - mHandler.postDelayed(refreshData, 20000); - } - }; - - mHandler = new Handler(); - - if (timetable == null) { - Log.i(TAG, "No Previous timetable"); - mHandler.post(refreshData); - } else { - Log.i(TAG, "Displaying previous timetable"); - displayTimetable(timetable); - if (System.currentTimeMillis() - timetable.fetchTime.getTime() > 20000) { - mHandler.post(refreshData); + private static final int POI_DIALOG_ID = 0; + private POIDialog busDialog; + + private HashSet<BusRoute> routes = new HashSet<BusRoute>(); + + Toast activityToast; + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.bustimes); + + final DatabaseHelper helper = getHelper(); + + instance = this; + + busStopID = getIntent().getExtras().getString("busStopID"); + busStopName = getIntent().getExtras().getString("busStopName"); + + U1RouteRadioButton = (CheckBox) findViewById(R.id.radio_u1); + U1NRouteRadioButton = (CheckBox) findViewById(R.id.radio_u1n); + U2RouteRadioButton = (CheckBox) findViewById(R.id.radio_u2); + U6RouteRadioButton = (CheckBox) findViewById(R.id.radio_u6); + U9RouteRadioButton = (CheckBox) findViewById(R.id.radio_u9); + + U1RouteRadioButton.setOnCheckedChangeListener(this); + U1NRouteRadioButton.setOnCheckedChangeListener(this); + U2RouteRadioButton.setOnCheckedChangeListener(this); + U6RouteRadioButton.setOnCheckedChangeListener(this); + U9RouteRadioButton.setOnCheckedChangeListener(this); + + try { + Dao<BusRoute, Integer> busRouteDao = helper.getBusRouteDao(); + Dao<RouteStops, Integer> routeStopsDao = helper.getRouteStopsDao(); + + for (BusRoute route : busRouteDao) { + QueryBuilder<RouteStops, Integer> queryBuilder = routeStopsDao + .queryBuilder(); + + queryBuilder.where() + .eq(RouteStops.ROUTE_ID_FIELD_NAME, route.id).and() + .eq(RouteStops.STOP_ID_FIELD_NAME, busStopID); + queryBuilder.setCountOf(true); + PreparedQuery<RouteStops> preparedQuery = queryBuilder + .prepare(); + + long count = routeStopsDao.countOf(preparedQuery); + + if (route.code.equals("U1")) { + if (count != 0) { + U1RouteRadioButton.setVisibility(View.VISIBLE); + routes.add(route); + } else { + U1RouteRadioButton.setVisibility(View.GONE); + } + } else if (route.code.equals("U1N")) { + if (count != 0) { + U1NRouteRadioButton.setVisibility(View.VISIBLE); + routes.add(route); + } else { + U1NRouteRadioButton.setVisibility(View.GONE); + } + } else if (route.code.equals("U2")) { + if (count != 0) { + U2RouteRadioButton.setVisibility(View.VISIBLE); + routes.add(route); + } else { + U2RouteRadioButton.setVisibility(View.GONE); + } + } else if (route.code.equals("U6")) { + if (count != 0) { + U6RouteRadioButton.setVisibility(View.VISIBLE); + routes.add(route); + } else { + U6RouteRadioButton.setVisibility(View.GONE); + } + } else if (route.code.equals("U9")) { + if (count != 0) { + U9RouteRadioButton.setVisibility(View.VISIBLE); + routes.add(route); + } else { + U9RouteRadioButton.setVisibility(View.GONE); + } + } + } + + busStopDao = helper.getBusStopDao(); + + busStop = busStopDao.queryForId(busStopID); + + busFavourite = (CheckBox) findViewById(R.id.favouriteCheckBox); + busFavourite.setChecked(busStop.favourite); + busFavourite.setOnCheckedChangeListener(this); + + } catch (SQLException e) { + e.printStackTrace(); } - } - } else { - Log.i(TAG, "Live Times Disabled"); - progBar.setVisibility(View.GONE); - busStopMessage.setText("Live bus times disabled"); - busStopMessage.setVisibility(View.VISIBLE); - } + busName = (TextView) findViewById(R.id.busStopName); + busID = (TextView) findViewById(R.id.busStopID); + + busStopMessage = (TextView) findViewById(R.id.busStopMessage); + progBar = (ProgressBar) findViewById(R.id.busStopLoadBar); + busTimeList = (ListView) findViewById(R.id.busStopTimes); + busTimeContentLayout = (LinearLayout) findViewById(R.id.busTimeContentLayout); - } + Log.i(TAG, "Got busstop id " + busStopID); - public void onPause() { - if (mHandler != null) { // BusTimes are enabled - mHandler.removeCallbacks(refreshData); - if (timetableTask != null) // Could happen if the handler has not created the timetableTask yet - timetableTask.cancel(true); - Log.i(TAG, "Stoping refreshing timetable data"); + busName.setText(busStopName); + busID.setText(busStopID); } - super.onPause(); - } + public void onResume() { + super.onResume(); + + SharedPreferences sharedPrefs = PreferenceManager + .getDefaultSharedPreferences(this); + if (sharedPrefs.getBoolean(UNI_LINK_BUS_TIMES, + UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT) + || sharedPrefs.getBoolean(NON_UNI_LINK_BUS_TIMES, + NON_UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT)) { + Log.i(TAG, "Live Times enabled"); + timetable = (Timetable) getLastNonConfigurationInstance(); + + refreshData = new Runnable() { + public void run() { + timetableTask = new GetTimetableTask(); + timetableTask.execute(busStopID); + mHandler.postDelayed(refreshData, 20000); + } + }; + + mHandler = new Handler(); + + if (timetable == null) { + Log.i(TAG, "No Previous timetable"); + mHandler.post(refreshData); + } else { + Log.i(TAG, "Displaying previous timetable"); + displayTimetable(timetable); + if (System.currentTimeMillis() - timetable.fetchTime.getTime() > 20000) { + mHandler.post(refreshData); + } + } + + } else { + Log.i(TAG, "Live Times Disabled"); + progBar.setVisibility(View.GONE); + busStopMessage.setText("Live bus times disabled"); + busStopMessage.setVisibility(View.VISIBLE); + } - public void finish() { - if (dataChanged) { - getIntent().putExtra("busStopChanged", busStopID); } - setResult(RESULT_OK, getIntent()); - - super.finish(); - } - - public void onCheckedChanged(CompoundButton button, boolean checked) { - if (button.equals(busFavourite)) { - busStop.favourite = checked; - try { - busStopDao.update(busStop); - dataChanged = true; - } catch (SQLException e) { - e.printStackTrace(); - } - } else { - Log.i(TAG, "Route radio button made " + checked); - if (timetable != null) { // If there is a timetable to display - displayTimetable(timetable); - } + public void onPause() { + if (mHandler != null) { // BusTimes are enabled + mHandler.removeCallbacks(refreshData); + if (timetableTask != null) // Could happen if the handler has not + // created the timetableTask yet + timetableTask.cancel(true); + Log.i(TAG, "Stoping refreshing timetable data"); + } + + super.onPause(); } - } - @Override - public Object onRetainNonConfigurationInstance() { - return timetable; - } + public void finish() { + if (dataChanged) { + getIntent().putExtra("busStopChanged", busStopID); + } - private class GetTimetableTask extends AsyncTask<String, Integer, Timetable> { - String errorMessage; + setResult(RESULT_OK, getIntent()); - protected void onPreExecute() { - progBar.setVisibility(View.VISIBLE); + super.finish(); } - protected Timetable doInBackground(String... activity) { - Timetable newTimetable = null; - try { - final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(instance); - - newTimetable = DataManager.getTimetable(instance, busStopID, sharedPrefs.getBoolean(MapActivity.UNI_LINK_BUS_TIMES, - MapActivity.UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT), sharedPrefs.getBoolean( - MapActivity.NON_UNI_LINK_BUS_TIMES, MapActivity.NON_UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT)); - } catch (SQLException e) { - errorMessage = "Error message regarding SQL?"; - e.printStackTrace(); - } catch (ClientProtocolException e) { - errorMessage = "ClientProtocolException!?!"; - e.printStackTrace(); - } catch (IOException e) { - errorMessage = "Error fetching bus times from server, are you connected to the internet?"; - e.printStackTrace(); - } catch (JSONException e) { - errorMessage = "Error parsing bus times"; - e.printStackTrace(); - } catch (Exception e) { - Log.e(TAG, e.getMessage(), e.getCause()); - } - - return newTimetable; + public void onCheckedChanged(CompoundButton button, boolean checked) { + if (button.equals(busFavourite)) { + busStop.favourite = checked; + try { + busStopDao.update(busStop); + dataChanged = true; + } catch (SQLException e) { + e.printStackTrace(); + } + } else { + Log.i(TAG, "Route radio button made " + checked); + if (timetable != null) { // If there is a timetable to display + displayTimetable(timetable); + } + } } - protected void onPostExecute(Timetable newTimetable) { - Log.i(TAG, "Got timetable for " + busStopID); - if (newTimetable == null) { - Log.i(TAG, "Its null"); - - progBar.setVisibility(View.GONE); - busStopMessage.setText(errorMessage); - busStopMessage.setVisibility(View.VISIBLE); - } else { - progBar.setVisibility(View.GONE); - timetable = newTimetable; - displayTimetable(timetable); - } + @Override + public Object onRetainNonConfigurationInstance() { + return timetable; } - } - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.stop_menu, menu); - return true; - } + private class GetTimetableTask extends + AsyncTask<String, Integer, Timetable> { + String errorMessage; - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle item selection - if (item.getItemId() == R.id.menu_previous_stop || item.getItemId() == R.id.menu_next_stop) { - Log.v(TAG, "Got a request for the stop movement"); + protected void onPreExecute() { + progBar.setVisibility(View.VISIBLE); + } - Log.v(TAG, routes.size() + " routes avalible from this stop"); + protected Timetable doInBackground(String... activity) { + Timetable newTimetable = null; + try { + final SharedPreferences sharedPrefs = PreferenceManager + .getDefaultSharedPreferences(instance); + + newTimetable = DataManager + .getTimetable( + instance, + busStopID, + sharedPrefs + .getBoolean( + MapActivity.UNI_LINK_BUS_TIMES, + MapActivity.UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT), + sharedPrefs + .getBoolean( + MapActivity.NON_UNI_LINK_BUS_TIMES, + MapActivity.NON_UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT)); + } catch (SQLException e) { + errorMessage = "Error message regarding SQL?"; + e.printStackTrace(); + } catch (ClientProtocolException e) { + errorMessage = "ClientProtocolException!?!"; + e.printStackTrace(); + } catch (IOException e) { + errorMessage = "Error fetching bus times from server, are you connected to the internet?"; + e.printStackTrace(); + } catch (JSONException e) { + errorMessage = "Error parsing bus times"; + e.printStackTrace(); + } catch (Exception e) { + Log.e(TAG, e.getMessage(), e.getCause()); + } - ArrayList<POI> busStops = new ArrayList<POI>(); + return newTimetable; + } - for (BusRoute route : routes) { - try { - Set<BusStop> tmpStops; - if (item.getItemId() == R.id.menu_next_stop) { - tmpStops = route.moveInRoute(this, getHelper().getBusStopDao().queryForId(busStopID), 1); - } else { - tmpStops = route.moveInRoute(this, getHelper().getBusStopDao().queryForId(busStopID), -1); - } - for (BusStop busStop : tmpStops) { - if (!busStops.contains(busStop)) { - busStops.add(busStop); + protected void onPostExecute(Timetable newTimetable) { + Log.i(TAG, "Got timetable for " + busStopID); + if (newTimetable == null) { + Log.i(TAG, "Its null"); + + progBar.setVisibility(View.GONE); + busStopMessage.setText(errorMessage); + busStopMessage.setVisibility(View.VISIBLE); + } else { + progBar.setVisibility(View.GONE); + timetable = newTimetable; + displayTimetable(timetable); } - } - } catch (SQLException e) { - e.printStackTrace(); } - } + } - Log.i(TAG, "stops " + busStops); + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.stop_menu, menu); + return true; + } - if (busStops.size() == 1) { - Intent i = new Intent(this, BusStopActivity.class); - BusStop stop = (BusStop) busStops.iterator().next(); - if (stop == null) { - Log.e(TAG, "stop == null"); - } - if (stop.id == null) { - Log.e(TAG, "stop.id == null"); - } - i.putExtra("busStopID", stop.id); - i.putExtra("busStopName", stop.description); - startActivity(i); - } else { - showDialog(POI_DIALOG_ID); - if (busDialog == null) { - Log.e(TAG, "Very wierd, just tried to launch the favourite's dialog, but its null?"); - return false; - } + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle item selection + if (item.getItemId() == R.id.menu_previous_stop + || item.getItemId() == R.id.menu_next_stop) { + Log.v(TAG, "Got a request for the stop movement"); + + Log.v(TAG, routes.size() + " routes avalible from this stop"); + + ArrayList<POI> busStops = new ArrayList<POI>(); + + for (BusRoute route : routes) { + try { + Set<BusStop> tmpStops; + if (item.getItemId() == R.id.menu_next_stop) { + tmpStops = route.moveInRoute(this, getHelper() + .getBusStopDao().queryForId(busStopID), 1); + } else { + tmpStops = route.moveInRoute(this, getHelper() + .getBusStopDao().queryForId(busStopID), -1); + } + for (BusStop busStop : tmpStops) { + if (!busStops.contains(busStop)) { + busStops.add(busStop); + } + } + } catch (SQLException e) { + e.printStackTrace(); + } + } - busDialog.setMessage(""); - busDialog.setItems(busStops); - busDialog.setTitle("Choose Bus Stop"); - - Log.i(TAG, "Showing dialog"); - } - - } else if (item.getItemId() == R.id.menu_refresh_stop) { - if (mHandler != null) { // BusTimes are enabled - mHandler.removeCallbacks(refreshData); - timetableTask.cancel(true); - Log.i(TAG, "Stoping refreshing timetable data"); - - mHandler.post(refreshData); - } else { - // TODO: Toast here... - } - } else { - Log.e(TAG, "No known menu option selected"); - return super.onOptionsItemSelected(item); - } - return true; - } - - private void displayTimetable(Timetable timetable) { - visibleTimetable = (Timetable) timetable.clone(); - - Log.i(TAG, "It contains " + visibleTimetable.size() + " stops"); - - if (timetable.size() == 0) { - busStopMessage.setText("No Busses"); - busStopMessage.setVisibility(View.VISIBLE); - busTimeContentLayout.setGravity(Gravity.CENTER); - } else { - - for (Iterator<Stop> stopIter = visibleTimetable.iterator(); stopIter.hasNext();) { - Stop stop = stopIter.next(); - Log.i(TAG, "Begin filtering, looking at " + stop + " with route " + stop.bus.route.code); - if (stop.bus.route.code.equals("U1")) { - if (!U1RouteRadioButton.isChecked()) { - stopIter.remove(); - } - } else if (stop.bus.route.code.equals("U1N")) { - if (!U1NRouteRadioButton.isChecked()) { - stopIter.remove(); - } - } else if (stop.bus.route.code.equals("U2")) { - if (!U2RouteRadioButton.isChecked()) { - stopIter.remove(); - } - } else if (stop.bus.route.code.equals("U6")) { - if (!U6RouteRadioButton.isChecked()) { - stopIter.remove(); - } - } else if (stop.bus.route.code.equals("U9")) { - if (!U9RouteRadioButton.isChecked()) { - stopIter.remove(); - } - } - } - - if (visibleTimetable.size() == 0) { - busTimeContentLayout.setGravity(Gravity.CENTER); - busStopMessage.setText("No Busses (With the current enabled routes)"); - busStopMessage.setVisibility(View.VISIBLE); - busTimeList.setVisibility(View.GONE); - } else { - busTimeList.setVisibility(View.VISIBLE); - busStopMessage.setVisibility(View.GONE); - TimetableAdapter adapter; - if ((adapter = (TimetableAdapter) busTimeList.getAdapter()) != null) { - adapter.updateTimetable(visibleTimetable); + Log.i(TAG, "stops " + busStops); + + if (busStops.size() == 1) { + Intent i = new Intent(this, BusStopActivity.class); + BusStop stop = (BusStop) busStops.iterator().next(); + if (stop == null) { + Log.e(TAG, "stop == null"); + } + if (stop.id == null) { + Log.e(TAG, "stop.id == null"); + } + i.putExtra("busStopID", stop.id); + i.putExtra("busStopName", stop.description); + startActivity(i); + } else { + showDialog(POI_DIALOG_ID); + if (busDialog == null) { + Log.e(TAG, + "Very wierd, just tried to launch the favourite's dialog, but its null?"); + return false; + } + + busDialog.setMessage(""); + busDialog.setItems(busStops); + busDialog.setTitle("Choose Bus Stop"); + + Log.i(TAG, "Showing dialog"); + } + + } else if (item.getItemId() == R.id.menu_refresh_stop) { + if (mHandler != null) { // BusTimes are enabled + mHandler.removeCallbacks(refreshData); + timetableTask.cancel(true); + Log.i(TAG, "Stoping refreshing timetable data"); + + mHandler.post(refreshData); + } else { + // TODO: Toast here... + } } else { - adapter = new TimetableAdapter(this, visibleTimetable); - busTimeList.setAdapter(adapter); + Log.e(TAG, "No known menu option selected"); + return super.onOptionsItemSelected(item); } - busTimeContentLayout.setGravity(Gravity.TOP); - } + return true; } - } - - @Override - protected Dialog onCreateDialog(int id) { - switch (id) { - case POI_DIALOG_ID: - busDialog = new POIDialog(instance); - busDialog.setOnItemClickListener(this); - return busDialog; + + private void displayTimetable(Timetable timetable) { + visibleTimetable = (Timetable) timetable.clone(); + + Log.i(TAG, "It contains " + visibleTimetable.size() + " stops"); + + if (timetable.size() == 0) { + busStopMessage.setText("No Busses"); + busStopMessage.setVisibility(View.VISIBLE); + busTimeContentLayout.setGravity(Gravity.CENTER); + } else { + + for (Iterator<Stop> stopIter = visibleTimetable.iterator(); stopIter + .hasNext();) { + Stop stop = stopIter.next(); + Log.i(TAG, "Begin filtering, looking at " + stop + + " with route " + stop.bus.route.code); + if (stop.bus.route.code.equals("U1")) { + if (!U1RouteRadioButton.isChecked()) { + stopIter.remove(); + } + } else if (stop.bus.route.code.equals("U1N")) { + if (!U1NRouteRadioButton.isChecked()) { + stopIter.remove(); + } + } else if (stop.bus.route.code.equals("U2")) { + if (!U2RouteRadioButton.isChecked()) { + stopIter.remove(); + } + } else if (stop.bus.route.code.equals("U6")) { + if (!U6RouteRadioButton.isChecked()) { + stopIter.remove(); + } + } else if (stop.bus.route.code.equals("U9")) { + if (!U9RouteRadioButton.isChecked()) { + stopIter.remove(); + } + } + } + + if (visibleTimetable.size() == 0) { + busTimeContentLayout.setGravity(Gravity.CENTER); + busStopMessage + .setText("No Busses (With the current enabled routes)"); + busStopMessage.setVisibility(View.VISIBLE); + busTimeList.setVisibility(View.GONE); + } else { + busTimeList.setVisibility(View.VISIBLE); + busStopMessage.setVisibility(View.GONE); + TimetableAdapter adapter; + if ((adapter = (TimetableAdapter) busTimeList.getAdapter()) != null) { + adapter.updateTimetable(visibleTimetable); + } else { + adapter = new TimetableAdapter(this, visibleTimetable); + busTimeList.setAdapter(adapter); + } + busTimeContentLayout.setGravity(Gravity.TOP); + } + } } - return null; - } - - @Override - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - Log.i(TAG, "OnItemClick pos " + position + " id " + id); - - String poiId = busDialog.adapter.getItemStringId(position); - - Log.i(TAG, "POI " + poiId + " selected"); - - Intent i = new Intent(this, BusStopActivity.class); - try { - busStop = busStopDao.queryForId(poiId); - - if (busStop == null) { - Log.e(TAG, "stop == null"); - } - if (busStop.id == null) { - Log.e(TAG, "stop.id == null"); - } - i.putExtra("busStopID", busStop.id); - i.putExtra("busStopName", busStop.description); - startActivity(i); - } catch (SQLException e) { - e.printStackTrace(); + + @Override + protected Dialog onCreateDialog(int id) { + switch (id) { + case POI_DIALOG_ID: + busDialog = new POIDialog(instance); + busDialog.setOnItemClickListener(this); + return busDialog; + } + return null; } - } + public void onItemClick(AdapterView<?> parent, View view, int position, + long id) { + Log.i(TAG, "OnItemClick pos " + position + " id " + id); + + String poiId = busDialog.adapter.getItemStringId(position); + + Log.i(TAG, "POI " + poiId + " selected"); + + Intent i = new Intent(this, BusStopActivity.class); + try { + busStop = busStopDao.queryForId(poiId); + + if (busStop == null) { + Log.e(TAG, "stop == null"); + } + if (busStop.id == null) { + Log.e(TAG, "stop.id == null"); + } + i.putExtra("busStopID", busStop.id); + i.putExtra("busStopName", busStop.description); + startActivity(i); + } catch (SQLException e) { + e.printStackTrace(); + } + + } } |