From 6854d9e69059bee98c2aa9fbe69fc9999b2ec9b6 Mon Sep 17 00:00:00 2001 From: Chumva Date: Fri, 8 Jun 2018 17:13:24 +0300 Subject: [PATCH] Merge --- .../src/net/osmand/data/TransportStop.java | 8 +++++ .../builders/TransportStopMenuBuilder.java | 34 +++++++++++++++++++ .../controllers/TransportStopController.java | 17 ++++++++-- .../osmand/plus/osmedit/OsmEditingPlugin.java | 16 ++++++++- .../osmand/plus/views/ContextMenuLayer.java | 1 + 5 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/TransportStopMenuBuilder.java diff --git a/OsmAnd-java/src/net/osmand/data/TransportStop.java b/OsmAnd-java/src/net/osmand/data/TransportStop.java index e08afc39b5..3cc84afc18 100644 --- a/OsmAnd-java/src/net/osmand/data/TransportStop.java +++ b/OsmAnd-java/src/net/osmand/data/TransportStop.java @@ -2,6 +2,7 @@ package net.osmand.data; public class TransportStop extends MapObject { private int[] referencesToRoutes = null; + private Amenity amenity; public int distance; public TransportStop(){ @@ -15,4 +16,11 @@ public class TransportStop extends MapObject { this.referencesToRoutes = referencesToRoutes; } + public Amenity getAmenity() { + return amenity; + } + + public void setAmenity(Amenity amenity) { + this.amenity = amenity; + } } diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/TransportStopMenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/TransportStopMenuBuilder.java new file mode 100644 index 0000000000..a4266c1f4c --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/TransportStopMenuBuilder.java @@ -0,0 +1,34 @@ +package net.osmand.plus.mapcontextmenu.builders; + +import android.view.View; + +import net.osmand.data.Amenity; +import net.osmand.data.TransportStop; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.mapcontextmenu.MenuBuilder; + +public class TransportStopMenuBuilder extends MenuBuilder { + + private final TransportStop transportStop; + private Amenity amenity; + + public TransportStopMenuBuilder(MapActivity mapActivity, final TransportStop transportStop) { + super(mapActivity); + this.transportStop = transportStop; + acquireOriginObject(); + } + + private void acquireOriginObject() { + amenity = transportStop.getAmenity(); + } + + @Override + public void buildInternal(View view) { + if (amenity != null) { + AmenityMenuBuilder builder = new AmenityMenuBuilder(mapActivity, amenity); + builder.setLatLon(getLatLon()); + builder.setLight(light); + builder.buildInternal(view); + } + } +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/TransportStopController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/TransportStopController.java index 8a9d910165..4ed5f21c47 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/TransportStopController.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/TransportStopController.java @@ -2,16 +2,18 @@ package net.osmand.plus.mapcontextmenu.controllers; import android.support.annotation.NonNull; +import net.osmand.data.Amenity; +import net.osmand.data.LatLon; import net.osmand.data.PointDescription; import net.osmand.data.QuadRect; import net.osmand.data.TransportRoute; import net.osmand.data.TransportStop; import net.osmand.plus.R; -import net.osmand.plus.transport.TransportStopRoute; import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.mapcontextmenu.MenuBuilder; import net.osmand.plus.mapcontextmenu.MenuController; +import net.osmand.plus.mapcontextmenu.builders.TransportStopMenuBuilder; import net.osmand.plus.resources.TransportIndexRepository; +import net.osmand.plus.transport.TransportStopRoute; import net.osmand.plus.transport.TransportStopType; import net.osmand.util.Algorithms; import net.osmand.util.MapUtils; @@ -33,7 +35,7 @@ public class TransportStopController extends MenuController { public TransportStopController(@NonNull MapActivity mapActivity, @NonNull PointDescription pointDescription, @NonNull TransportStop transportStop) { - super(new MenuBuilder(mapActivity), pointDescription, mapActivity); + super(new TransportStopMenuBuilder(mapActivity, transportStop), pointDescription, mapActivity); this.transportStop = transportStop; processRoutes(); } @@ -163,4 +165,13 @@ public class TransportStopController extends MenuController { return false; } + @Override + public void addPlainMenuItems(String typeStr, PointDescription pointDescription, LatLon latLon) { + Amenity amenity = transportStop.getAmenity(); + if (amenity != null) { + AmenityMenuController.addTypeMenuItem(amenity, builder); + } else { + addMyLocationToPlainItems(latLon); + } + } } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java index 2b36c6afe9..a6bde3bc8d 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java @@ -19,6 +19,7 @@ import android.widget.Toast; import net.osmand.AndroidUtils; import net.osmand.PlatformUtil; import net.osmand.data.Amenity; +import net.osmand.data.TransportStop; import net.osmand.osm.PoiType; import net.osmand.osm.edit.Node; import net.osmand.plus.ContextMenuAdapter; @@ -196,7 +197,8 @@ public class OsmEditingPlugin extends OsmandPlugin { } else if (resId == R.string.context_menu_item_modify_note) { modifyOsmNote(mapActivity, (OsmNotesPoint) selectedObj); } else if (resId == R.string.poi_context_menu_modify) { - EditPoiDialogFragment.showEditInstance((Amenity) selectedObj, mapActivity); + EditPoiDialogFragment.showEditInstance(selectedObj instanceof TransportStop ? + ((TransportStop) selectedObj).getAmenity() : (Amenity) selectedObj, mapActivity); } else if (resId == R.string.poi_context_menu_modify_osm_change) { final Node entity = ((OpenstreetmapPoint) selectedObj).getEntity(); EditPoiDialogFragment.createInstance(entity, false) @@ -223,6 +225,18 @@ public class OsmEditingPlugin extends OsmandPlugin { .setOrder(MODIFY_OSM_CHANGE_ITEM_ORDER) .setListener(listener) .createItem()); + } else if (selectedObj instanceof TransportStop && ((TransportStop) selectedObj).getAmenity() != null) { + TransportStop transportStop = (TransportStop) selectedObj; + Amenity amenity = transportStop.getAmenity(); + final PoiType poiType = amenity.getType().getPoiTypeByKeyName(amenity.getSubType()); + isEditable = !amenity.getType().isWiki() && poiType != null && !poiType.isNotEditableOsm(); + if (isEditable) { + adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.poi_context_menu_modify, mapActivity) + .setIcon(R.drawable.ic_action_edit_dark) + .setOrder(MODIFY_POI_ITEM_ORDER) + .setListener(listener) + .createItem()); + } } else { adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.context_menu_item_create_poi, mapActivity) .setIcon(R.drawable.ic_action_plus_dark) diff --git a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java index 966d496de0..1fc00e95c2 100644 --- a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java @@ -760,6 +760,7 @@ public class ContextMenuLayer extends OsmandMapLayer { for (TransportStop transportStop : transportStops) { if (transportStop.getName().startsWith(amenity.getName())) { amenityTransportStops.add(transportStop); + transportStop.setAmenity(amenity); } } if (amenityTransportStops.size() > 0) {