diff --git a/app/src/main/ic_poi_red-web.png b/app/src/main/ic_poi_red-web.png new file mode 100644 index 0000000..203932c --- /dev/null +++ b/app/src/main/ic_poi_red-web.png Binary files differ diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java index 5102ac9..8dd7518 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java @@ -56,12 +56,14 @@ import com.survivingwithandroid.weather.lib.provider.openweathermap.OpenweathermapProviderType; import com.survivingwithandroid.weather.lib.request.WeatherRequest; +import org.osmdroid.api.IGeoPoint; import org.osmdroid.api.IMapController; import org.osmdroid.bonuspack.overlays.Marker; import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapView; import org.osmdroid.views.overlay.Overlay; +import org.osmdroid.views.overlay.OverlayItem; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -127,6 +129,9 @@ private List[] poiMarkers; + protected static IGeoPoint pathMarkerOne; + protected static IGeoPoint pathMarkerTwo; + private String provider; private Location mLocation; private LocationManager locationManager; @@ -793,6 +798,18 @@ popupMapController.setZoom(ZOOM_LEVEL); popupMapController.setCenter(new GeoPoint(48.52, 9.055)); + MapDialogItemizedIconOverlay overlay = null; + List overlayItemList = new ArrayList<>(); + //TODO fill with correct items + OverlayItem olItem = new OverlayItem("Test Item", "Description...", new GeoPoint(48.47, 9.055)); + OverlayItem olItem2 = new OverlayItem("Test Item 2", "Description...", new GeoPoint(48.57, 9.055)); + OverlayItem olItem3 = new OverlayItem("Test Item 3", "Description...", new GeoPoint(48.52, 9.155)); + OverlayItem olItem4 = new OverlayItem("Test Item 4", "Description...", new GeoPoint(48.52, 8.955)); + overlayItemList.add(olItem); + overlayItemList.add(olItem2); + overlayItemList.add(olItem3); + overlayItemList.add(olItem4); + AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setView(popupMapView) .setTitle(R.string.path_map_dialog_title) @@ -810,8 +827,9 @@ }); AlertDialog pathMapDialog = builder.create(); pathMapDialog.show(); - //pathMapDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); - //TODO set positive button enabled, as soon as 2 markers are selected + pathMapDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + overlay = new MapDialogItemizedIconOverlay(this, overlayItemList, pathMapDialog); + popupMapView.getOverlays().add(overlay); } public class AddPathDialog extends DialogFragment { @@ -821,13 +839,12 @@ final CheckboxImageAdapter adapter = new CheckboxImageAdapter(MainActivity.this, pathOptions, pathDescs, pathOptionImgs); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.path_dialog_title) - //.setIcon(res.getDrawable(R.drawable.path)) .setPositiveButton(R.string.ok_button, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { int[] options = adapter.getCheckedItems(); - for(int i=0; i { + private Context context; + private AlertDialog alertDialog; + private boolean[] items; + private int selected; + private Drawable posIcon; + private Drawable negIcon; + private List aList; + + public MapDialogItemizedIconOverlay(final Context context, final List aList, AlertDialog alertDialog) { + super(context, aList, new OnItemGestureListener() { + @Override + public boolean onItemSingleTapUp(int index, OverlayItem item) { + return false; + } + + @Override + public boolean onItemLongPress(int index, OverlayItem item) { + return false; + } + }); + Resources res = context.getResources(); + posIcon = res.getDrawable(R.mipmap.ic_poi); + negIcon = res.getDrawable(R.mipmap.ic_poi_red); + for(OverlayItem oi : aList){ + oi.setMarker(negIcon); + } + this.context = context; + this.items = new boolean[aList.size()]; + this.alertDialog = alertDialog; + this.aList = aList; + this.selected = 0; + } + + @Override + protected boolean onSingleTapUpHelper(int index, OverlayItem item, MapView mapView) { + Resources res = context.getResources(); + if(items[index]){ + items[index] = false; + selected--; + item.setMarker(negIcon); + } else { + items[index] = true; + selected++; + item.setMarker(posIcon); + } + mapView.invalidate(); + if(selected == 2){ + boolean firstFound = false; + for(int i=0; i