diff options
author | Christopher Baines <cbaines8@gmail.com> | 2012-02-28 14:01:42 +0000 |
---|---|---|
committer | Christopher Baines <cbaines8@gmail.com> | 2012-02-28 14:01:42 +0000 |
commit | b5d0db004eaf72e9eeff0dfd7f612591d670b139 (patch) | |
tree | e647c042998c3f51448ddd9c0b057dc95ef800f9 | |
parent | a6dcb82b21325934ae3f4df9cfc5aad04d414653 (diff) | |
download | southamptonuniversitymap-b5d0db004eaf72e9eeff0dfd7f612591d670b139.tar southamptonuniversitymap-b5d0db004eaf72e9eeff0dfd7f612591d670b139.tar.gz |
Added a BusRoute activity, and moved more stuff over to the new uri system.
-rw-r--r-- | AndroidManifest.xml | 34 | ||||
-rw-r--r-- | gen/net/cbaines/suma/R.java | 104 | ||||
-rw-r--r-- | res/layout/bus_route_activity.xml | 40 | ||||
-rw-r--r-- | src/net/cbaines/suma/BusRoute.java | 899 | ||||
-rw-r--r-- | src/net/cbaines/suma/BusRouteActivity.java | 76 | ||||
-rw-r--r-- | src/net/cbaines/suma/BusStopActivity.java | 58 | ||||
-rw-r--r-- | src/net/cbaines/suma/MapActivity.java | 180 | ||||
-rw-r--r-- | src/net/cbaines/suma/POIArrayAdapter.java | 80 | ||||
-rw-r--r-- | src/net/cbaines/suma/POIDialog.java | 86 | ||||
-rw-r--r-- | src/net/cbaines/suma/POIView.java | 129 | ||||
-rw-r--r-- | src/net/cbaines/suma/Waypoint.java | 42 |
11 files changed, 1001 insertions, 727 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 0445178..1c046f6 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -31,6 +31,16 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> + <intent-filter android:label="@string/app_name" > + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + + <data + android:host="opendatamap.ecs.soton.ac.uk" + android:scheme="http" /> + </intent-filter> </activity> <activity android:name="FindActivity" > </activity> @@ -108,6 +118,30 @@ android:scheme="http" /> </intent-filter> </activity> + <activity android:name="BusRouteActivity" > + <intent-filter android:label="@string/app_name" > + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + + <data + android:host="id.southampton.ac.uk" + android:pathPrefix="/bus-route/" + android:scheme="http" /> + </intent-filter> + <intent-filter android:label="@string/app_name" > + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + + <data + android:host="data.southampton.ac.uk" + android:pathPrefix="/bus-route/" + android:scheme="http" /> + </intent-filter> + </activity> <activity android:name=".PreferencesActivity" android:label="@string/preferences" > diff --git a/gen/net/cbaines/suma/R.java b/gen/net/cbaines/suma/R.java index 06657e6..20027e0 100644 --- a/gen/net/cbaines/suma/R.java +++ b/gen/net/cbaines/suma/R.java @@ -68,65 +68,71 @@ public final class R { public static final int busActivityU2=0x7f0a000d; public static final int busActivityU6=0x7f0a000e; public static final int busActivityU9=0x7f0a000f; - public static final int busStopID=0x7f0a001a; - public static final int busStopListItems=0x7f0a0021; - public static final int busStopLoadBar=0x7f0a001f; - public static final int busStopMessage=0x7f0a001c; - public static final int busStopName=0x7f0a0013; - public static final int busStopTimes=0x7f0a001d; - public static final int busTimeContentLayout=0x7f0a001b; - public static final int centerLoadBar=0x7f0a001e; - public static final int check1=0x7f0a0030; - public static final int childname=0x7f0a002f; - public static final int donateBitcoinAddress=0x7f0a0027; + public static final int busRouteActivityCode=0x7f0a0015; + public static final int busRouteActivityHeaderLayout=0x7f0a0013; + public static final int busRouteActivityID=0x7f0a0016; + public static final int busRouteActivityLabel=0x7f0a0014; + public static final int busRouteBusStops=0x7f0a0017; + public static final int busStopID=0x7f0a001f; + public static final int busStopListItems=0x7f0a0026; + public static final int busStopLoadBar=0x7f0a0024; + public static final int busStopMessage=0x7f0a0021; + public static final int busStopName=0x7f0a0018; + public static final int busStopTimes=0x7f0a0022; + public static final int busTimeContentLayout=0x7f0a0020; + public static final int centerLoadBar=0x7f0a0023; + public static final int check1=0x7f0a0035; + public static final int childname=0x7f0a0034; + public static final int donateBitcoinAddress=0x7f0a002c; public static final int donateButton=0x7f0a0003; - public static final int donateDialogErrorMessage=0x7f0a0026; - public static final int donateDialogMessage=0x7f0a0023; - public static final int donateDialogMessageLayout=0x7f0a0025; - public static final int donateDialogProgress=0x7f0a0024; - public static final int favouriteCheckBox=0x7f0a0019; - public static final int favouriteDialogMessage=0x7f0a002d; - public static final int favouriteListItems=0x7f0a002e; - public static final int findContentLayout=0x7f0a0029; - public static final int findListItems=0x7f0a002b; - public static final int findLoadBar=0x7f0a002a; + public static final int donateDialogErrorMessage=0x7f0a002b; + public static final int donateDialogMessage=0x7f0a0028; + public static final int donateDialogMessageLayout=0x7f0a002a; + public static final int donateDialogProgress=0x7f0a0029; + public static final int favouriteCheckBox=0x7f0a001e; + public static final int favouriteDialogMessage=0x7f0a0032; + public static final int favouriteListItems=0x7f0a0033; + public static final int findContentLayout=0x7f0a002e; + public static final int findListItems=0x7f0a0030; + public static final int findLoadBar=0x7f0a002f; public static final int helpExpandableListView=0x7f0a0002; - public static final int layout_root=0x7f0a0020; + public static final int layout_root=0x7f0a0025; public static final int linearLayout1=0x7f0a0005; - public static final int linearLayout2=0x7f0a0022; - public static final int mapview=0x7f0a002c; - public static final int menu_about=0x7f0a0036; - public static final int menu_favourites=0x7f0a0037; - public static final int menu_find=0x7f0a0032; - public static final int menu_find_my_location=0x7f0a0034; - public static final int menu_next_stop=0x7f0a003a; - public static final int menu_preferences=0x7f0a0033; - public static final int menu_previous_stop=0x7f0a0038; - public static final int menu_refresh_stop=0x7f0a0039; - public static final int menu_view=0x7f0a0035; - public static final int radio_u1=0x7f0a0014; - public static final int radio_u1n=0x7f0a0015; - public static final int radio_u2=0x7f0a0016; - public static final int radio_u6=0x7f0a0017; - public static final int radio_u9=0x7f0a0018; - public static final int searchBar=0x7f0a0028; + public static final int linearLayout2=0x7f0a0027; + public static final int mapview=0x7f0a0031; + public static final int menu_about=0x7f0a003b; + public static final int menu_favourites=0x7f0a003c; + public static final int menu_find=0x7f0a0037; + public static final int menu_find_my_location=0x7f0a0039; + public static final int menu_next_stop=0x7f0a003f; + public static final int menu_preferences=0x7f0a0038; + public static final int menu_previous_stop=0x7f0a003d; + public static final int menu_refresh_stop=0x7f0a003e; + public static final int menu_view=0x7f0a003a; + public static final int radio_u1=0x7f0a0019; + public static final int radio_u1n=0x7f0a001a; + public static final int radio_u2=0x7f0a001b; + public static final int radio_u6=0x7f0a001c; + public static final int radio_u9=0x7f0a001d; + public static final int searchBar=0x7f0a002d; public static final int textView1=0x7f0a0000; public static final int textView2=0x7f0a0001; - public static final int view_list=0x7f0a0031; + public static final int view_list=0x7f0a0036; } public static final class layout { public static final int about_dialog=0x7f030000; public static final int building_activity=0x7f030001; public static final int bus_activity=0x7f030002; - public static final int bus_stop_activity=0x7f030003; - public static final int bus_stop_dialog=0x7f030004; - public static final int donate_dialog=0x7f030005; - public static final int find=0x7f030006; - public static final int main=0x7f030007; - public static final int poi_dialog=0x7f030008; - public static final int view_child_row=0x7f030009; - public static final int view_dialog=0x7f03000a; - public static final int view_group_row=0x7f03000b; + public static final int bus_route_activity=0x7f030003; + public static final int bus_stop_activity=0x7f030004; + public static final int bus_stop_dialog=0x7f030005; + public static final int donate_dialog=0x7f030006; + public static final int find=0x7f030007; + public static final int main=0x7f030008; + public static final int poi_dialog=0x7f030009; + public static final int view_child_row=0x7f03000a; + public static final int view_dialog=0x7f03000b; + public static final int view_group_row=0x7f03000c; } public static final class menu { public static final int map_menu=0x7f090000; diff --git a/res/layout/bus_route_activity.xml b/res/layout/bus_route_activity.xml new file mode 100644 index 0000000..fde127c --- /dev/null +++ b/res/layout/bus_route_activity.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:gravity="center|top" + android:orientation="vertical" + android:theme="@android:style/Theme.NoTitleBar" > + + <LinearLayout + android:id="@+id/busRouteActivityHeaderLayout" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" > + + <TextView + android:id="@+id/busRouteActivityLabel" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceLarge" /> + + <TextView + android:id="@+id/busRouteActivityCode" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceLarge" /> + + <TextView + android:id="@+id/busRouteActivityID" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceLarge" /> + </LinearLayout> + + <ListView + android:id="@+id/busRouteBusStops" + android:layout_width="fill_parent" + android:layout_height="wrap_content" > + </ListView> + +</LinearLayout>
\ No newline at end of file diff --git a/src/net/cbaines/suma/BusRoute.java b/src/net/cbaines/suma/BusRoute.java index 4152605..b4dd603 100644 --- a/src/net/cbaines/suma/BusRoute.java +++ b/src/net/cbaines/suma/BusRoute.java @@ -45,456 +45,529 @@ import com.j256.ormlite.table.DatabaseTable; @DatabaseTable(tableName = "busroutes") public class BusRoute { - private static final String TAG = "BusRoute"; - - final static String ID_FIELD_NAME = "id"; - final static String CODE_FIELD_NAME = "code"; - final static String LABEL_FIELD_NAME = "label"; - - @DatabaseField(id = true) - public int id; - - /** - * The route code (U1, U1N, ...) - */ - @DatabaseField - public String code; - - @DatabaseField(canBeNull = false) - String label; - - /** - * The direction the bus is travelling if it is moving through the route and sequence is increasing. - * <ul> - * <li>U1 = A</li> - * <li>U2 = B</li> - * <li>U6 = H</li> - * </ul> - */ - @DatabaseField(canBeNull = true) - String forwardDirection; - - /** - * The direction the bus is travelling if it is moving through the route and sequence is decreasing. - * <ul> - * <li>U1 = C</li> - * <li>U2 = C</li> - * <li>U6 = C</li> - * </ul> - */ - @DatabaseField(canBeNull = true) - String reverseDirection; - - @DatabaseField(canBeNull = false) - boolean uniLink; - - BusRoute() { - } - - 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) { - this(id, code, label, null, null, uniLink); - } - - public String toString() { - return code; - } - - /** - * Untested? - * - * @param context - * @param stop - * @return - */ - BusStop getBusStopBefore(Context context, BusStop stop, String dir) { - return moveInRoute(context, stop, dir, -1); - } - - /** - * Untested? - * - * @param context - * @param stop - * @return - */ - BusStop getStopAfter(Context context, BusStop stop, String dir) { - return moveInRoute(context, stop, dir, 1); - } - - /** - * Untested? - * - * @param context - * @param busStop - * @param moveAmount - * @return - */ - Set<BusStop> moveInRoute(final Context context, final BusStop busStop, final int moveAmount) { - - Set<BusStop> busStops = new HashSet<BusStop>(); - - if (moveAmount == 0) { - busStops.add(busStop); - return busStops; + private static final String TAG = "BusRoute"; + + final static String ID_FIELD_NAME = "id"; + final static String CODE_FIELD_NAME = "code"; + final static String LABEL_FIELD_NAME = "label"; + + @DatabaseField(id = true) + public int id; + + /** + * The route code (U1, U1N, ...) + */ + @DatabaseField + public String code; + + @DatabaseField(canBeNull = false) + String label; + + /** + * The direction the bus is travelling if it is moving through the route and + * sequence is increasing. + * <ul> + * <li>U1 = A</li> + * <li>U2 = B</li> + * <li>U6 = H</li> + * </ul> + */ + @DatabaseField(canBeNull = true) + String forwardDirection; + + /** + * The direction the bus is travelling if it is moving through the route and + * sequence is decreasing. + * <ul> + * <li>U1 = C</li> + * <li>U2 = C</li> + * <li>U6 = C</li> + * </ul> + */ + @DatabaseField(canBeNull = true) + String reverseDirection; + + @DatabaseField(canBeNull = false) + boolean uniLink; + + BusRoute() { } - DatabaseHelper helper = OpenHelperManager.getHelper(context, DatabaseHelper.class); + 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; + } - try { - Dao<RouteStops, Integer> routeStopsDao = helper.getRouteStopsDao(); - Dao<BusStop, String> busStopDao = helper.getBusStopDao(); + public BusRoute(Integer id, String code, String label, boolean uniLink) { + this(id, code, label, null, null, uniLink); + } - QueryBuilder<RouteStops, Integer> routeStopsQueryBuilder = routeStopsDao.queryBuilder(); - routeStopsQueryBuilder.where().eq(RouteStops.ROUTE_ID_FIELD_NAME, this.id); - PreparedQuery<RouteStops> routeStopsPreparedQuery = routeStopsQueryBuilder.prepare(); + public String toString() { + return code; + } - List<RouteStops> routeStopsFound = routeStopsDao.query(routeStopsPreparedQuery); + /** + * Untested? + * + * @param context + * @param stop + * @return + */ + BusStop getBusStopBefore(Context context, BusStop stop, String dir) { + return moveInRoute(context, stop, dir, -1); + } - ArrayList<Integer> stopIndexs = new ArrayList<Integer>(); + /** + * Untested? + * + * @param context + * @param stop + * @return + */ + BusStop getStopAfter(Context context, BusStop stop, String dir) { + return moveInRoute(context, stop, dir, 1); + } - for (RouteStops routeStop : routeStopsFound) { - if (routeStop.busStop.id.equals(busStop.id)) { - stopIndexs.add(routeStop.sequence - 1); - } - } - - for (int stopIndex : stopIndexs) { - - if (moveAmount > 0) { - 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"); - stopWanted = stopWanted % (routeStopsFound.size() - 1); - } - Log.v(TAG, " Stop wanted " + stopWanted); - BusStop busStopWanted = routeStopsFound.get(stopWanted).busStop; - - busStopDao.refresh(busStopWanted); - - Log.v(TAG, " Moving to " + busStopWanted + " (" + stopWanted + ") in route " + this); - - busStops.add(busStopWanted); - } else { - Log.v(TAG, "stopIndex " + stopIndex); - int stopWanted = stopIndex + moveAmount; - if (stopWanted < 0) { - stopWanted = routeStopsFound.size() - (Math.abs(stopWanted) % routeStopsFound.size()); - } - 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); - - busStops.add(routeStopsFound.get(stopWanted).busStop); + /** + * Untested? + * + * @param context + * @param busStop + * @param moveAmount + * @return + */ + Set<BusStop> moveInRoute(final Context context, final BusStop busStop, final int moveAmount) { + + Set<BusStop> busStops = new HashSet<BusStop>(); + + if (moveAmount == 0) { + busStops.add(busStop); + return busStops; } - } - return busStops; - } catch (SQLException e) { - e.printStackTrace(); - } - Log.e(TAG, "Error moving in route"); - return null; - } - - /** - * Untested? - * - * @param context - * @param busStop - * @param moveAmount - * @return - */ - BusStop moveInRoute(final Context context, final BusStop busStop, String direction, final int moveAmount) { - - if (moveAmount == 0) { - return busStop; - } + DatabaseHelper helper = OpenHelperManager.getHelper(context, DatabaseHelper.class); + + try { + Dao<RouteStops, Integer> routeStopsDao = helper.getRouteStopsDao(); + Dao<BusStop, String> busStopDao = helper.getBusStopDao(); + + QueryBuilder<RouteStops, Integer> routeStopsQueryBuilder = routeStopsDao.queryBuilder(); + routeStopsQueryBuilder.where().eq(RouteStops.ROUTE_ID_FIELD_NAME, this.id); + PreparedQuery<RouteStops> routeStopsPreparedQuery = routeStopsQueryBuilder.prepare(); - DatabaseHelper helper = OpenHelperManager.getHelper(context, DatabaseHelper.class); + List<RouteStops> routeStopsFound = routeStopsDao.query(routeStopsPreparedQuery); - if (forwardDirection != null) { + ArrayList<Integer> stopIndexs = new ArrayList<Integer>(); - if (direction != null) { + for (RouteStops routeStop : routeStopsFound) { + if (routeStop.busStop.id.equals(busStop.id)) { + stopIndexs.add(routeStop.sequence - 1); + } + } + + for (int stopIndex : stopIndexs) { + + if (moveAmount > 0) { + 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"); + stopWanted = stopWanted % (routeStopsFound.size() - 1); + } + Log.v(TAG, " Stop wanted " + stopWanted); + BusStop busStopWanted = routeStopsFound.get(stopWanted).busStop; + + busStopDao.refresh(busStopWanted); + + Log.v(TAG, " Moving to " + busStopWanted + " (" + stopWanted + ") in route " + this); + + busStops.add(busStopWanted); + } else { + Log.v(TAG, "stopIndex " + stopIndex); + int stopWanted = stopIndex + moveAmount; + if (stopWanted < 0) { + stopWanted = routeStopsFound.size() - (Math.abs(stopWanted) % routeStopsFound.size()); + } + 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); + + busStops.add(routeStopsFound.get(stopWanted).busStop); + } + } - if (direction.equals("E")) - direction = "A"; // Quick hack for U1E - } else { - throw new NullPointerException("direction is null"); - } + return busStops; + } catch (SQLException e) { + e.printStackTrace(); + } + Log.e(TAG, "Error moving in route"); + return null; } - try { - Dao<RouteStops, Integer> routeStopsDao = helper.getRouteStopsDao(); - Dao<BusStop, String> busStopDao = helper.getBusStopDao(); - - QueryBuilder<RouteStops, Integer> routeStopsQueryBuilder = routeStopsDao.queryBuilder(); - routeStopsQueryBuilder.where().eq(RouteStops.ROUTE_ID_FIELD_NAME, this.id); - PreparedQuery<RouteStops> routeStopsPreparedQuery = routeStopsQueryBuilder.prepare(); - - List<RouteStops> routeStopsFound = routeStopsDao.query(routeStopsPreparedQuery); - - int stopIndex = -1; - - for (RouteStops routeStop : routeStopsFound) { - if (routeStop.busStop.id.equals(busStop.id)) { - if (stopIndex == -1) { - stopIndex = routeStop.sequence - 1; - } else { // ARGH, weird route - if (busStop.id.equals("HAA13651") && id == 327) { // U6 by Wessex Lane - if (direction.equals(forwardDirection)) { - stopIndex = 23; - } else { - stopIndex = 68; - } - } else if (busStop.id.equals("SN120134") && id == 327) { // U6 opposite the Stile - if (direction.equals(forwardDirection)) { - stopIndex = 30; - } else { - stopIndex = 59; - } - } else if (busStop.id.equals("SN120163") && id == 327) { // U6 just up past wessex lane - if (direction.equals(forwardDirection)) { - stopIndex = 22; - } else { - stopIndex = 67; - } - } else if (busStop.id.equals("SNA19482") && id == 327) { // U6 General Hosp West Door - if (moveAmount > 0) { - stopIndex = 44; - } else { - stopIndex = 43; - } - } else if (busStop.id.equals("SN120134") && id == 329) { // U2 opposite the Stile - if (direction.equals(forwardDirection)) { - stopIndex = 13; - } else { - stopIndex = 30; - } - } 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 - if (moveAmount > 0) { - stopIndex = 22; - } else { - stopIndex = 21; - } - } else if (busStop.id.equals("SN120520") && id == 326) { // U1 By the station - if (direction.equals(forwardDirection)) { - stopIndex = 7; - } else { - stopIndex = 80; - } - } else if (busStop.id.equals("HA030183") && id == 326) { // U1 Up past Wessex Lane - if (direction.equals(forwardDirection)) { - stopIndex = 35; - } else { - stopIndex = 50; - } - } else if (busStop.id.equals("HA030212") && id == 326) { // U1 At Eastleigh - if (moveAmount > 0) { - stopIndex = 43; - } else { - stopIndex = 42; - } - } else if (busStop.id.equals("SN120171") && id == 354) { // U9 - if (moveAmount > 0) { - stopIndex = 0; - } else { - stopIndex = 73; - } + /** + * Untested? + * + * @param context + * @param busStop + * @param moveAmount + * @return + */ + BusStop moveInRoute(final Context context, final BusStop busStop, String direction, final int moveAmount) { + + if (moveAmount == 0) { + return busStop; + } + + DatabaseHelper helper = OpenHelperManager.getHelper(context, DatabaseHelper.class); + + if (forwardDirection != null) { + + if (direction != null) { + + if (direction.equals("E")) + direction = "A"; // Quick hack for U1E } 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()); + throw new NullPointerException("direction is null"); } - Log.v(TAG, "Selecting " + stopIndex + " for " + busStop.id + " as direction == " + direction); - } } - } - - if (moveAmount > 0) { - 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"); - stopWanted = stopWanted % (routeStopsFound.size() - 1); + + try { + Dao<RouteStops, Integer> routeStopsDao = helper.getRouteStopsDao(); + Dao<BusStop, String> busStopDao = helper.getBusStopDao(); + + QueryBuilder<RouteStops, Integer> routeStopsQueryBuilder = routeStopsDao.queryBuilder(); + routeStopsQueryBuilder.where().eq(RouteStops.ROUTE_ID_FIELD_NAME, this.id); + PreparedQuery<RouteStops> routeStopsPreparedQuery = routeStopsQueryBuilder.prepare(); + + List<RouteStops> routeStopsFound = routeStopsDao.query(routeStopsPreparedQuery); + + int stopIndex = -1; + + for (RouteStops routeStop : routeStopsFound) { + if (routeStop.busStop.id.equals(busStop.id)) { + if (stopIndex == -1) { + stopIndex = routeStop.sequence - 1; + } else { // ARGH, weird route + if (busStop.id.equals("HAA13651") && id == 327) { // U6 + // by + // Wessex + // Lane + if (direction.equals(forwardDirection)) { + stopIndex = 23; + } else { + stopIndex = 68; + } + } else if (busStop.id.equals("SN120134") && id == 327) { // U6 + // opposite + // the + // Stile + if (direction.equals(forwardDirection)) { + stopIndex = 30; + } else { + stopIndex = 59; + } + } else if (busStop.id.equals("SN120163") && id == 327) { // U6 + // just + // up + // past + // wessex + // lane + if (direction.equals(forwardDirection)) { + stopIndex = 22; + } else { + stopIndex = 67; + } + } else if (busStop.id.equals("SNA19482") && id == 327) { // U6 + // General + // Hosp + // West + // Door + if (moveAmount > 0) { + stopIndex = 44; + } else { + stopIndex = 43; + } + } else if (busStop.id.equals("SN120134") && id == 329) { // U2 + // opposite + // the + // Stile + if (direction.equals(forwardDirection)) { + stopIndex = 13; + } else { + stopIndex = 30; + } + } 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 + if (moveAmount > 0) { + stopIndex = 22; + } else { + stopIndex = 21; + } + } else if (busStop.id.equals("SN120520") && id == 326) { // U1 + // By + // the + // station + if (direction.equals(forwardDirection)) { + stopIndex = 7; + } else { + stopIndex = 80; + } + } else if (busStop.id.equals("HA030183") && id == 326) { // U1 + // Up + // past + // Wessex + // Lane + if (direction.equals(forwardDirection)) { + stopIndex = 35; + } else { + stopIndex = 50; + } + } else if (busStop.id.equals("HA030212") && id == 326) { // U1 + // At + // Eastleigh + if (moveAmount > 0) { + stopIndex = 43; + } else { + stopIndex = 42; + } + } else if (busStop.id.equals("SN120171") && id == 354) { // U9 + if (moveAmount > 0) { + stopIndex = 0; + } else { + 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.v(TAG, "Selecting " + stopIndex + " for " + busStop.id + " as direction == " + direction); + } + } + } + + if (moveAmount > 0) { + 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"); + stopWanted = stopWanted % (routeStopsFound.size() - 1); + } + Log.v(TAG, " Stop wanted " + stopWanted); + BusStop busStopWanted = routeStopsFound.get(stopWanted).busStop; + + busStopDao.refresh(busStopWanted); + + Log.v(TAG, " Moving to " + busStopWanted + " (" + stopWanted + ") in route " + this); + + return busStopWanted; + } else { + Log.v(TAG, "stopIndex " + stopIndex); + int stopWanted = stopIndex + moveAmount; + if (stopWanted < 0) { + stopWanted = routeStopsFound.size() - (Math.abs(stopWanted) % routeStopsFound.size()); + } + 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); + + return routeStopsFound.get(stopWanted).busStop; + } + + } catch (SQLException e) { + e.printStackTrace(); } - Log.v(TAG, " Stop wanted " + stopWanted); - BusStop busStopWanted = routeStopsFound.get(stopWanted).busStop; + Log.e(TAG, "Error moving in route"); + return null; + } - busStopDao.refresh(busStopWanted); + /** + * Untested? + * + * @param context + * @param busStop + * @param moveAmount + * @return + */ + List<BusStop> getRouteSection(final Context context, String direction) { - Log.v(TAG, " Moving to " + busStopWanted + " (" + stopWanted + ") in route " + this); + DatabaseHelper helper = OpenHelperManager.getHelper(context, DatabaseHelper.class); - return busStopWanted; - } else { - Log.v(TAG, "stopIndex " + stopIndex); - int stopWanted = stopIndex + moveAmount; - if (stopWanted < 0) { - stopWanted = routeStopsFound.size() - (Math.abs(stopWanted) % routeStopsFound.size()); + if (forwardDirection != null) { + + if (direction != null) { + + if (direction.equals("E")) + direction = "A"; // Quick hack for U1E + } else { + throw new NullPointerException("direction is null"); + } } - 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); + List<BusStop> busStops = new ArrayList<BusStop>(); + + try { + + Dao<RouteStops, Integer> routeStopsDao = helper.getRouteStopsDao(); + Dao<BusStop, String> busStopDao = helper.getBusStopDao(); + + QueryBuilder<RouteStops, Integer> routeStopsQueryBuilder = routeStopsDao.queryBuilder(); + routeStopsQueryBuilder.where().eq(RouteStops.ROUTE_ID_FIELD_NAME, this.id); + PreparedQuery<RouteStops> routeStopsPreparedQuery = routeStopsQueryBuilder.prepare(); + + List<RouteStops> routeStopsFound = routeStopsDao.query(routeStopsPreparedQuery); + + int startStopSeq = -1; + int endStopSeq = -1; + + if (id == 326) { // U1 + if (direction.equals(forwardDirection)) { + startStopSeq = 1; + endStopSeq = 43; + } else if (direction.equals(reverseDirection)) { + startStopSeq = 44; + endStopSeq = 88; + } else { + Log.e(TAG, "Error, unrecognised direction " + direction); + } + } else if (id == 468) { // U1N + startStopSeq = 1; + endStopSeq = 29; + } else if (id == 329) { // U2 + if (direction.equals(forwardDirection)) { + startStopSeq = 1; + endStopSeq = 22; + } else if (direction.equals(reverseDirection)) { + startStopSeq = 23; + endStopSeq = 43; + } else { + Log.e(TAG, "Error, unrecognised direction " + direction); + } + } else if (id == 327) { // U6 + if (direction.equals(forwardDirection)) { + startStopSeq = 1; + endStopSeq = 44; + } else if (direction.equals(reverseDirection)) { + startStopSeq = 45; + endStopSeq = 93; + } else { + Log.e(TAG, "Error, unrecognised direction " + direction); + } + } else if (id == 354) { // U9 + Calendar rightNow = Calendar.getInstance(); + if (rightNow.get(Calendar.HOUR_OF_DAY) < 12) { + startStopSeq = 1; + endStopSeq = 40; // TODO: Guess, and untested + } else { + startStopSeq = 41; // TODO: Guess, and untested + endStopSeq = 74; + } + } else { + Log.e(TAG, "Error, unrecognised route " + id); + } + + for (RouteStops routeStop : routeStopsFound) { + if (routeStop.sequence >= startStopSeq && routeStop.sequence <= endStopSeq) { + busStopDao.refresh(routeStop.busStop); + busStops.add(routeStop.busStop); + } + } - return routeStopsFound.get(stopWanted).busStop; - } + return busStops; + + } catch (SQLException e) { + e.printStackTrace(); + } + Log.e(TAG, "Error moving in route"); + return null; - } catch (SQLException e) { - e.printStackTrace(); - } - Log.e(TAG, "Error moving in route"); - return null; - } - - /** - * Untested? - * - * @param context - * @param busStop - * @param moveAmount - * @return - */ - List<BusStop> getRouteSection(final Context context, String direction) { - - DatabaseHelper helper = OpenHelperManager.getHelper(context, DatabaseHelper.class); - - if (forwardDirection != null) { - - if (direction != null) { - - if (direction.equals("E")) - direction = "A"; // Quick hack for U1E - } else { - throw new NullPointerException("direction is null"); - } } - List<BusStop> busStops = new ArrayList<BusStop>(); + List<BusStop> getRouteBusStops(final Context context) { - try { + DatabaseHelper helper = OpenHelperManager.getHelper(context, DatabaseHelper.class); - Dao<RouteStops, Integer> routeStopsDao = helper.getRouteStopsDao(); - Dao<BusStop, String> busStopDao = helper.getBusStopDao(); + List<BusStop> busStops = new ArrayList<BusStop>(); - QueryBuilder<RouteStops, Integer> routeStopsQueryBuilder = routeStopsDao.queryBuilder(); - routeStopsQueryBuilder.where().eq(RouteStops.ROUTE_ID_FIELD_NAME, this.id); - PreparedQuery<RouteStops> routeStopsPreparedQuery = routeStopsQueryBuilder.prepare(); + try { - List<RouteStops> routeStopsFound = routeStopsDao.query(routeStopsPreparedQuery); + Dao<RouteStops, Integer> routeStopsDao = helper.getRouteStopsDao(); + Dao<BusStop, String> busStopDao = helper.getBusStopDao(); - int startStopSeq = -1; - int endStopSeq = -1; + QueryBuilder<RouteStops, Integer> routeStopsQueryBuilder = routeStopsDao.queryBuilder(); + routeStopsQueryBuilder.where().eq(RouteStops.ROUTE_ID_FIELD_NAME, this.id); + PreparedQuery<RouteStops> routeStopsPreparedQuery = routeStopsQueryBuilder.prepare(); - if (id == 326) { // U1 - if (direction.equals(forwardDirection)) { - startStopSeq = 1; - endStopSeq = 43; - } else if (direction.equals(reverseDirection)) { - startStopSeq = 44; - endStopSeq = 88; - } else { - Log.e(TAG, "Error, unrecognised direction " + direction); - } - } else if (id == 468) { // U1N - startStopSeq = 1; - endStopSeq = 29; - } else if (id == 329) { // U2 - if (direction.equals(forwardDirection)) { - startStopSeq = 1; - endStopSeq = 22; - } else if (direction.equals(reverseDirection)) { - startStopSeq = 23; - endStopSeq = 43; - } else { - Log.e(TAG, "Error, unrecognised direction " + direction); - } - } else if (id == 327) { // U6 - if (direction.equals(forwardDirection)) { - startStopSeq = 1; - endStopSeq = 44; - } else if (direction.equals(reverseDirection)) { - startStopSeq = 45; - endStopSeq = 93; - } else { - Log.e(TAG, "Error, unrecognised direction " + direction); - } - } else if (id == 354) { // U9 - Calendar rightNow = Calendar.getInstance(); - if (rightNow.get(Calendar.HOUR_OF_DAY) < 12) { - startStopSeq = 1; - endStopSeq = 40; // TODO: Guess, and untested - } else { - startStopSeq = 41; // TODO: Guess, and untested - endStopSeq = 74; - } - } else { - Log.e(TAG, "Error, unrecognised route " + id); - } - - for (RouteStops routeStop : routeStopsFound) { - if (routeStop.sequence >= startStopSeq && routeStop.sequence <= endStopSeq) { - busStopDao.refresh(routeStop.busStop); - busStops.add(routeStop.busStop); + List<RouteStops> routeStopsFound = routeStopsDao.query(routeStopsPreparedQuery); + + for (RouteStops routeStop : routeStopsFound) { + busStopDao.refresh(routeStop.busStop); + busStops.add(routeStop.busStop); + } + + return busStops; + } catch (SQLException e) { + e.printStackTrace(); } - } + Log.e(TAG, "Error moving in route"); + return null; - return busStops; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + id; + return result; + } - } catch (SQLException e) { - e.printStackTrace(); + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + BusRoute other = (BusRoute) obj; + if (id != other.id) + return false; + return true; } - Log.e(TAG, "Error moving in route"); - return null; - - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + id; - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - BusRoute other = (BusRoute) obj; - if (id != other.id) - return false; - return true; - } } diff --git a/src/net/cbaines/suma/BusRouteActivity.java b/src/net/cbaines/suma/BusRouteActivity.java new file mode 100644 index 0000000..3670c68 --- /dev/null +++ b/src/net/cbaines/suma/BusRouteActivity.java @@ -0,0 +1,76 @@ +package net.cbaines.suma; + +import java.sql.SQLException; + +import android.content.Context; +import android.os.Bundle; +import android.util.Log; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +import com.j256.ormlite.android.apptools.OrmLiteBaseActivity; + +public class BusRouteActivity extends OrmLiteBaseActivity<DatabaseHelper> implements Preferences { + final static String TAG = "BusActivity"; + + private TextView busRouteLabel; + private TextView busRouteCode; + private TextView busRouteID; + + Toast activityToast; + + private ListView busRouteView; + + private Context instance; + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.bus_route_activity); + instance = this; + + Log.i(TAG, "getIntent().getDataString() " + getIntent().getDataString()); + + String strBusRouteID; + + if (getIntent().getDataString().startsWith("http://data")) { + + String[] uriParts = getIntent().getDataString().split("/"); + + strBusRouteID = uriParts[uriParts.length - 1].replace(".html", ""); + + } else { + + String[] uriParts = getIntent().getDataString().split("/"); + + strBusRouteID = uriParts[uriParts.length - 1]; + } + + final DatabaseHelper helper = getHelper(); + + BusRoute busRoute = null; + + try { + busRoute = helper.getBusRouteDao().queryForId(Integer.parseInt(strBusRouteID)); + + busRouteLabel = (TextView) findViewById(R.id.busRouteActivityLabel); + busRouteLabel.setText(busRoute.label); + + busRouteCode = (TextView) findViewById(R.id.busRouteActivityCode); + busRouteCode.setText(busRoute.code); + + busRouteID = (TextView) findViewById(R.id.busRouteActivityID); + busRouteID.setText(String.valueOf(busRoute.id)); + + busRouteView = (ListView) findViewById(R.id.busRouteBusStops); + + } catch (NumberFormatException e) { + e.printStackTrace(); + } catch (SQLException e) { + e.printStackTrace(); + } + + POIArrayAdapter arrayAdapter = new POIArrayAdapter(instance, busRoute.getRouteBusStops(instance)); + busRouteView.setAdapter(arrayAdapter); + } +} diff --git a/src/net/cbaines/suma/BusStopActivity.java b/src/net/cbaines/suma/BusStopActivity.java index dbed3ee..62a0f54 100644 --- a/src/net/cbaines/suma/BusStopActivity.java +++ b/src/net/cbaines/suma/BusStopActivity.java @@ -33,6 +33,7 @@ import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; @@ -43,6 +44,7 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.view.View.OnLongClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.CheckBox; @@ -59,8 +61,8 @@ 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, OnLongClickListener { final static String TAG = "BusTimeActivity"; @@ -133,10 +135,19 @@ public class BusStopActivity extends OrmLiteBaseActivity<DatabaseHelper> impleme U9RouteRadioButton = (CheckBox) findViewById(R.id.radio_u9); U1RouteRadioButton.setOnCheckedChangeListener(this); + U1RouteRadioButton.setOnLongClickListener(this); + U1NRouteRadioButton.setOnCheckedChangeListener(this); + U1NRouteRadioButton.setOnLongClickListener(this); + U2RouteRadioButton.setOnCheckedChangeListener(this); + U2RouteRadioButton.setOnLongClickListener(this); + U6RouteRadioButton.setOnCheckedChangeListener(this); + U6RouteRadioButton.setOnLongClickListener(this); + U9RouteRadioButton.setOnCheckedChangeListener(this); + U9RouteRadioButton.setOnLongClickListener(this); try { Dao<BusStop, String> busStopDao = helper.getBusStopDao(); @@ -310,10 +321,10 @@ public class BusStopActivity extends OrmLiteBaseActivity<DatabaseHelper> impleme try { final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(instance); - newTimetable = DataManager - .getTimetable(instance, busStop.id, 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)); + newTimetable = DataManager.getTimetable(instance, busStop.id, 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(); @@ -387,7 +398,7 @@ public class BusStopActivity extends OrmLiteBaseActivity<DatabaseHelper> impleme 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"); @@ -395,9 +406,14 @@ public class BusStopActivity extends OrmLiteBaseActivity<DatabaseHelper> impleme if (stop.id == null) { Log.e(TAG, "stop.id == null"); } - i.putExtra("busStopID", stop.id); - i.putExtra("busStopName", stop.description); - startActivity(i); + + Uri uri = Uri.parse("http://id.southampton.ac.uk/bus-stop/" + busStop.id); + + Log.i(TAG, "Starting a activity for " + uri + " path " + uri.getPath()); + + Intent busStopIntent = new Intent(Intent.ACTION_VIEW, uri); + startActivity(busStopIntent); + } else { showDialog(POI_DIALOG_ID); if (busDialog == null) { @@ -522,4 +538,26 @@ public class BusStopActivity extends OrmLiteBaseActivity<DatabaseHelper> impleme } } + + public boolean onLongClick(View v) { + Uri uri = null; + if (v.equals(U1RouteRadioButton)) { + uri = Uri.parse("http://id.southampton.ac.uk/bus-route/326"); + } else if (v.equals(U1NRouteRadioButton)) { + uri = Uri.parse("http://id.southampton.ac.uk/bus-route/468"); + } else if (v.equals(U2RouteRadioButton)) { + uri = Uri.parse("http://id.southampton.ac.uk/bus-route/329"); + } else if (v.equals(U6RouteRadioButton)) { + uri = Uri.parse("http://id.southampton.ac.uk/bus-route/327"); + } else if (v.equals(U9RouteRadioButton)) { + uri = Uri.parse("http://id.southampton.ac.uk/bus-route/354"); + } + if (uri != null) { + Log.i(TAG, "Starting a activity for " + uri + " path " + uri.getPath()); + + Intent busStopIntent = new Intent(Intent.ACTION_VIEW, uri); + startActivity(busStopIntent); + } + return false; + } } diff --git a/src/net/cbaines/suma/MapActivity.java b/src/net/cbaines/suma/MapActivity.java index 07806fa..59c8505 100644 --- a/src/net/cbaines/suma/MapActivity.java +++ b/src/net/cbaines/suma/MapActivity.java @@ -50,6 +50,7 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.graphics.Color; import android.graphics.DashPathEffect; import android.graphics.Paint; +import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; @@ -70,12 +71,13 @@ import com.j256.ormlite.dao.Dao; * @author Christopher Baines <cbaines8@gmail.com> * */ -public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements MapViewConstants, Runnable, RouteColorConstants, - OnItemClickListener, OnItemLongClickListener, OnSharedPreferenceChangeListener, Preferences { +public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements MapViewConstants, Runnable, + RouteColorConstants, OnItemClickListener, OnItemLongClickListener, OnSharedPreferenceChangeListener, + Preferences { /** - * 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 + * 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 = true; @@ -125,10 +127,11 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements private static final int NON_UNI_LINK_BUS_STOP_OVERLAY_RANK = 4; // -- 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", + 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:"; @@ -166,14 +169,15 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements // 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_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 + * The toast for this activity, storing the toast centrally allows it to be + * changed quickly, instead of a queue building up */ Toast activityToast; @@ -204,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); @@ -494,7 +500,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); @@ -523,7 +530,8 @@ 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)); @@ -548,8 +556,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements // 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); @@ -604,7 +612,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements 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(); } @@ -613,7 +622,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)); @@ -622,7 +632,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 { @@ -648,11 +659,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(); } @@ -669,8 +682,10 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements } else { if (pastOverlays != null - && (residentialBuildingOverlay = (BuildingNumOverlay) pastOverlays.get(RESIDENTIAL_BUILDING_OVERLAY)) != null) { - nonResidentialBuildingOverlay = (BuildingNumOverlay) pastOverlays.get(NON_RESIDENTIAL_BUILDING_OVERLAY); + && (residentialBuildingOverlay = (BuildingNumOverlay) pastOverlays + .get(RESIDENTIAL_BUILDING_OVERLAY)) != null) { + nonResidentialBuildingOverlay = (BuildingNumOverlay) pastOverlays + .get(NON_RESIDENTIAL_BUILDING_OVERLAY); Log.i(TAG, "Restored building overlays"); } else { @@ -685,7 +700,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements buildingDao = getHelper().getBuildingDao(); - final SharedPreferences favouritesPrefs = getSharedPreferences(FAVOURITES_PREFERENCES, MODE_PRIVATE); + final SharedPreferences favouritesPrefs = getSharedPreferences(FAVOURITES_PREFERENCES, + MODE_PRIVATE); for (Building building : buildingDao) { if (building.residential == true) { @@ -723,8 +739,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements } } - residentialBuildingOverlay.setEnabled(activityPrefs.getBoolean(BUILDING_OVERLAYS + RESIDENTIAL_BUILDING_OVERLAY, - RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT)); + residentialBuildingOverlay.setEnabled(activityPrefs.getBoolean(BUILDING_OVERLAYS + + RESIDENTIAL_BUILDING_OVERLAY, RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT)); nonResidentialBuildingOverlay.setEnabled(activityPrefs.getBoolean(BUILDING_OVERLAYS + NON_RESIDENTIAL_BUILDING_OVERLAY, NON_RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT)); @@ -744,11 +760,16 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements final OverlayRankComparator comparator = new OverlayRankComparator(getPreferences(0)); if (uniLinkBusStopOverlay != null) { - if (!activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U1", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) - && !activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U1N", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) - && !activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U2", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) - && !activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U6", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) - && !activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U9", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT)) { + if (!activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U1", + UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) + && !activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U1N", + UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) + && !activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U2", + UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) + && !activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U6", + UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) + && !activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U9", + UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT)) { Log.i(TAG, "Uni-Link bus stop overlay not needed"); overlays.remove(UNI_LINK_BUS_STOP_OVERLAY); @@ -759,25 +780,31 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements uniLinkBusStopOverlay = null; } else { - 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)); + 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)); } } else { - if (activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U1", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) - || activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U1N", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) - || activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U2", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) - || activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U6", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) - || activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U9", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT)) { + if (activityPrefs + .getBoolean(BUS_STOP_OVERLAYS + "U1", UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) + || activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U1N", + UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) + || activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U2", + UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) + || activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U6", + UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT) + || activityPrefs.getBoolean(BUS_STOP_OVERLAYS + "U9", + UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT)) { if (pastOverlays != null - && (uniLinkBusStopOverlay = (BusStopOverlay) pastOverlays.get(UNI_LINK_BUS_STOP_OVERLAY)) != null) { + && (uniLinkBusStopOverlay = (BusStopOverlay) pastOverlays + .get(UNI_LINK_BUS_STOP_OVERLAY)) != null) { Log.i(TAG, "Restored Uni-Link bus stop overlay"); } else { @@ -795,16 +822,16 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements } } - 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)); + 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)); overlays.put(UNI_LINK_BUS_STOP_OVERLAY, uniLinkBusStopOverlay); @@ -827,7 +854,8 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements private void showNonUniLinkBusStopOverlay() { new Thread(new Runnable() { public void run() { - Log.i(TAG, "Begining showing non uni link bus stop overlays at " + (System.currentTimeMillis() - startTime)); + Log.i(TAG, "Begining showing non uni link bus stop overlays at " + + (System.currentTimeMillis() - startTime)); // final SharedPreferences activityPrefs = getPreferences(0); final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(instance); @@ -844,12 +872,14 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements } else if (sharedPrefs.getBoolean(NON_UNI_LINK_BUS_STOPS_OVERLAY, NON_UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT)) { if (pastOverlays != null - && (nonUniLinkBusStopOverlay = (BusStopOverlay) pastOverlays.get(NON_UNI_LINK_BUS_STOPS_OVERLAY)) != null) { + && (nonUniLinkBusStopOverlay = (BusStopOverlay) pastOverlays + .get(NON_UNI_LINK_BUS_STOPS_OVERLAY)) != 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); @@ -879,7 +909,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(); } @@ -941,8 +972,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; @@ -1060,9 +1092,11 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements } /* - * public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { + * 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.post(new Runnable() { public void run() { // + * updateEnabledOverlays(); TODO Fix whatever this did? * mapView.invalidate(); } }); * * return true; } @@ -1163,6 +1197,20 @@ public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements return true; + } else if (poi.type == POI.BUILDING) { + Building building = (Building) poi; + + Log.i(TAG, "Pressed " + building.id); + + Uri uri = Uri.parse("http://id.southampton.ac.uk/building/" + building.id); + + Log.i(TAG, "Starting a activity for " + uri + " path " + uri.getPath()); + + Intent buildingIntent = new Intent(Intent.ACTION_VIEW, uri); + startActivity(buildingIntent); + + return true; + } else { myLocationOverlay.disableFollowLocation(); diff --git a/src/net/cbaines/suma/POIArrayAdapter.java b/src/net/cbaines/suma/POIArrayAdapter.java index e35acf4..f9b5271 100644 --- a/src/net/cbaines/suma/POIArrayAdapter.java +++ b/src/net/cbaines/suma/POIArrayAdapter.java @@ -21,7 +21,6 @@ package net.cbaines.suma; import java.util.List; - import android.content.Context; import android.view.View; import android.view.ViewGroup; @@ -29,51 +28,52 @@ import android.widget.BaseAdapter; public class POIArrayAdapter extends BaseAdapter { - private final Context context; - private final List<POI> POIs; - - public POIArrayAdapter(Context context, List<POI> pois) { - this.context = context; - this.POIs = pois; - } + private final Context context; + private final List<? extends POI> POIs; - public View getView(int position, View convertView, ViewGroup parent) { - POIView poiView; - if (convertView == null) { - if (POIs.get(position).distTo == -1) { - poiView = new POIView(context, POIs.get(position)); - } else { - poiView = new POIView(context, POIs.get(position), POIs.get(position).distTo); - } - } else { - poiView = (POIView) convertView; - if (POIs.get(position).distTo == -1) { - poiView = new POIView(context, POIs.get(position)); - } else { - poiView = new POIView(context, POIs.get(position), POIs.get(position).distTo); - } + public POIArrayAdapter(Context context, List<? extends POI> pois) { + this.context = context; + this.POIs = pois; } - return poiView; - } + public View getView(int position, View convertView, ViewGroup parent) { + POIView poiView; + POI poi = POIs.get(position); + if (convertView == null) { + if (poi.distTo == -1) { + poiView = new POIView(context, poi); + } else { + poiView = new POIView(context, poi, poi.distTo); + } + } else { + poiView = (POIView) convertView; + if (((POI) POIs.get(position)).distTo == -1) { + poiView = new POIView(context, poi); + } else { + poiView = new POIView(context, poi, poi.distTo); + } + } - public int getCount() { - return POIs.size(); - } + return poiView; + } - public Object getItem(int position) { - return position; - } + public int getCount() { + return POIs.size(); + } - public POI getPOIItem(int position) { - return POIs.get(position); - } + public Object getItem(int position) { + return position; + } - public long getItemId(int position) { - return position; - } + public POI getPOIItem(int position) { + return (POI) POIs.get(position); + } + + public long getItemId(int position) { + return position; + } - public String getItemStringId(int position) { - return POIs.get(position).id; - } + public String getItemStringId(int position) { + return ((POI) POIs.get(position)).id; + } }
\ No newline at end of file diff --git a/src/net/cbaines/suma/POIDialog.java b/src/net/cbaines/suma/POIDialog.java index 20304bb..dd871fd 100644 --- a/src/net/cbaines/suma/POIDialog.java +++ b/src/net/cbaines/suma/POIDialog.java @@ -31,62 +31,62 @@ import android.widget.TextView; public class POIDialog extends Dialog { - // private static final String TAG = "POIDialog"; - private ListView listItems; + // private static final String TAG = "POIDialog"; + private ListView listItems; - private final Context context; + private final Context context; - private final TextView message; + private final TextView message; - protected POIArrayAdapter adapter; + protected POIArrayAdapter adapter; - public POIDialog(Context context) { - super(context); + public POIDialog(Context context) { + super(context); - this.context = context; + this.context = context; - setContentView(R.layout.poi_dialog); + setContentView(R.layout.poi_dialog); - message = (TextView) findViewById(R.id.favouriteDialogMessage); - listItems = (ListView) findViewById(R.id.favouriteListItems); + message = (TextView) findViewById(R.id.favouriteDialogMessage); + listItems = (ListView) findViewById(R.id.favouriteListItems); - } + } - void setMessage(final String text) { - message.post(new Runnable() { - public void run() { - if (text == null || text.length() == 0) { - message.setVisibility(View.GONE); - } else { - message.setText(text); - message.setVisibility(View.VISIBLE); - } - } - }); - } + void setMessage(final String text) { + message.post(new Runnable() { + public void run() { + if (text == null || text.length() == 0) { + message.setVisibility(View.GONE); + } else { + message.setText(text); + message.setVisibility(View.VISIBLE); + } + } + }); + } - void setItems(final List<POI> items) { - listItems.post(new Runnable() { - public void run() { - if (items != null) { - adapter = new POIArrayAdapter(context, items); + void setItems(final List<POI> items) { + listItems.post(new Runnable() { + public void run() { + if (items != null) { + adapter = new POIArrayAdapter(context, items); - listItems.setVisibility(View.VISIBLE); - listItems.setAdapter(adapter); - } else { - listItems.setVisibility(View.GONE); - } - } - }); - } + listItems.setVisibility(View.VISIBLE); + listItems.setAdapter(adapter); + } else { + listItems.setVisibility(View.GONE); + } + } + }); + } - void setOnItemClickListener(OnItemClickListener item) { - listItems.setOnItemClickListener(item); + void setOnItemClickListener(OnItemClickListener item) { + listItems.setOnItemClickListener(item); - } + } - void setOnItemLongClickListener(OnItemLongClickListener item) { - listItems.setOnItemLongClickListener(item); - } + void setOnItemLongClickListener(OnItemLongClickListener item) { + listItems.setOnItemLongClickListener(item); + } } diff --git a/src/net/cbaines/suma/POIView.java b/src/net/cbaines/suma/POIView.java index fb8a6c6..b27b4f3 100644 --- a/src/net/cbaines/suma/POIView.java +++ b/src/net/cbaines/suma/POIView.java @@ -29,96 +29,97 @@ import android.widget.TextView; public class POIView extends LinearLayout { - private final static String TAG = "POIView"; + private final static String TAG = "POIView"; - private final TextView name; - private final TextView dist; - private final BusRoutesView routes; + private final TextView name; + private final TextView dist; + private final BusRoutesView routes; - private LayoutParams textLayoutParams; + private LayoutParams textLayoutParams; - final int width; + final int width; - public POIView(Context context, POI poi) { - this(context, poi, -1); - } + public POIView(Context context, POI poi) { + this(context, poi, -1); + } - public POIView(Context context, POI poi, int distInM) { - super(context); + public POIView(Context context, POI poi, int distInM) { + super(context); - Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); - width = display.getWidth(); - // int height = display.getHeight(); + Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); + width = display.getWidth(); + // int height = display.getHeight(); - this.setOrientation(HORIZONTAL); + this.setOrientation(HORIZONTAL); - name = new TextView(context); - name.setTextSize(16f); - name.setGravity(Gravity.LEFT); + name = new TextView(context); + name.setTextSize(16f); + name.setGravity(Gravity.LEFT); - dist = new TextView(context); - dist.setTextSize(16f); - dist.setGravity(Gravity.RIGHT); + dist = new TextView(context); + dist.setTextSize(16f); + dist.setGravity(Gravity.RIGHT); - routes = new BusRoutesView(context, (byte) 0); + routes = new BusRoutesView(context, (byte) 0); - textLayoutParams = new LayoutParams(width - (width / 4), LayoutParams.WRAP_CONTENT); - LayoutParams distLayoutParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); - LayoutParams busRouteLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + textLayoutParams = new LayoutParams(width - (width / 4), LayoutParams.WRAP_CONTENT); + LayoutParams distLayoutParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); + LayoutParams busRouteLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); - setPOIAndDist(poi, distInM); + setPOIAndDist(poi, distInM); - addView(routes, busRouteLayoutParams); - addView(name, textLayoutParams); - addView(dist, distLayoutParams); - } + addView(routes, busRouteLayoutParams); + addView(name, textLayoutParams); + addView(dist, distLayoutParams); + } - public void setPOI(POI poi) { - setPOIAndDist(poi, -1); - } + public void setPOI(POI poi) { + setPOIAndDist(poi, -1); + } - public void setPOIAndDist(POI poi, int distInM) { + public void setPOIAndDist(POI poi, int distInM) { - // Log.i(TAG, "Looking at poi " + poi.id); + // Log.i(TAG, "Looking at poi " + poi.id); - if (poi.type == POI.BUILDING) { - Building building = (Building) poi; - // Log.i(TAG, "Its a building of name " + building.name); + if (poi.type == POI.BUILDING) { + Building building = (Building) poi; + // Log.i(TAG, "Its a building of name " + building.name); - name.setText(building.name + " (" + building.id + ")"); - } else if (poi.type == POI.BUS_STOP) { + name.setText(building.name + " (" + building.id + ")"); + } else if (poi.type == POI.BUS_STOP) { - BusStop busStop = (BusStop) poi; - // Log.i(TAG, "Its a bus stop of description " + busStop.description); + BusStop busStop = (BusStop) poi; + // Log.i(TAG, "Its a bus stop of description " + + // busStop.description); - name.setText(busStop.description + " (" + busStop.id + ")"); + name.setText(busStop.description + " (" + busStop.id + ")"); - routes.setRoutes(busStop.routes); + routes.setRoutes(busStop.routes); - } else if (poi.type == POI.SITE) { + } else if (poi.type == POI.SITE) { - Site site = (Site) poi; - // Log.i(TAG, "Its a site of name " + site.name); + Site site = (Site) poi; + // Log.i(TAG, "Its a site of name " + site.name); - name.setText(site.name + " (" + site.id + ")"); - } else { - Log.w(TAG, "Cant identify " + poi.type); + name.setText(site.name + " (" + site.id + ")"); + } else { + Log.w(TAG, "Cant identify " + poi.type); - name.setText(poi.id); - } + name.setText(poi.id); + } + + textLayoutParams = new LayoutParams(width - (width / 4), LayoutParams.WRAP_CONTENT); - textLayoutParams = new LayoutParams(width - (width / 4), LayoutParams.WRAP_CONTENT); - - if (distInM != -1) { - textLayoutParams.width = width - (width / 4); - name.requestLayout(); - dist.setText(String.valueOf(distInM) + "m"); - } else { - textLayoutParams.width = LayoutParams.FILL_PARENT; - name.requestLayout(); - dist.setText(""); - // Log.w("POIView", "No dist avalible for S" + poi.id); + if (distInM != -1) { + textLayoutParams.width = width - (width / 4); + name.requestLayout(); + dist.setText(String.valueOf(distInM) + "m"); + } else { + textLayoutParams.width = LayoutParams.FILL_PARENT; + name.requestLayout(); + dist.setText(""); + // Log.w("POIView", "No dist avalible for S" + poi.id); + } } - } }
\ No newline at end of file diff --git a/src/net/cbaines/suma/Waypoint.java b/src/net/cbaines/suma/Waypoint.java deleted file mode 100644 index d56c05d..0000000 --- a/src/net/cbaines/suma/Waypoint.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Southampton University Map App - * Copyright (C) 2011 Christopher Baines - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -package net.cbaines.suma; - -import org.osmdroid.util.GeoPoint; - -import com.j256.ormlite.table.DatabaseTable; - -@DatabaseTable(tableName = "routeWaypoints") -public class Waypoint extends POI { - - Waypoint() { - } - - int sequence; - - String route; - - public Waypoint(int sequence, GeoPoint point) { - super(point.toDoubleString() + ":" + sequence, point); - this.type = POI.WAYPOINT; - this.sequence = sequence; - } - -} |