diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java index b90f28e..5d5c996 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java @@ -638,44 +638,7 @@ tv.setTag(""); tv.setTextColor(res.getColor(R.color.text_color_selected)); String title = PoiHandler.getEntries()[position]; - if(title.equals(getString(R.string.toggle_entry_biota))) { - List biotas = dbHandler.getPoiByType(Types.BIOTA); - for(int i=0; i items = dbHandler.getEndageredForBiota(poi.getId()); - List points = dbHandler.getGeoPointsForPoi(poi.getId(), Types.BIOTA); - if(points.size() != 1) continue; - DbGeoPoint dbgp = points.get(0); - Polygon polygon = new Polygon(this); - polygon.setPoints(Polygon.pointsAsCircle(dbgp.getGeoPoint(), poi.getRadius())); - polygon.setFillColor(res.getColor(R.color.elevation_bg)); - polygon.setStrokeColor(res.getColor(R.color.elevation_line)); - polygon.setStrokeWidth(2); - Marker m = PoiHandler.getMarkerFromGeoPoint(dbgp.getGeoPoint(), "", "", Types.BIOTA, res, mapView);m.setOnMarkerClickListener(new Marker.OnMarkerClickListener() { - @Override - public boolean onMarkerClick(Marker marker, MapView mapView) { - AlertDialog dialog = new AlertDialog.Builder(MainActivity.this) - .setTitle(R.string.biota_dialog_title) - .setAdapter(new ShowEndangeredListAdapter(MainActivity.this, items), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - - } - }) - .create(); - dialog.show(); - return true; - } - }); - mapView.getOverlays().add(polygon); - mapView.getOverlays().add(m); - mapView.invalidate(); - } - } else { - List markers = poiHandler.getPoiIcons(type, title); - mapView.getOverlays().addAll(markers); - mapView.invalidate(); - } + poiHandler.enablePois(type, title); } else { drawables[0].setColorFilter(res.getColor(R.color.icon_unselected_gray), PorterDuff.Mode.DST_OUT); tv.setTag("disabled"); @@ -684,9 +647,6 @@ poiHandler.disablePois(type); mapView.invalidate(); } - //int dp = (int) res.getDimension(R.dimen.drawer_toggle_image_size); - //drawables[0] = new BitmapDrawable(res, Bitmap.createScaledBitmap(((BitmapDrawable) drawables[0]).getBitmap(), dp, dp, true)); - //Log.d(MainActivity.TAG, ((BitmapDrawable) drawables[0]).getBitmap().getHeight() + ", " + ((BitmapDrawable) drawables[0]).getBitmap().getWidth()); tv.setCompoundDrawablesWithIntrinsicBounds(drawables[0], drawables[1], drawables[2], drawables[3]); } diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java index d0ae440..1afee6d 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java @@ -51,6 +51,7 @@ import org.osmdroid.bonuspack.overlays.MapEventsOverlay; import org.osmdroid.bonuspack.overlays.MapEventsReceiver; import org.osmdroid.bonuspack.overlays.Marker; +import org.osmdroid.bonuspack.overlays.Polygon; import org.osmdroid.bonuspack.overlays.Polyline; import org.osmdroid.bonuspack.routing.OSRMRoadManager; import org.osmdroid.bonuspack.routing.Road; @@ -77,6 +78,7 @@ import de.apps4ics.mountainnavigation.ModernInfoWindow; import de.apps4ics.mountainnavigation.R; import de.apps4ics.mountainnavigation.RequestCodes; +import de.apps4ics.mountainnavigation.adapters.ShowEndangeredListAdapter; import de.apps4ics.mountainnavigation.overlays.ImageDialogItemizedIconOverlay; import de.apps4ics.mountainnavigation.overlays.MapDialogItemizedIconOverlay; import de.apps4ics.mountainnavigation.pois.AddBiotaDialog; @@ -86,20 +88,26 @@ import de.apps4ics.mountainnavigation.pois.AddPathDialog; import de.apps4ics.mountainnavigation.pois.AddPeakDialog; import de.apps4ics.mountainnavigation.pois.AddPoiDialog; +import de.apps4ics.mountainnavigation.pois.Biota; +import de.apps4ics.mountainnavigation.pois.BreakPoint; import de.apps4ics.mountainnavigation.pois.CellReception; import de.apps4ics.mountainnavigation.pois.DbGeoPoint; +import de.apps4ics.mountainnavigation.pois.Endangered; import de.apps4ics.mountainnavigation.pois.Fountain; import de.apps4ics.mountainnavigation.pois.Hike; +import de.apps4ics.mountainnavigation.pois.Hut; import de.apps4ics.mountainnavigation.pois.Image; import de.apps4ics.mountainnavigation.pois.Lift; import de.apps4ics.mountainnavigation.pois.Options; import de.apps4ics.mountainnavigation.pois.Path; +import de.apps4ics.mountainnavigation.pois.Peak; import de.apps4ics.mountainnavigation.pois.Poi; import de.apps4ics.mountainnavigation.pois.Types; import de.apps4ics.mountainnavigation.pois.Wifi; public class PoiHandler { private static List[] poiMarkers; + private static List biotaAreas; private static RoadManager roadManager; private Map> pois; private Resources res; @@ -130,6 +138,7 @@ for(int i=0; i(); } + biotaAreas = new ArrayList<>(); dbHandler = new DatabaseHandler(context); osmHandler = new OsmHandler(); this.context = context; @@ -333,20 +342,75 @@ dbHandler.updatePoi(poi); } - public List getPoiIcons(int type, String title) { + public void enableBiotas() { + poiMarkers[Types.BIOTA] = new ArrayList<>(); + biotaAreas = new ArrayList<>(); + List biotas = dbHandler.getPoiByType(Types.BIOTA); + for(int i=0; i items = dbHandler.getEndageredForBiota(poi.getId()); + List points = dbHandler.getGeoPointsForPoi(poi.getId(), Types.BIOTA); + if(points.size() != 1) continue; + DbGeoPoint dbgp = points.get(0); + Polygon polygon = new Polygon(context); + polygon.setPoints(Polygon.pointsAsCircle(dbgp.getGeoPoint(), poi.getRadius())); + polygon.setFillColor(res.getColor(R.color.elevation_bg)); + polygon.setStrokeColor(res.getColor(R.color.elevation_line)); + polygon.setStrokeWidth(2); + Marker m = PoiHandler.getMarkerFromGeoPoint(dbgp.getGeoPoint(), "", "", Types.BIOTA, res, mapView);m.setOnMarkerClickListener(new Marker.OnMarkerClickListener() { + @Override + public boolean onMarkerClick(Marker marker, MapView mapView) { + AlertDialog dialog = new AlertDialog.Builder(context) + .setTitle(R.string.biota_dialog_title) + .setAdapter(new ShowEndangeredListAdapter((Activity) context, items), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + + } + }) + .create(); + dialog.show(); + return true; + } + }); + poiMarkers[Types.BIOTA].add(m); + biotaAreas.add(polygon); + } + mapView.getOverlays().addAll(poiMarkers[Types.BIOTA]); + mapView.getOverlays().addAll(biotaAreas); + mapView.invalidate(); + } + + public void enablePois(int type, String title) { + if(Types.BIOTA == type) { + enableBiotas(); + return; + } UpdatePoiIconsAsyncTask task = new UpdatePoiIconsAsyncTask(type, title, res, mapView); List tempPoiList = dbHandler.getPoiByType(type); try { poiMarkers[type] = task.execute(tempPoiList).get(); + mapView.getOverlays().addAll(poiMarkers[type]); + mapView.invalidate(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } - return poiMarkers[type]; + //return poiMarkers[type]; + } + + public void disableBiotas() { + for(int i=0; i(); } public void disablePois(int type) { + if(Types.BIOTA == type) { + disableBiotas(); + } for(int i=0; i