diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index ba8b3ae6f6..273e8b55cc 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -15,6 +15,7 @@ import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings.CommonPreference; +import net.osmand.plus.PoiFilter; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.SettingsActivity; @@ -103,11 +104,10 @@ public class ConfigureMapMenu { @Override public boolean onRowItemClick(ArrayAdapter adapter, View view, int itemId, int pos) { if(itemId == R.string.layer_poi && cm.getSelection(pos) == 1) { - ma.getMapLayers().selectPOIFilterLayer(ma.getMapView(), null); + selectPOILayer(ma.getMyApplication().getSettings()); return false; } else if(itemId == R.string.layer_gpx_layer && cm.getSelection(pos) == 1) { ma.getMapLayers().showGPXFileLayer(getAlreadySelectedGpx(), ma.getMapView()); - // TODO: tick mark of "Show GPX" needs to be synced after return form sub-selection screen (user may or may not have selected files!) return false; } else { return super.onRowItemClick(adapter, view, itemId, pos); @@ -116,12 +116,13 @@ public class ConfigureMapMenu { @Override public boolean onContextMenuClick(final ArrayAdapter adapter, int itemId, final int pos, boolean isChecked) { - OsmandSettings settings = ma.getMyApplication().getSettings(); + final OsmandSettings settings = ma.getMyApplication().getSettings(); if (itemId == R.string.layer_poi) { - if (isChecked) { - ma.getMapLayers().selectPOIFilterLayer(ma.getMapView(), null); - } settings.SHOW_POI_OVER_MAP.set(isChecked); + if (isChecked) { + selectPOILayer(settings); + } + } else if (itemId == R.string.layer_amenity_label) { settings.SHOW_POI_LABEL.set(isChecked); } else if (itemId == R.string.layer_favorites) { @@ -139,7 +140,6 @@ public class ConfigureMapMenu { } }); } - // TODO: tick mark of "Show GPX" needs to be synced after return form sub-selection screen (user may or may not have selected files!) } else if (itemId == R.string.layer_transport_route) { ma.getMapLayers().getTransportInfoLayer().setVisible(isChecked); } @@ -147,6 +147,21 @@ public class ConfigureMapMenu { ma.getMapView().refreshMap(); return false; } + + protected void selectPOILayer(final OsmandSettings settings) { + final PoiFilter[] selected = new PoiFilter[1]; + AlertDialog dlg = ma.getMapLayers().selectPOIFilterLayer(ma.getMapView(), selected); + dlg.setOnDismissListener(new DialogInterface.OnDismissListener() { + + @Override + public void onDismiss(DialogInterface dialog) { + if(selected[0] == null) { + settings.SHOW_POI_OVER_MAP.set(selected[0] != null); + } + ma.getMapActions().refreshDrawer(); + } + }); + } } private void createLayersItems(ContextMenuAdapter adapter , MapActivity activity) {