diff options
Diffstat (limited to 'src/net/cbaines/suma/BusStopOverlay.java')
-rw-r--r-- | src/net/cbaines/suma/BusStopOverlay.java | 109 |
1 files changed, 34 insertions, 75 deletions
diff --git a/src/net/cbaines/suma/BusStopOverlay.java b/src/net/cbaines/suma/BusStopOverlay.java index 060ad47..176bd4f 100644 --- a/src/net/cbaines/suma/BusStopOverlay.java +++ b/src/net/cbaines/suma/BusStopOverlay.java @@ -29,6 +29,7 @@ import org.osmdroid.views.overlay.Overlay; import android.app.Activity; import android.content.Intent; +import android.content.SharedPreferences; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Paint.Style; @@ -39,10 +40,7 @@ import android.util.Log; import android.view.MotionEvent; import android.widget.Toast; -import com.j256.ormlite.android.apptools.OpenHelperManager; -import com.j256.ormlite.dao.Dao; - -public class BusStopOverlay extends Overlay implements RouteColorConstants { +public class BusStopOverlay extends Overlay implements RouteColorConstants, Preferences { List<BusStop> busStops; @@ -61,8 +59,6 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { private final MapActivity context; - private Dao<BusStop, String> busStopDao; - private float userScale = 1f; private boolean[] routes = new boolean[5]; @@ -75,9 +71,6 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { marker = context.getResources().getDrawable(R.drawable.busstop); favMarker = context.getResources().getDrawable(R.drawable.busstop_fav); - DatabaseHelper helper = OpenHelperManager.getHelper(context, DatabaseHelper.class); - busStopDao = helper.getBusStopDao(); - paint = new Paint(); paint.setStyle(Style.FILL); paint.setStrokeWidth(6); @@ -96,7 +89,7 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { return; } - float scale = mScale * userScale; + final float scale = mScale * userScale; final Projection pj = mapView.getProjection(); @@ -108,14 +101,20 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { marker.setBounds(mRect); favMarker.setBounds(mRect); + final SharedPreferences favouritesPreferences = context.getSharedPreferences(FAVOURITES_PREFERENCES, 0); + /* - * Draw in backward cycle, so the items with the least index are on the - * front. + * Draw in backward cycle, so the items with the least index are on the front. */ for (int stopNum = 0; stopNum < busStops.size(); stopNum++) { BusStop stop = busStops.get(stopNum); + pj.toMapPixels(stop.point, mCurScreenCoords); + if (!pj.getBoundingBox().increaseByScale(1.2f).contains(stop.point)) { + continue; + } + byte routeNum = 0; final byte stopRoutes = stop.routes; @@ -137,9 +136,7 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { } - pj.toMapPixels(stop.point, mCurScreenCoords); - - if (stop.favourite) { + if (favouritesPreferences.getBoolean(stop.id, false)) { Overlay.drawAt(canvas, favMarker, mCurScreenCoords.x, mCurScreenCoords.y, false); } else { Overlay.drawAt(canvas, marker, mCurScreenCoords.x, mCurScreenCoords.y, false); @@ -148,12 +145,13 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { if (stop.uniLink) { int makersPlaced = 0; + + final float rectLeft = mCurScreenCoords.x + (8.8f * scale); + final float rectRight = rectLeft + (int) (8 * scale); + int yOfsetPerMarker = (int) (10 * scale); int markerYSize = (int) (8 * scale); - float rectLeft = mCurScreenCoords.x + (8.8f * scale); - float rectRight = rectLeft + markerYSize; - if (routeNum == 5) { markerYSize = (int) (5 * scale); yOfsetPerMarker = (int) (7 * scale); @@ -165,12 +163,6 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { for (int i = 0; i < 5; i++) { if ((stopRoutes & (1 << i)) != 0) { - // Log.i(TAG, "Route " + route + " is " + - // routes.get(route)); - - // Log.i(TAG, "Index is " + busRoutes.indexOf(route) + - // " busRoutes " + busRoutes); - if (i == 0) { paint.setColor(U1); } else if (i == 1) { @@ -185,9 +177,9 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { Log.e(TAG, "Unknown route code"); } - canvas.drawRect(rectLeft, mCurScreenCoords.y - + ((yOfsetPerMarker * makersPlaced) - (45 * scale)), rectRight, mCurScreenCoords.y - + (yOfsetPerMarker * makersPlaced) - ((45 * scale) - markerYSize), paint); + canvas.drawRect(rectLeft, mCurScreenCoords.y + ((yOfsetPerMarker * makersPlaced) - (45 * scale)), + rectRight, mCurScreenCoords.y + (yOfsetPerMarker * makersPlaced) - ((45 * scale) - markerYSize), + paint); makersPlaced++; } @@ -208,8 +200,8 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { Log.i(TAG, "busStop Pressed " + busStop.id); if (context.activityToast == null) { - context.activityToast = Toast.makeText(context, busStop.description + " (" + busStop.id + ")", - Toast.LENGTH_SHORT); + context.activityToast = Toast + .makeText(context, busStop.description + " (" + busStop.id + ")", Toast.LENGTH_SHORT); } else { context.activityToast.setDuration(Toast.LENGTH_SHORT); context.activityToast.setText(busStop.description + " (" + busStop.id + ")"); @@ -251,12 +243,13 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { } else { Log.i(TAG, "Pressed " + busStop.id); - if (busStop.favourite) { - busStop.favourite = false; + SharedPreferences favouritesPreferences = context.getSharedPreferences(FAVOURITES_PREFERENCES, 0); + + if (favouritesPreferences.getBoolean(busStop.id, false)) { + favouritesPreferences.edit().putBoolean(busStop.id, false).commit(); if (context.activityToast == null) { - context.activityToast = Toast.makeText(context, busStop.id + " removed from favourites", - Toast.LENGTH_SHORT); + context.activityToast = Toast.makeText(context, busStop.id + " removed from favourites", Toast.LENGTH_SHORT); } else { context.activityToast.setDuration(Toast.LENGTH_SHORT); context.activityToast.setText(busStop.id + " removed from favourites"); @@ -264,62 +257,22 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { context.activityToast.show(); } else { if (context.activityToast == null) { - context.activityToast = Toast.makeText(context, busStop.id + " made a favourite", - Toast.LENGTH_SHORT); + context.activityToast = Toast.makeText(context, busStop.id + " made a favourite", Toast.LENGTH_SHORT); } else { context.activityToast.setDuration(Toast.LENGTH_SHORT); context.activityToast.setText(busStop.id + " made a favourite"); } context.activityToast.show(); - busStop.favourite = true; + favouritesPreferences.edit().putBoolean(busStop.id, true).commit(); } - try { - busStopDao.update(busStop); - } catch (SQLException e) { - e.printStackTrace(); - } - - Collections.sort(busStops, new POIFavouriteComparator()); - mapView.invalidate(); return true; } } - public void refresh() { - try { - for (int i = 0; i < busStops.size(); i++) { - BusStop busStop = busStops.get(i); - busStopDao.refresh(busStop); - if (busStop.favourite) { - busStops.remove(i); - busStops.add(busStop); - } else { - busStops.set(i, busStop); - } - } - } catch (SQLException e) { - e.printStackTrace(); - } - } - - /** - * Replaces any bus stops that equal the argument in the overlay with the - * argument - * - * @param busStop - */ - public void refresh(BusStop busStop) { - for (int i = 0; i < busStops.size(); i++) { - if (busStop.equals(busStops.get(i))) { - busStops.set(i, busStop); - } - } - } - private BusStop getSelectedItem(final MotionEvent event, final MapView mapView) { final Projection pj = mapView.getProjection(); final int eventX = (int) event.getX(); @@ -354,4 +307,10 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { return null; } + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + Log.i(TAG, "Got a favourites change in the BuildingNumOverlay for key " + key); + + Collections.sort(busStops, new POIFavouriteComparator(context.getSharedPreferences(FAVOURITES_PREFERENCES, 0))); + } + } |