aboutsummaryrefslogtreecommitdiff
path: root/src/net/cbaines/suma/BusStopActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/cbaines/suma/BusStopActivity.java')
-rw-r--r--src/net/cbaines/suma/BusStopActivity.java811
1 files changed, 406 insertions, 405 deletions
diff --git a/src/net/cbaines/suma/BusStopActivity.java b/src/net/cbaines/suma/BusStopActivity.java
index 03dcbca..ab0a9b5 100644
--- a/src/net/cbaines/suma/BusStopActivity.java
+++ b/src/net/cbaines/suma/BusStopActivity.java
@@ -59,455 +59,456 @@ 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();
+ }
+
+ }
}