Keep poi show in sync with dialog selection

This commit is contained in:
Victor Shcherb 2015-01-19 01:28:00 +01:00
parent 005b37b49e
commit 810c3cb040

View file

@ -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) {