aboutsummaryrefslogtreecommitdiff
path: root/src/net/cbaines/suma
diff options
context:
space:
mode:
authorChristopher Baines <cbaines8@gmail.com>2012-02-18 20:38:19 +0000
committerChristopher Baines <cbaines8@gmail.com>2012-02-18 20:38:19 +0000
commitb374a50fb6f3bd0866bc1f75f7592abb0a6b8cc1 (patch)
treeb4a95dd2bf151891f9a6129594e531bee3a74d37 /src/net/cbaines/suma
parent6a1277d9a0d69dc34b1c0c1cfb6c502346035434 (diff)
downloadsouthamptonuniversitymap-b374a50fb6f3bd0866bc1f75f7592abb0a6b8cc1.tar
southamptonuniversitymap-b374a50fb6f3bd0866bc1f75f7592abb0a6b8cc1.tar.gz
Fixed a bug in the constructor of BusRoute, and rebuild the database acordingly. Also made improvements to the preferences system.
Diffstat (limited to 'src/net/cbaines/suma')
-rw-r--r--src/net/cbaines/suma/BusRoute.java31
-rw-r--r--src/net/cbaines/suma/DataManager.java100
-rw-r--r--src/net/cbaines/suma/MapActivity.java280
-rw-r--r--src/net/cbaines/suma/ViewDialog.java127
4 files changed, 318 insertions, 220 deletions
diff --git a/src/net/cbaines/suma/BusRoute.java b/src/net/cbaines/suma/BusRoute.java
index 244f56e..97309c4 100644
--- a/src/net/cbaines/suma/BusRoute.java
+++ b/src/net/cbaines/suma/BusRoute.java
@@ -90,12 +90,14 @@ public class BusRoute {
BusRoute() {
}
- public BusRoute(Integer id, String code, String label, String forwardDirection, String reverseDirection, boolean uniLink) {
+ public BusRoute(Integer id, String code, String label, String forwardDirection, String reverseDirection,
+ boolean uniLink) {
this.id = id.intValue();
this.code = code;
this.label = label;
this.forwardDirection = forwardDirection;
this.reverseDirection = reverseDirection;
+ this.uniLink = uniLink;
}
public BusRoute(Integer id, String code, String label, boolean uniLink) {
@@ -168,7 +170,8 @@ public class BusRoute {
for (int stopIndex : stopIndexs) {
if (moveAmount > 0) {
- Log.v(TAG, "Moving forward " + moveAmount + " stops from " + busStop + " (" + stopIndex + "/" + routeStopsFound.size() + ")");
+ Log.v(TAG, "Moving forward " + moveAmount + " stops from " + busStop + " (" + stopIndex + "/"
+ + routeStopsFound.size() + ")");
int stopWanted = stopIndex + moveAmount;
if ((stopWanted + 1) > routeStopsFound.size()) {
Log.v(TAG, "Off the end of the route");
@@ -191,8 +194,9 @@ public class BusRoute {
Log.v(TAG, "stopWanted " + stopWanted);
busStopDao.refresh(routeStopsFound.get(stopWanted).busStop);
- Log.v(TAG, "Moving backwards " + moveAmount + " stops from " + busStop + " to " + routeStopsFound.get(stopWanted).busStop + " in route "
- + this);
+ Log.v(TAG,
+ "Moving backwards " + moveAmount + " stops from " + busStop + " to "
+ + routeStopsFound.get(stopWanted).busStop + " in route " + this);
busStops.add(routeStopsFound.get(stopWanted).busStop);
}
@@ -280,13 +284,15 @@ public class BusRoute {
} else {
stopIndex = 30;
}
- } else if (busStop.id.equals("SN120527") && id == 329) { // U2 Civic Centre Rd os stop AO Civic Ctr E
+ } else if (busStop.id.equals("SN120527") && id == 329) { // U2 Civic Centre Rd os stop AO Civic
+ // Ctr E
if (moveAmount > 0) {
stopIndex = 0;
} else {
stopIndex = 42;
}
- } else if (busStop.id.equals("SNA09298") && id == 329) { // U2 Bassett Green Rd nr Bassett Green Cl SE
+ } else if (busStop.id.equals("SNA09298") && id == 329) { // U2 Bassett Green Rd nr Bassett Green
+ // Cl SE
if (moveAmount > 0) {
stopIndex = 22;
} else {
@@ -317,8 +323,10 @@ public class BusRoute {
stopIndex = 73;
}
} else {
- Log.e(TAG, "Error, unknown bus stop " + busStop.id + " (" + busStop.description + ") that appears mutiple times in " + toString());
- throw new RuntimeException("Error, unknown bus stop " + busStop.id + " that appears mutiple times in " + toString());
+ Log.e(TAG, "Error, unknown bus stop " + busStop.id + " (" + busStop.description
+ + ") that appears mutiple times in " + toString());
+ throw new RuntimeException("Error, unknown bus stop " + busStop.id
+ + " that appears mutiple times in " + toString());
}
Log.v(TAG, "Selecting " + stopIndex + " for " + busStop.id + " as direction == " + direction);
}
@@ -326,7 +334,8 @@ public class BusRoute {
}
if (moveAmount > 0) {
- Log.v(TAG, "Moving forward " + moveAmount + " stops from " + busStop + " (" + stopIndex + "/" + routeStopsFound.size() + ")");
+ Log.v(TAG, "Moving forward " + moveAmount + " stops from " + busStop + " (" + stopIndex + "/"
+ + routeStopsFound.size() + ")");
int stopWanted = stopIndex + moveAmount;
if ((stopWanted + 1) > routeStopsFound.size()) {
Log.v(TAG, "Off the end of the route");
@@ -349,7 +358,9 @@ public class BusRoute {
Log.v(TAG, "stopWanted " + stopWanted);
busStopDao.refresh(routeStopsFound.get(stopWanted).busStop);
- Log.v(TAG, "Moving backwards " + moveAmount + " stops from " + busStop + " to " + routeStopsFound.get(stopWanted).busStop + " in route " + this);
+ Log.v(TAG,
+ "Moving backwards " + moveAmount + " stops from " + busStop + " to "
+ + routeStopsFound.get(stopWanted).busStop + " in route " + this);
return routeStopsFound.get(stopWanted).busStop;
}
diff --git a/src/net/cbaines/suma/DataManager.java b/src/net/cbaines/suma/DataManager.java
index 9ccc8f0..196a7e2 100644
--- a/src/net/cbaines/suma/DataManager.java
+++ b/src/net/cbaines/suma/DataManager.java
@@ -96,7 +96,8 @@ public class DataManager {
// Log.i(TAG, "Data: " + strLine);
String[] dataBits = strLine.split(",");
GeoPoint point = Util.csLatLongToGeoPoint(dataBits[2], dataBits[1]);
- // Log.i(TAG, "Creating building with id " + dataBits[0] + " and " + point.getLatitudeE6() + " " + point.getLongitudeE6());
+ // Log.i(TAG, "Creating building with id " + dataBits[0] + " and " + point.getLatitudeE6() + " " +
+ // point.getLongitudeE6());
buildingPoints.put(dataBits[0], point);
}
@@ -109,14 +110,14 @@ public class DataManager {
Log.i(TAG, "Number of building points " + buildingPoints.size());
/*
- * inputStream = context.getResources().openRawResource(R.raw.buildings_shapes); bufferedReader = new BufferedReader(new
- * InputStreamReader(inputStream));
+ * inputStream = context.getResources().openRawResource(R.raw.buildings_shapes); bufferedReader = new
+ * BufferedReader(new InputStreamReader(inputStream));
*
* try { String def = bufferedReader.readLine(); // Log.i(TAG, "Reading the definition " + def);
*
- * while ((strLine = bufferedReader.readLine()) != null) { // Log.i(TAG, "Data: " + strLine); String[] dataBits = strLine.split(","); Polygon poly =
- * Util.csPolygonToPolygon(strLine.split("\"")[1]); // Log.i(TAG, "Creating building with id " + dataBits[0] + " and " + poly);
- * buildingPolys.put(dataBits[0], poly); }
+ * while ((strLine = bufferedReader.readLine()) != null) { // Log.i(TAG, "Data: " + strLine); String[] dataBits
+ * = strLine.split(","); Polygon poly = Util.csPolygonToPolygon(strLine.split("\"")[1]); // Log.i(TAG,
+ * "Creating building with id " + dataBits[0] + " and " + poly); buildingPolys.put(dataBits[0], poly); }
*
* bufferedReader.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
*
@@ -143,16 +144,19 @@ public class DataManager {
continue;
}
- Building bdg = new Building(dataBits[1], buildingPoints.get(dataBits[1]), dataBits[3].equals("R"), quoteBits[0]);
+ Building bdg = new Building(dataBits[1], buildingPoints.get(dataBits[1]), dataBits[3].equals("R"),
+ quoteBits[0]);
/*
* Polygon poly = buildingPolys.get(dataBits[1]);
*
- * if (poly != null) { bdg.outline = poly; // Log.i(TAG, "Adding building " + key + " " + bdg.point.getLatitudeE6() + " " +
- * bdg.point.getLongitudeE6() + " " + poly); } else { // Log.i(TAG, "Adding building " + key + " " + bdg.point.getLatitudeE6() + " " +
+ * if (poly != null) { bdg.outline = poly; // Log.i(TAG, "Adding building " + key + " " +
+ * bdg.point.getLatitudeE6() + " " + bdg.point.getLongitudeE6() + " " + poly); } else { //
+ * Log.i(TAG, "Adding building " + key + " " + bdg.point.getLatitudeE6() + " " +
* bdg.point.getLongitudeE6()); }
*/
- // Log.i(TAG, "Creating building " + bdg.id + " " + bdg.name + " " + bdg.point + " " + bdg.residential + " " + bdg.outline);
+ // Log.i(TAG, "Creating building " + bdg.id + " " + bdg.name + " " + bdg.point + " " +
+ // bdg.residential + " " + bdg.outline);
buildingDao.create(bdg);
@@ -165,16 +169,19 @@ public class DataManager {
continue;
}
- Building bdg = new Building(dataBits[1], buildingPoints.get(dataBits[1]), dataBits[3].equals("R"), dataBits[0]);
+ Building bdg = new Building(dataBits[1], buildingPoints.get(dataBits[1]), dataBits[3].equals("R"),
+ dataBits[0]);
/*
* Polygon poly = buildingPolys.get(dataBits[1]);
*
- * if (poly != null) { bdg.outline = poly; // Log.i(TAG, "Adding building " + key + " " + bdg.point.getLatitudeE6() + " " +
- * bdg.point.getLongitudeE6() + " " + poly); } else { // Log.i(TAG, "Adding building " + key + " " + bdg.point.getLatitudeE6() + " " +
+ * if (poly != null) { bdg.outline = poly; // Log.i(TAG, "Adding building " + key + " " +
+ * bdg.point.getLatitudeE6() + " " + bdg.point.getLongitudeE6() + " " + poly); } else { //
+ * Log.i(TAG, "Adding building " + key + " " + bdg.point.getLatitudeE6() + " " +
* bdg.point.getLongitudeE6()); }
*/
- // Log.i(TAG, "Creating building " + bdg.id + " " + bdg.name + " " + bdg.point + " " + bdg.residential + " " + bdg.outline);
+ // Log.i(TAG, "Creating building " + bdg.id + " " + bdg.name + " " + bdg.point + " " +
+ // bdg.residential + " " + bdg.outline);
buildingDao.create(bdg);
@@ -192,8 +199,9 @@ public class DataManager {
*
* Building bdg = new Building(key, buildingPoints.get(key), false); Polygon poly = buildingPolys.get(key);
*
- * if (poly != null) { bdg.outline = poly; // Log.i(TAG, "Adding building " + key + " " + bdg.point.getLatitudeE6() + " " + bdg.point.getLongitudeE6() +
- * " " + poly); } else { // Log.i(TAG, "Adding building " + key + " " + bdg.point.getLatitudeE6() + " " + bdg.point.getLongitudeE6()); }
+ * if (poly != null) { bdg.outline = poly; // Log.i(TAG, "Adding building " + key + " " +
+ * bdg.point.getLatitudeE6() + " " + bdg.point.getLongitudeE6() + " " + poly); } else { // Log.i(TAG,
+ * "Adding building " + key + " " + bdg.point.getLatitudeE6() + " " + bdg.point.getLongitudeE6()); }
*
* buildingDao.create(bdg); }
*/
@@ -229,13 +237,18 @@ public class DataManager {
String[] quBitsLng = dataBits[4].substring(1, dataBits[4].length() - 1).split(" ");
// Log.i(TAG, "Whole " + dataBits[3] + " First bit " + quBitsLat[0] + " last bit " + quBitsLat[1]);
- double lat = Double.valueOf(quBitsLat[0]) + Double.valueOf(quBitsLat[1].substring(0, quBitsLat[1].length() - 1)) / 60d; // TODO Much hackage
+ double lat = Double.valueOf(quBitsLat[0])
+ + Double.valueOf(quBitsLat[1].substring(0, quBitsLat[1].length() - 1)) / 60d; // TODO Much
+ // hackage
// Log.i(TAG, "Whole " + dataBits[4] + " First bit " + quBitsLng[0] + " last bit " + quBitsLng[1]);
- double lng = Double.valueOf(quBitsLng[0]) + Double.valueOf(quBitsLng[1].substring(0, quBitsLng[1].length() - 1)) / 60d; // TODO Much hackage
+ double lng = Double.valueOf(quBitsLng[0])
+ + Double.valueOf(quBitsLng[1].substring(0, quBitsLng[1].length() - 1)) / 60d; // TODO Much
+ // hackage
GeoPoint point = new GeoPoint((int) (lat * 1e6), (int) (lng * -1e6));
// Log.i(TAG, "Lat " + point.getLatitudeE6() + " lng " + point.getLongitudeE6());
- busStopDao.create(new BusStop(dataBits[0].replace("\"", ""), dataBits[1].replace("\"", ""), dataBits[2].replace("\"", ""), point));
+ busStopDao.create(new BusStop(dataBits[0].replace("\"", ""), dataBits[1].replace("\"", ""), dataBits[2]
+ .replace("\"", ""), point));
}
@@ -261,10 +274,14 @@ public class DataManager {
BusRoute route;
- boolean uniLink = false;
+ boolean uniLink;
int id = Integer.parseInt(dataBits[0]);
if (id == 326 || id == 468 || id == 327 || id == 329 || id == 354) {
+ Log.e(TAG, "Route " + id + " " + dataBits[1] + " is uni link");
uniLink = true;
+ } else {
+ Log.e(TAG, "Route " + id + " " + dataBits[1] + " is not uni link");
+ uniLink = false;
}
route = new BusRoute(id, dataBits[1], dataBits[2].replace("\"", ""), uniLink);
@@ -357,10 +374,12 @@ public class DataManager {
// Log.i(TAG, "Looking at stop " + stop.id);
/*
- * QueryBuilder<RouteStops, Integer> routeStopsQueryBuilder = routeStopsDao.queryBuilder(); routeStopsQueryBuilder.where().eq(columnName, value)
+ * QueryBuilder<RouteStops, Integer> routeStopsQueryBuilder = routeStopsDao.queryBuilder();
+ * routeStopsQueryBuilder.where().eq(columnName, value)
*
- * DeleteBuilder<BusStop, String> deleteBuilder = busStopDao.deleteBuilder(); // only delete the rows where password is null
- * deleteBuilder.where().in(RouteStops.STOP_ID_FIELD_NAME, objects) accountDao.delete(deleteBuilder.prepare());
+ * DeleteBuilder<BusStop, String> deleteBuilder = busStopDao.deleteBuilder(); // only delete the rows where
+ * password is null deleteBuilder.where().in(RouteStops.STOP_ID_FIELD_NAME, objects)
+ * accountDao.delete(deleteBuilder.prepare());
*/
QueryBuilder<RouteStops, Integer> routeStopsQueryBuilder = routeStopsDao.queryBuilder();
@@ -427,7 +446,8 @@ public class DataManager {
Log.i(TAG, "Loaded sites from csv");
}
- private static Stop getStop(Context context, JSONObject stopObj, Set<BusRoute> routes, BusStop busStop) throws SQLException, JSONException {
+ private static Stop getStop(Context context, JSONObject stopObj, Set<BusRoute> routes, BusStop busStop)
+ throws SQLException, JSONException {
if (helper == null)
helper = OpenHelperManager.getHelper(context, DatabaseHelper.class);
@@ -542,14 +562,17 @@ public class DataManager {
}
QueryBuilder<RouteStops, Integer> routeStopsQueryBuilder = routeStopsDao.queryBuilder();
- routeStopsQueryBuilder.where().eq(RouteStops.ROUTE_ID_FIELD_NAME, route.id).and().eq(RouteStops.STOP_ID_FIELD_NAME, destStop.id);
+ routeStopsQueryBuilder.where().eq(RouteStops.ROUTE_ID_FIELD_NAME, route.id).and()
+ .eq(RouteStops.STOP_ID_FIELD_NAME, destStop.id);
PreparedQuery<RouteStops> routeStopsPreparedQuery = routeStopsQueryBuilder.prepare();
List<RouteStops> routeStops = routeStopsDao.query(routeStopsPreparedQuery);
if (routeStops.size() > 0) {
- Log.i(TAG, "Found " + routeStops.size() + " stops matching the destStop " + destStop + " on route " + route.code);
+ Log.i(TAG, "Found " + routeStops.size() + " stops matching the destStop " + destStop + " on route "
+ + route.code);
} else {
- Log.e(TAG, "Found " + routeStops.size() + " stops matching the destStop " + destStop + " on route " + route.code);
+ Log.e(TAG, "Found " + routeStops.size() + " stops matching the destStop " + destStop + " on route "
+ + route.code);
return null;
}
@@ -588,8 +611,8 @@ public class DataManager {
return stop;
}
- public static Timetable getTimetable(Context context, String busStop, boolean keepUniLink, boolean keepNonUniLink) throws SQLException,
- ClientProtocolException, IOException, JSONException {
+ public static Timetable getTimetable(Context context, String busStop, boolean keepUniLink, boolean keepNonUniLink)
+ throws SQLException, ClientProtocolException, IOException, JSONException {
if (helper == null)
helper = OpenHelperManager.getHelper(context, DatabaseHelper.class);
@@ -617,7 +640,8 @@ public class DataManager {
if (route != null) {
busRoutes.add(route);
} else {
- throw new RuntimeException("Route not found " + key.substring(key.length() - 3, key.length()) + " " + key);
+ throw new RuntimeException("Route not found " + key.substring(key.length() - 3, key.length()) + " "
+ + key);
}
}
@@ -648,7 +672,8 @@ public class DataManager {
continue;
}
- Log.v(TAG, "Found stop for a unidentified " + stop.bus.toString() + " at " + stop.busStop.id + " at " + stop.arivalTime);
+ Log.v(TAG, "Found stop for a unidentified " + stop.bus.toString() + " at " + stop.busStop.id + " at "
+ + stop.arivalTime);
timetable.add(stop);
}
@@ -657,8 +682,8 @@ public class DataManager {
return timetable;
}
- public static Timetable getTimetable(Context context, Bus bus, BusStop startStop, int num) throws SQLException, ClientProtocolException, IOException,
- JSONException {
+ public static Timetable getTimetable(Context context, Bus bus, BusStop startStop, int num) throws SQLException,
+ ClientProtocolException, IOException, JSONException {
if (helper == null)
helper = OpenHelperManager.getHelper(context, DatabaseHelper.class);
@@ -710,7 +735,8 @@ public class DataManager {
continue;
}
- Log.v(TAG, "Found stop for a unidentified " + stop.bus.toString() + " at " + stop.busStop.id + " at " + stop.arivalTime);
+ Log.v(TAG, "Found stop for a unidentified " + stop.bus.toString() + " at " + stop.busStop.id
+ + " at " + stop.arivalTime);
timetable.add(stop);
@@ -723,7 +749,8 @@ public class DataManager {
return timetable;
}
- public static Stop getStop(Context context, Bus bus, BusStop busStop) throws SQLException, ClientProtocolException, IOException, JSONException {
+ public static Stop getStop(Context context, Bus bus, BusStop busStop) throws SQLException, ClientProtocolException,
+ IOException, JSONException {
if (helper == null)
helper = OpenHelperManager.getHelper(context, DatabaseHelper.class);
@@ -756,7 +783,8 @@ public class DataManager {
stop = getStop(context, stopObj, busRoutes, busStop);
break;
- // Log.v(TAG, "Found stop for a unidentified " + stop.bus.toString() + " at " + stop.busStop.id + " at " + stop.arivalTime);
+ // Log.v(TAG, "Found stop for a unidentified " + stop.bus.toString() + " at " + stop.busStop.id + " at "
+ // + stop.arivalTime);
}
}
diff --git a/src/net/cbaines/suma/MapActivity.java b/src/net/cbaines/suma/MapActivity.java
index 5db0a74..4d9eddc 100644
--- a/src/net/cbaines/suma/MapActivity.java
+++ b/src/net/cbaines/suma/MapActivity.java
@@ -65,10 +65,20 @@ import android.widget.Toast;
import com.j256.ormlite.android.apptools.OrmLiteBaseActivity;
import com.j256.ormlite.dao.Dao;
-public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements MapViewConstants, Runnable, RouteColorConstants, OnItemClickListener,
- OnItemLongClickListener, OnSharedPreferenceChangeListener, Preferences {
+/**
+ *
+ * @author Christopher Baines <cbaines8@gmail.com>
+ *
+ */
+public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements MapViewConstants, Runnable,
+ RouteColorConstants, OnItemClickListener, OnItemLongClickListener, OnSharedPreferenceChangeListener,
+ Preferences {
- private boolean useBundledDatabase = true;
+ /**
+ * Enable to use the database in the assets folder, if its not enabled, the database is built from the csv files in
+ * the assets folder
+ */
+ private boolean useBundledDatabase = false;
private MapView mapView;
private MapController mapController;
@@ -78,62 +88,98 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
static final int VIEW_DIALOG_ID = 0;
static final int FAVOURITE_DIALOG_ID = 1;
+ private POIDialog favDialog;
private HashMap<String, Overlay> overlays = new HashMap<String, Overlay>();
private HashMap<String, Overlay> pastOverlays;
// Overlays
- // Scale Bar Overlay
- private static final String SCALE_BAR_OVERLAY = "scaleBarOverlay";
- private ScaleBarOverlay scaleBarOverlay;
- static final boolean SCALE_BAR_OVERLAY_ENABLED_BY_DEFAULT = true;
- private static final int SCALE_BAR_OVERLAY_RANK = 1;
-
- // My Location Overlay
- private static final String MY_LOCATION_OVERLAY = "myLocationOverlay";
- private MyLocationOverlay myLocationOverlay;
- static final boolean MY_LOCATION_OVERLAY_ENABLED_BY_DEFAULT = true;
- private static final int MY_LOCATION_OVERLAY_RANK = 1;
+ // -- Building Overlays
+ static final String BUILDING_OVERLAYS = "buildingOverlays:";
- // Residential Building Overlay
+ // ---- Residential Building Overlay
private static final String RESIDENTIAL_BUILDING_OVERLAY = "residentialBuildingOverlay";
private BuildingNumOverlay residentialBuildingOverlay;
static final boolean RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT = true;
- private static final int RESIDENTIAL_BUILDING_OVERLAY_RANK = 1;
+ private static final int RESIDENTIAL_BUILDING_OVERLAY_RANK = 6;
- // Non-Residential Building Overlay
+ // ---- Non-Residential Building Overlay
private static final String NON_RESIDENTIAL_BUILDING_OVERLAY = "nonResidentialBuildingOverlay";
private BuildingNumOverlay nonResidentialBuildingOverlay;
static final boolean NON_RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT = true;
- private static final int NON_RESIDENTIAL_BUILDING_OVERLAY_RANK = 1;
+ private static final int NON_RESIDENTIAL_BUILDING_OVERLAY_RANK = 5;
- // Uni-Link Bus Stop Overlay
+ static final String[] BUILDING_TYPES = { RESIDENTIAL_BUILDING_OVERLAY, NON_RESIDENTIAL_BUILDING_OVERLAY };
+
+ // -- Bus Stop Overlays
+ static final String BUS_STOP_OVERLAYS = "busStopOverlays:";
+
+ // ---- Uni-Link Bus Stop Overlay
private static final String UNI_LINK_BUS_STOP_OVERLAY = "uniLinkBusStopOverlay";
private BusStopOverlay uniLinkBusStopOverlay;
static final boolean UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT = true;
- private static final int UNI_LINK_BUS_STOP_OVERLAY_RANK = 1;
+ private static final int UNI_LINK_BUS_STOP_OVERLAY_RANK = 3;
- // Uni-Link Bus Stop Overlay
+ // ---- Non Uni-Link Bus Stop Overlay
private static final String NON_UNI_LINK_BUS_STOP_OVERLAY = "nonUniLinkBusStopOverlay";
private BusStopOverlay nonUniLinkBusStopOverlay;
static final boolean NON_UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT = true;
- private static final int NON_UNI_LINK_BUS_STOP_OVERLAY_RANK = 1;
+ private static final int NON_UNI_LINK_BUS_STOP_OVERLAY_RANK = 4;
- // Site Overlays
- private static final String SITE_OVERLAYS = "siteOverlays";
+ // -- Site Overlays
+ static final String[] SITE_NAMES = { "Highfield Campus", "Boldrewood Campus", "Avenue Campus",
+ "Winchester School of Art", "The University of Southampton Science Park",
+ "National Oceanography Centre Campus", "Boat House", "Southampton General Hospital",
+ "Royal South Hants Hospital", "Belgrave Industrial Site", "Highfield Hall", "Glen Eyre Hall",
+ "South Hill Hall", "Chamberlain Hall", "Hartley Grove", "Bencraft Hall", "Connaught Hall",
+ "Montefiore Hall", "Stoneham Hall", "Erasmus Park" };
+
+ private static final String SITE_OVERLAYS = "siteOverlays:";
private HashMap<Site, PathOverlay> siteOverlays = new HashMap<Site, PathOverlay>(21);
static final boolean SITE_OVERLAYS_ENABLED_BY_DEFAULT = false;
- private static final int SITE_OVERLAYS_RANK = 1;
+ private static final int SITE_OVERLAYS_RANK = 8;
- // Route Overlays
- private static final String ROUTE_OVERLAYS = "routeOverlays";
- private HashMap<BusRoute, PathOverlay> routeOverlays = new HashMap<BusRoute, PathOverlay>(5);
- static final boolean ROUTE_OVERLAYS_ENABLED_BY_DEFAULT = true;
- private static final int ROUTE_OVERLAYS_RANK = 1;
+ // -- Route Overlays
+ private static final String BUS_ROUTE_OVERLAYS = "routeOverlays:";
+ private HashMap<BusRoute, PathOverlay> busRouteOverlays = new HashMap<BusRoute, PathOverlay>(5);
+ static final boolean BUS_ROUTE_OVERLAYS_ENABLED_BY_DEFAULT = true;
+ private static final int BUS_ROUTE_OVERLAYS_RANK = 7;
- private POIDialog favDialog;
+ // -- Other
+ static final String OTHER_OVERLAYS = "otherOverlay:";
+ // ---- Scale Bar Overlay
+ private static final String SCALE_BAR_OVERLAY = "scaleBarOverlay";
+ private ScaleBarOverlay scaleBarOverlay;
+ static final boolean SCALE_BAR_OVERLAY_ENABLED_BY_DEFAULT = true;
+ private static final int SCALE_BAR_OVERLAY_RANK = 1;
+
+ // ---- My Location Overlay
+ private static final String MY_LOCATION_OVERLAY = "myLocationOverlay";
+ private static final String MY_LOCATION_OVERLAY_COMPASS = "myLocationOverlayCompass";
+ private MyLocationOverlay myLocationOverlay;
+ static final boolean MY_LOCATION_OVERLAY_ENABLED_BY_DEFAULT = true;
+ static final boolean MY_LOCATION_OVERLAY_COMPASS_ENABLED_BY_DEFAULT = true;
+ private static final int MY_LOCATION_OVERLAY_RANK = 2;
+
+ static final String[] OTHER_OVERLAY_NAMES = { SCALE_BAR_OVERLAY, MY_LOCATION_OVERLAY, MY_LOCATION_OVERLAY_COMPASS };
+
+ // Other bits
+
+ // Uni-Link routes
+ static final String[] UNI_LINK_ROUTES = { "U1", "U1N", "U2", "U6", "U9" };
+
+ static final String[] PREFERENCES_GROUPS = { BUS_STOP_OVERLAYS, BUS_ROUTE_OVERLAYS, BUILDING_OVERLAYS,
+ SITE_OVERLAYS, OTHER_OVERLAYS };
+
+ static final String[][] PREFERENCES_CHILDREN = { UNI_LINK_ROUTES, UNI_LINK_ROUTES, BUILDING_TYPES, SITE_NAMES,
+ OTHER_OVERLAY_NAMES };
+
+ /**
+ * The toast for this activity, storing the toast centrally allows it to be changed quickly, instead of a queue
+ * building up
+ */
Toast activityToast;
private MapActivity instance;
@@ -162,8 +208,10 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
pastOverlays = (HashMap<String, Overlay>) getLastNonConfigurationInstance();
- // SensorManager mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); This code in the following constructor causes problems in
- // some emulators, disable sensors to fix.
+ /*
+ * SensorManager mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); This code in the
+ * following constructor causes problems in some emulators, disable sensors to fix.
+ */
Log.i(TAG, "Starting creating myLocationOverlay");
myLocationOverlay = new MyLocationOverlay(instance, mapView);
Log.i(TAG, "Finished creating myLocationOverlay");
@@ -220,13 +268,14 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
final SharedPreferences activityPrefs = getPreferences(0);
- if (activityPrefs.getBoolean("Other:Compass", false)) {
+ if (activityPrefs.getBoolean(OTHER_OVERLAYS + MY_LOCATION_OVERLAY_COMPASS, false)) {
myLocationOverlay.enableCompass();
} else {
myLocationOverlay.disableCompass();
}
- if (activityPrefs.getBoolean("Other:My Location", false) && sharedPrefs.getBoolean(GPS_ENABLED, false)) {
+ if (activityPrefs.getBoolean(OTHER_OVERLAYS + MY_LOCATION_OVERLAY, false)
+ && sharedPrefs.getBoolean(GPS_ENABLED, false)) {
myLocationOverlay.enableMyLocation();
} else {
myLocationOverlay.disableMyLocation();
@@ -360,7 +409,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
}
while (true) {
- if ((buildingThread == null || !buildingThread.isAlive()) && (busStopThread == null || !busStopThread.isAlive())
+ if ((buildingThread == null || !buildingThread.isAlive())
+ && (busStopThread == null || !busStopThread.isAlive())
&& (siteThread == null || !siteThread.isAlive()))
break;
@@ -398,18 +448,21 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
showNonUniLinkBusStopOverlays();
- if (activityPrefs.getBoolean("Buildings:Residential", true) || activityPrefs.getBoolean("Buildings:Non-Residential", true)) {
- // The argument currently dosent matter for this method.
+ if (activityPrefs.getBoolean(BUILDING_OVERLAYS + RESIDENTIAL_BUILDING_OVERLAY,
+ RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT)
+ || activityPrefs.getBoolean(BUILDING_OVERLAYS + NON_RESIDENTIAL_BUILDING_OVERLAY,
+ NON_RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT)) {
showBuildingOverlay();
}
Log.i(TAG, "Begining to show the route overlays at " + (System.currentTimeMillis() - startTime));
for (BusRoute busRoute : getHelper().getBusRouteDao()) {
if (!busRoute.uniLink) {
+ Log.v(TAG, "Bus route " + busRoute.code + "(" + busRoute.id + ") is not unilink");
continue;
}
Log.v(TAG, "Looking at showing " + busRoute.code + " route overlay");
- if (activityPrefs.getBoolean("Bus Routes:" + busRoute.code, ROUTE_OVERLAYS_ENABLED_BY_DEFAULT)) {
+ if (activityPrefs.getBoolean(BUS_ROUTE_OVERLAYS + busRoute.code, BUS_ROUTE_OVERLAYS_ENABLED_BY_DEFAULT)) {
showRouteOverlay(busRoute);
}
}
@@ -442,7 +495,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
if (scaleBarOverlay != null) {
Log.v(TAG, "ScaleBarOverlay is already created");
} else {
- if (pastOverlays != null && (scaleBarOverlay = (ScaleBarOverlay) pastOverlays.get(SCALE_BAR_OVERLAY)) != null) {
+ if (pastOverlays != null
+ && (scaleBarOverlay = (ScaleBarOverlay) pastOverlays.get(SCALE_BAR_OVERLAY)) != null) {
Log.i(TAG, "Finished restoring utility overlays " + (System.currentTimeMillis() - startTime));
} else {
scaleBarOverlay = new ScaleBarOverlay(instance);
@@ -458,7 +512,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
}
- scaleBarOverlay.setEnabled(activityPrefs.getBoolean(SCALE_BAR_OVERLAY, SCALE_BAR_OVERLAY_ENABLED_BY_DEFAULT));
+ scaleBarOverlay.setEnabled(activityPrefs.getBoolean(OTHER_OVERLAYS + SCALE_BAR_OVERLAY,
+ SCALE_BAR_OVERLAY_ENABLED_BY_DEFAULT));
mapView.postInvalidate();
@@ -470,20 +525,22 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
private void showRouteOverlay(final BusRoute route) {
new Thread(new Runnable() {
public void run() {
- Log.i(TAG, "Begining showing route " + route.code + " overlay at " + (System.currentTimeMillis() - startTime));
+ Log.i(TAG, "Begining showing route " + route.code + " overlay at "
+ + (System.currentTimeMillis() - startTime));
final SharedPreferences activityPrefs = getPreferences(0);
final OverlayRankComparator comparator = new OverlayRankComparator(getPreferences(0));
PathOverlay routeOverlay;
- if ((routeOverlay = routeOverlays.get(route)) != null) {
+ if ((routeOverlay = busRouteOverlays.get(route)) != null) {
Log.v(TAG, route.code + " route overlay already existed");
} else {
- if (pastOverlays != null && (routeOverlay = (PathOverlay) pastOverlays.get(ROUTE_OVERLAYS + route.code)) != null) {
+ if (pastOverlays != null
+ && (routeOverlay = (PathOverlay) pastOverlays.get(BUS_ROUTE_OVERLAYS + route.code)) != null) {
Log.v(TAG, "Restored " + route.code + " route overlay");
if (route.code.equals("U1")) {
- PathOverlay routeOverlayU1E = (PathOverlay) pastOverlays.get(ROUTE_OVERLAYS + "U1E");
- overlays.put(ROUTE_OVERLAYS + "U1E", routeOverlayU1E);
+ PathOverlay routeOverlayU1E = (PathOverlay) pastOverlays.get(BUS_ROUTE_OVERLAYS + "U1E");
+ overlays.put(BUS_ROUTE_OVERLAYS + "U1E", routeOverlayU1E);
}
} else {
InputStream resource = null;
@@ -493,15 +550,16 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
colour = U1;
// TODO Is this a route like U1N or, something else, this hack works somewhat for now?
- PathOverlay routeOverlayU1E = DataManager.getRoutePath(getResources().openRawResource(R.raw.u1e), colour, mResourceProxy);
+ PathOverlay routeOverlayU1E = DataManager.getRoutePath(
+ getResources().openRawResource(R.raw.u1e), colour, mResourceProxy);
routeOverlayU1E.getPaint().setAntiAlias(true);
routeOverlayU1E.getPaint().setAlpha(145);
routeOverlayU1E.getPaint().setStrokeWidth(12);
routeOverlayU1E.getPaint().setPathEffect(new DashPathEffect(new float[] { 20, 16 }, 0));
routeOverlayU1E.setEnabled(activityPrefs.getBoolean("Bus Routes:" + route.code, true));
- routeOverlays.put(new BusRoute(1000, "U1E", "U1E Route Label", true), routeOverlayU1E);
- overlays.put(ROUTE_OVERLAYS + route.code + "E", routeOverlayU1E);
+ busRouteOverlays.put(new BusRoute(1000, "U1E", "U1E Route Label", true), routeOverlayU1E);
+ overlays.put(BUS_ROUTE_OVERLAYS + route.code + "E", routeOverlayU1E);
} else if (route.code.equals("U1N")) {
resource = getResources().openRawResource(R.raw.u1n);
colour = U1N;
@@ -527,8 +585,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
routeOverlay.getPaint().setStrokeWidth(12);
}
- routeOverlays.put(route, routeOverlay);
- overlays.put(ROUTE_OVERLAYS + route.code, routeOverlay);
+ busRouteOverlays.put(route, routeOverlay);
+ overlays.put(BUS_ROUTE_OVERLAYS + route.code, routeOverlay);
synchronized (mapView.getOverlays()) {
mapView.getOverlays().add(routeOverlay);
@@ -537,14 +595,17 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
}
- routeOverlay.setEnabled(activityPrefs.getBoolean(ROUTE_OVERLAYS + route.code, ROUTE_OVERLAYS_ENABLED_BY_DEFAULT));
+ routeOverlay.setEnabled(activityPrefs.getBoolean(BUS_ROUTE_OVERLAYS + route.code,
+ BUS_ROUTE_OVERLAYS_ENABLED_BY_DEFAULT));
if (route.code.equals("U1")) {
- overlays.get(ROUTE_OVERLAYS + "U1E").setEnabled(activityPrefs.getBoolean(ROUTE_OVERLAYS + "U1", ROUTE_OVERLAYS_ENABLED_BY_DEFAULT));
+ overlays.get(BUS_ROUTE_OVERLAYS + "U1E").setEnabled(
+ activityPrefs.getBoolean(BUS_ROUTE_OVERLAYS + "U1", BUS_ROUTE_OVERLAYS_ENABLED_BY_DEFAULT));
}
mapView.postInvalidate();
- Log.i(TAG, "Finished showing route " + route.code + " overlay at " + (System.currentTimeMillis() - startTime));
+ Log.i(TAG, "Finished showing route " + route.code + " overlay at "
+ + (System.currentTimeMillis() - startTime));
}
}).start();
}
@@ -553,7 +614,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
new Thread(new Runnable() {
public void run() {
- Log.i(TAG, "Begining showing site " + site.name + " overlay at " + (System.currentTimeMillis() - startTime));
+ Log.i(TAG, "Begining showing site " + site.name + " overlay at "
+ + (System.currentTimeMillis() - startTime));
final SharedPreferences activityPrefs = getPreferences(0);
final OverlayRankComparator comparator = new OverlayRankComparator(getPreferences(0));
@@ -562,7 +624,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
if ((siteOverlay = siteOverlays.get(site)) != null) {
} else {
- if (pastOverlays != null && (siteOverlay = (PathOverlay) pastOverlays.get(SITE_OVERLAYS + site.name)) != null) {
+ if (pastOverlays != null
+ && (siteOverlay = (PathOverlay) pastOverlays.get(SITE_OVERLAYS + site.name)) != null) {
Log.i(TAG, "Restored " + site.name + " site overlay");
} else {
@@ -588,11 +651,13 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
}
}
- siteOverlay.setEnabled(activityPrefs.getBoolean(SITE_OVERLAYS + site.name, SITE_OVERLAYS_ENABLED_BY_DEFAULT));
+ siteOverlay.setEnabled(activityPrefs.getBoolean(SITE_OVERLAYS + site.name,
+ SITE_OVERLAYS_ENABLED_BY_DEFAULT));
mapView.postInvalidate();
- Log.i(TAG, "Finished showing site " + site.name + " overlay at " + (System.currentTimeMillis() - startTime));
+ Log.i(TAG, "Finished showing site " + site.name + " overlay at "
+ + (System.currentTimeMillis() - startTime));
}
}).start();
}
@@ -608,8 +673,11 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
if (residentialBuildingOverlay != null) {
} else {
- if (pastOverlays != null && (residentialBuildingOverlay = (BuildingNumOverlay) pastOverlays.get(RESIDENTIAL_BUILDING_OVERLAY)) != null) {
- nonResidentialBuildingOverlay = (BuildingNumOverlay) pastOverlays.get(NON_RESIDENTIAL_BUILDING_OVERLAY);
+ if (pastOverlays != null
+ && (residentialBuildingOverlay = (BuildingNumOverlay) pastOverlays
+ .get(RESIDENTIAL_BUILDING_OVERLAY)) != null) {
+ nonResidentialBuildingOverlay = (BuildingNumOverlay) pastOverlays
+ .get(NON_RESIDENTIAL_BUILDING_OVERLAY);
Log.i(TAG, "Restored building overlays");
} else {
@@ -660,7 +728,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
}
}
- residentialBuildingOverlay.setEnabled(activityPrefs.getBoolean(RESIDENTIAL_BUILDING_OVERLAY, RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT));
+ residentialBuildingOverlay.setEnabled(activityPrefs.getBoolean(RESIDENTIAL_BUILDING_OVERLAY,
+ RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT));
nonResidentialBuildingOverlay.setEnabled(activityPrefs.getBoolean(RESIDENTIAL_BUILDING_OVERLAY,
NON_RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT));
@@ -682,13 +751,15 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
if (uniLinkBusStopOverlay != null) {
} else {
- if (pastOverlays != null && (uniLinkBusStopOverlay = (BusStopOverlay) pastOverlays.get(UNI_LINK_BUS_STOP_OVERLAY)) != null) {
+ if (pastOverlays != null
+ && (uniLinkBusStopOverlay = (BusStopOverlay) pastOverlays.get(UNI_LINK_BUS_STOP_OVERLAY)) != null) {
Log.i(TAG, "Restored bus stop overlays");
} else {
try {
List<BusStop> busStops;
Log.v(TAG, "Begin fetching BusStops at " + (System.currentTimeMillis() - startTime));
- if (activityPrefs.getBoolean(UNI_LINK_BUS_STOP_OVERLAY, UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT)) {
+ if (activityPrefs.getBoolean(UNI_LINK_BUS_STOP_OVERLAY,
+ UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT)) {
busStops = getHelper().getBusStopDao().queryForAll();
} else {
busStops = getHelper().getBusStopDao().queryForEq(BusStop.UNI_LINK_FIELD_NAME, true);
@@ -711,11 +782,16 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
}
}
- uniLinkBusStopOverlay.setRoutes(0, activityPrefs.getBoolean("0,0", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
- uniLinkBusStopOverlay.setRoutes(1, activityPrefs.getBoolean("0,1", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
- uniLinkBusStopOverlay.setRoutes(2, activityPrefs.getBoolean("0,2", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
- uniLinkBusStopOverlay.setRoutes(3, activityPrefs.getBoolean("0,3", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
- uniLinkBusStopOverlay.setRoutes(4, activityPrefs.getBoolean("0,4", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
+ uniLinkBusStopOverlay.setRoutes(0, activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U1",
+ UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
+ uniLinkBusStopOverlay.setRoutes(1, activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U1N",
+ UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
+ uniLinkBusStopOverlay.setRoutes(2, activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U2",
+ UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
+ uniLinkBusStopOverlay.setRoutes(3, activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U6",
+ UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
+ uniLinkBusStopOverlay.setRoutes(4, activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U9",
+ UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
mapView.postInvalidate();
@@ -732,17 +808,22 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
final SharedPreferences activityPrefs = getPreferences(0);
final OverlayRankComparator comparator = new OverlayRankComparator(getPreferences(0));
- if (nonUniLinkBusStopOverlay == null && activityPrefs.getBoolean(NON_UNI_LINK_BUS_STOPS, NON_UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT)) {
- if (pastOverlays != null && (nonUniLinkBusStopOverlay = (BusStopOverlay) pastOverlays.get(NON_UNI_LINK_BUS_STOPS)) != null) {
+ if (nonUniLinkBusStopOverlay == null
+ && activityPrefs.getBoolean(NON_UNI_LINK_BUS_STOPS,
+ NON_UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT)) {
+ if (pastOverlays != null
+ && (nonUniLinkBusStopOverlay = (BusStopOverlay) pastOverlays.get(NON_UNI_LINK_BUS_STOPS)) != null) {
Log.i(TAG, "Restored non Uni-Link bus stop overlays");
} else {
try {
List<BusStop> busStops;
- Log.v(TAG, "Begin fetching non Uni-Link BusStops at " + (System.currentTimeMillis() - startTime));
+ Log.v(TAG, "Begin fetching non Uni-Link BusStops at "
+ + (System.currentTimeMillis() - startTime));
busStops = getHelper().getBusStopDao().queryForEq(BusStop.UNI_LINK_FIELD_NAME, false);
- Log.v(TAG, "Finished fetching non Uni-Link BusStops at " + (System.currentTimeMillis() - startTime));
+ Log.v(TAG, "Finished fetching non Uni-Link BusStops at "
+ + (System.currentTimeMillis() - startTime));
nonUniLinkBusStopOverlay = new BusStopOverlay(instance, busStops);
} catch (SQLException e) {
@@ -750,7 +831,7 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
}
}
- overlays.put(NON_UNI_LINK_BUS_STOPS, nonUniLinkBusStopOverlay);
+ overlays.put(NON_UNI_LINK_BUS_STOP_OVERLAY, nonUniLinkBusStopOverlay);
Log.v(TAG, "Applyed the site overlay, now sorting them");
@@ -762,7 +843,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
mapView.postInvalidate();
- Log.i(TAG, "Finished showing non Uni-Link bus stop overlays at " + (System.currentTimeMillis() - startTime));
+ Log.i(TAG, "Finished showing non Uni-Link bus stop overlays at "
+ + (System.currentTimeMillis() - startTime));
}
}).start();
}
@@ -813,8 +895,9 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setMessage("GPS is not enabled, do you wish to enable it?").setPositiveButton("Yes", dialogClickListener)
- .setNegativeButton("No", dialogClickListener).show();
+ builder.setMessage("GPS is not enabled, do you wish to enable it?")
+ .setPositiveButton("Yes", dialogClickListener).setNegativeButton("No", dialogClickListener)
+ .show();
}
return true;
@@ -921,7 +1004,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
Log.v(TAG, "Got a busStop id back from the BusTimeActivity " + busStopID);
BusStop busStop = getHelper().getBusStopDao().queryForId(busStopID);
- uniLinkBusStopOverlay.refresh(busStop); // This does not invalidate the map, but it seems to make the changes appear
+ uniLinkBusStopOverlay.refresh(busStop); // This does not invalidate the map, but it seems to
+ // make the changes appear
}
} catch (SQLException e) {
e.printStackTrace();
@@ -938,7 +1022,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
/*
* public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
*
- * mapView.post(new Runnable() { public void run() { // updateEnabledOverlays(); TODO Fix whatever this did? mapView.invalidate(); } });
+ * mapView.post(new Runnable() { public void run() { // updateEnabledOverlays(); TODO Fix whatever this did?
+ * mapView.invalidate(); } });
*
* return true; }
*/
@@ -1078,14 +1163,14 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
return UNI_LINK_BUS_STOP_OVERLAY_RANK;
} else if (overlay == nonUniLinkBusStopOverlay) {
return NON_UNI_LINK_BUS_STOP_OVERLAY_RANK;
- } else if (overlay == residentialBuildingOverlay) {
+ } else if (overlay.equals(residentialBuildingOverlay)) {
return RESIDENTIAL_BUILDING_OVERLAY_RANK;
- } else if (overlay == nonResidentialBuildingOverlay) {
+ } else if (overlay.equals(nonResidentialBuildingOverlay)) {
return NON_RESIDENTIAL_BUILDING_OVERLAY_RANK;
} else if (siteOverlays != null && siteOverlays.values().contains(overlay)) {
return SITE_OVERLAYS_RANK;
- } else if (routeOverlays != null && routeOverlays.values().contains(overlay)) {
- return ROUTE_OVERLAYS_RANK;
+ } else if (busRouteOverlays != null && busRouteOverlays.values().contains(overlay)) {
+ return BUS_ROUTE_OVERLAYS_RANK;
} else {
Log.e(TAG, "Trying to rank unknown overlay " + overlay);
return -1;
@@ -1112,15 +1197,13 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
// Noting to do here atm
} else if (key.equals(UNI_LINK_BUS_TIMES)) {
// Noting to do here atm
- } else if (key.equals(UNI_LINK_BUS_STOP_OVERLAY)) {
-
- } else if (key.equals(NON_UNI_LINK_BUS_STOP_OVERLAY)) { // Activity Preferences
+ } else if (key.startsWith(BUS_STOP_OVERLAYS)) {
showUniLinkBusStopOverlays();
- } else if (key.equals(NON_UNI_LINK_BUS_STOPS)) { // Activity Preferences
+ } else if (key.startsWith(NON_UNI_LINK_BUS_STOPS)) {
showNonUniLinkBusStopOverlays();
- } else if (key.contains(ROUTE_OVERLAYS)) {
+ } else if (key.startsWith(BUS_ROUTE_OVERLAYS)) {
try {
- String routeName = key.substring(ROUTE_OVERLAYS.length(), key.length());
+ String routeName = key.substring(BUS_ROUTE_OVERLAYS.length(), key.length());
for (BusRoute route : getHelper().getBusRouteDao()) {
Log.v(TAG, route.code + " " + routeName);
if (route.code.equals(routeName)) {
@@ -1130,9 +1213,9 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
} catch (SQLException e) {
e.printStackTrace();
}
- } else if (key.equals(RESIDENTIAL_BUILDING_OVERLAY) || key.equals(NON_RESIDENTIAL_BUILDING_OVERLAY)) {
+ } else if (key.startsWith(BUILDING_OVERLAYS)) {
showBuildingOverlay();
- } else if (key.contains(SITE_OVERLAYS)) {
+ } else if (key.startsWith(SITE_OVERLAYS)) {
String siteName = key.substring(SITE_OVERLAYS.length(), key.length());
try {
for (Site site : getHelper().getSiteDao()) {
@@ -1143,23 +1226,20 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements
} catch (SQLException e) {
e.printStackTrace();
}
- } else if (key.startsWith("0")) {
- uniLinkBusStopOverlay.setRoutes(Integer.parseInt(Character.toString(key.charAt(2))),
- prefs.getBoolean(key, UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
- mapView.postInvalidate();
- } else if (key.contains("Other")) {
- if (key.contains("Scale Bar")) {
+ } else if (key.startsWith(OTHER_OVERLAYS)) {
+ if (key.substring(OTHER_OVERLAYS.length(), key.length()).equals(SCALE_BAR_OVERLAY)) {
showUtilityOverlays();
- } else if (key.contains("Compass")) {
- if (prefs.getBoolean("Other:Compass", false)) {
+ } else if (key.substring(OTHER_OVERLAYS.length(), key.length()).equals(MY_LOCATION_OVERLAY_COMPASS)) {
+ if (prefs.getBoolean(key, MY_LOCATION_OVERLAY_COMPASS_ENABLED_BY_DEFAULT)) {
myLocationOverlay.enableCompass();
} else {
myLocationOverlay.disableCompass();
}
- } else if (key.contains("Other:My Location")) {
+ } else if (key.substring(OTHER_OVERLAYS.length(), key.length()).equals(MY_LOCATION_OVERLAY)) {
final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
- if (prefs.getBoolean("Other:Compass", false) && sharedPrefs.getBoolean("GPSEnabled", false)) {
+ if (prefs.getBoolean(key, MY_LOCATION_OVERLAY_ENABLED_BY_DEFAULT)
+ && sharedPrefs.getBoolean(GPS_ENABLED, GPS_ENABLED_BY_DEFAULT)) {
myLocationOverlay.enableMyLocation();
} else {
myLocationOverlay.disableMyLocation();
diff --git a/src/net/cbaines/suma/ViewDialog.java b/src/net/cbaines/suma/ViewDialog.java
index a8e36ed..432fec1 100644
--- a/src/net/cbaines/suma/ViewDialog.java
+++ b/src/net/cbaines/suma/ViewDialog.java
@@ -19,9 +19,6 @@
package net.cbaines.suma;
-import java.sql.SQLException;
-import java.util.ArrayList;
-
import android.app.Dialog;
import android.content.Context;
import android.content.SharedPreferences;
@@ -37,8 +34,6 @@ import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.TextView;
-import com.j256.ormlite.android.apptools.OpenHelperManager;
-
class ViewDialog extends Dialog implements OnChildClickListener {
private final ExpandableListView epView;
@@ -49,8 +44,6 @@ class ViewDialog extends Dialog implements OnChildClickListener {
private OnChildClickListener listener;
- private DatabaseHelper helper;
-
private String[] busRoutes;
private String[] buildingTypes;
private String[] other;
@@ -64,31 +57,12 @@ class ViewDialog extends Dialog implements OnChildClickListener {
this.context = context;
- helper = OpenHelperManager.getHelper(context, DatabaseHelper.class);
-
- int size;
- try {
- size = (int) helper.getSiteDao().countOf();
-
- ArrayList<Site> sites = new ArrayList<Site>(size);
-
- try {
- sites.addAll(helper.getSiteDao().queryForAll());
- } catch (SQLException e) {
- e.printStackTrace();
- }
- siteNames = new String[size];
- for (int i = 0; i < size; i++) {
- siteNames[i] = sites.get(i).name;
- }
- } catch (SQLException e1) {
- e1.printStackTrace();
- }
-
busRoutes = context.getResources().getStringArray(R.array.uniLinkBusRoutes);
buildingTypes = context.getResources().getStringArray(R.array.buildingTypes);
other = context.getResources().getStringArray(R.array.utilityOverlays);
groupHeadings = context.getResources().getStringArray(R.array.preferencesHeadings);
+ siteNames = MapActivity.SITE_NAMES; // TODO: Temp hack, should be included in the strings res for translation
+ // purposes?
setContentView(R.layout.view_dialog);
setTitle("Select the map elements to display");
@@ -118,46 +92,46 @@ class ViewDialog extends Dialog implements OnChildClickListener {
private static final String TAG = "MyExpandableListAdapter";
- // Bus Stops (0)
- // |_ U1 (0:0)
- // |_ U1N (0:1)
- // |_ U2 (0:2)
- // |_ U6 (0:3)
- // |_ U9 (0:4)
- // Bus Routes (1)
- // |_ U1 (1:0)
- // |_ U1N (1:1)
- // |_ U2 (1:2)
- // |_ U6 (1:3)
- // |_ U9 (1:4)
- // Buildings (2)
- // |_ Residential (2:0)
- // |_ Non-Residential (2:1)
- // Site Outlines (3)
- // |_ Highfield Campus (3:0)
- // |_ Boldrewood Campus (3:1)
- // |_ Avenue Campus (3:2)
- // |_ Winchester School of Art (3:3)
- // |_ The University of Southampton Science Park (3:4)
- // |_ National Oceanography Centre Campus (3:5)
- // |_ Boat House (3:6)
- // |_ Southampton General Hospital (3:0)
- // |_ Royal South Hants Hospital (3:0)
- // |_ Belgrave Industrial Site (3:0)
- // |_ Highfield Hall (3:0)
- // |_ Glen Eyre Hall (3:0)
- // |_ South Hill Hall (3:0)
- // |_ Chamberlain Hall (3:0)
- // |_ Hartley Grove1 (3:0)
- // |_ Bencraft Hall (3:0)
- // |_ Connaught Hall (3:0)
- // |_ Montefiore Hall (3:0)
- // |_ Stoneham Hall (3:0)
- // |_ Erasmus Park (3:0)
- // Other (4)
- // |_ Scale Bar (4:0)
- // |_ Compass (4:1)
- // |_ My Location (4:2)
+ // Bus Stops
+ // |_ U1
+ // |_ U1N
+ // |_ U2
+ // |_ U6
+ // |_ U9
+ // Bus Routes
+ // |_ U1
+ // |_ U1N
+ // |_ U2
+ // |_ U6
+ // |_ U9
+ // Buildings
+ // |_ Residential
+ // |_ Non-Residential
+ // Site Outlines
+ // |_ Highfield Campus
+ // |_ Boldrewood Campus
+ // |_ Avenue Campus
+ // |_ Winchester School of Art
+ // |_ The University of Southampton Science Park
+ // |_ National Oceanography Centre Campus
+ // |_ Boat House
+ // |_ Southampton General Hospital
+ // |_ Royal South Hants Hospital
+ // |_ Belgrave Industrial Site
+ // |_ Highfield Hall
+ // |_ Glen Eyre Hall
+ // |_ South Hill Hall
+ // |_ Chamberlain Hall
+ // |_ Hartley Grove
+ // |_ Bencraft Hall
+ // |_ Connaught Hall
+ // |_ Montefiore Hall
+ // |_ Stoneham Hall
+ // |_ Erasmus Park
+ // Other
+ // |_ Scale Bar
+ // |_ Compass
+ // |_ My Location
MyExpandableListAdapter(Context context) {
inflater = LayoutInflater.from(context);
@@ -182,7 +156,8 @@ class ViewDialog extends Dialog implements OnChildClickListener {
return groupPosition * 50 + childPosition;
}
- public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
+ public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
+ ViewGroup parent) {
View v = null;
if (convertView != null)
v = convertView;
@@ -200,17 +175,20 @@ class ViewDialog extends Dialog implements OnChildClickListener {
}
SharedPreferences activityPrefs = context.getPreferences(0);
- String str = groupPosition + ":" + childPosition;
+ String str = MapActivity.PREFERENCES_GROUPS[groupPosition]
+ + MapActivity.PREFERENCES_CHILDREN[groupPosition][childPosition];
if (groupPosition == 0) {
cb.setChecked(activityPrefs.getBoolean(str, MapActivity.UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
} else if (groupPosition == 1) {
- cb.setChecked(activityPrefs.getBoolean(str, MapActivity.ROUTE_OVERLAYS_ENABLED_BY_DEFAULT));
+ cb.setChecked(activityPrefs.getBoolean(str, MapActivity.BUS_ROUTE_OVERLAYS_ENABLED_BY_DEFAULT));
} else if (groupPosition == 2) {
if (childPosition == 0) {
- cb.setChecked(activityPrefs.getBoolean(str, MapActivity.RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT));
+ cb.setChecked(activityPrefs.getBoolean(str,
+ MapActivity.RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT));
} else {
- cb.setChecked(activityPrefs.getBoolean(str, MapActivity.NON_RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT));
+ cb.setChecked(activityPrefs.getBoolean(str,
+ MapActivity.NON_RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT));
}
} else if (groupPosition == 3) {
cb.setChecked(activityPrefs.getBoolean(str, MapActivity.SITE_OVERLAYS_ENABLED_BY_DEFAULT));
@@ -277,7 +255,8 @@ class ViewDialog extends Dialog implements OnChildClickListener {
CheckBox cb = (CheckBox) v.findViewById(R.id.check1);
- String str = groupPosition + ":" + childPosition;
+ String str = MapActivity.PREFERENCES_GROUPS[groupPosition]
+ + MapActivity.PREFERENCES_CHILDREN[groupPosition][childPosition];
editor.putBoolean(str, !cb.isChecked());