aboutsummaryrefslogtreecommitdiff
path: root/src/net/cbaines/suma/BusStopOverlay.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/cbaines/suma/BusStopOverlay.java')
-rw-r--r--src/net/cbaines/suma/BusStopOverlay.java109
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)));
+ }
+
}