Merge pull request #10810 from osmandapp/context_menu_fixes

Fix wpt menu for route points
This commit is contained in:
alex-osm 2021-02-09 12:20:24 +03:00 committed by GitHub
commit a247d2e9c2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 3 deletions

View file

@ -1255,6 +1255,10 @@ public class GPXUtilities {
return g; return g;
} }
public boolean containsRoutePoint(WptPt point) {
return getRoutePoints().contains(point);
}
public List<WptPt> getRoutePoints() { public List<WptPt> getRoutePoints() {
List<WptPt> points = new ArrayList<>(); List<WptPt> points = new ArrayList<>();
for (int i = 0; i < routes.size(); i++) { for (int i = 0; i < routes.size(); i++) {

View file

@ -209,9 +209,10 @@ public class GpxSelectionHelper {
} }
public SelectedGpxFile getSelectedGPXFile(WptPt point) { public SelectedGpxFile getSelectedGPXFile(WptPt point) {
for (SelectedGpxFile g : selectedGPXFiles) { for (SelectedGpxFile selectedGpxFile : selectedGPXFiles) {
if (g.getGpxFile().containsPoint(point)) { GPXFile gpxFile = selectedGpxFile.getGpxFile();
return g; if (gpxFile.containsPoint(point) || gpxFile.containsRoutePoint(point)) {
return selectedGpxFile;
} }
} }
return null; return null;

View file

@ -110,6 +110,7 @@ import static net.osmand.plus.track.OptionsCard.SHOW_ON_MAP_BUTTON_INDEX;
import static net.osmand.plus.track.OptionsCard.UPLOAD_OSM_BUTTON_INDEX; import static net.osmand.plus.track.OptionsCard.UPLOAD_OSM_BUTTON_INDEX;
import static net.osmand.plus.track.TrackPointsCard.ADD_WAYPOINT_INDEX; import static net.osmand.plus.track.TrackPointsCard.ADD_WAYPOINT_INDEX;
import static net.osmand.plus.track.TrackPointsCard.DELETE_WAYPOINTS_INDEX; import static net.osmand.plus.track.TrackPointsCard.DELETE_WAYPOINTS_INDEX;
import static net.osmand.plus.track.TrackPointsCard.OPEN_WAYPOINT_INDEX;
public class TrackMenuFragment extends ContextMenuScrollFragment implements CardListener, public class TrackMenuFragment extends ContextMenuScrollFragment implements CardListener,
SegmentActionsListener, RenameCallback, OnTrackFileMoveListener, OnPointsDeleteListener, SegmentActionsListener, RenameCallback, OnTrackFileMoveListener, OnPointsDeleteListener,
@ -823,6 +824,8 @@ public class TrackMenuFragment extends ContextMenuScrollFragment implements Card
} else { } else {
pointsCard.setSelectionMode(true); pointsCard.setSelectionMode(true);
} }
} else if (buttonIndex == OPEN_WAYPOINT_INDEX) {
dismiss();
} }
} }
} }

View file

@ -59,6 +59,7 @@ public class TrackPointsCard extends BaseCard implements OnChildClickListener, O
public static final int ADD_WAYPOINT_INDEX = 0; public static final int ADD_WAYPOINT_INDEX = 0;
public static final int DELETE_WAYPOINTS_INDEX = 1; public static final int DELETE_WAYPOINTS_INDEX = 1;
public static final int OPEN_WAYPOINT_INDEX = 2;
private final TrackDisplayHelper displayHelper; private final TrackDisplayHelper displayHelper;
private final GpxDisplayItemType[] filterTypes = new GpxDisplayItemType[] {GpxDisplayItemType.TRACK_POINTS, GpxDisplayItemType.TRACK_ROUTE_POINTS}; private final GpxDisplayItemType[] filterTypes = new GpxDisplayItemType[] {GpxDisplayItemType.TRACK_POINTS, GpxDisplayItemType.TRACK_ROUTE_POINTS};
@ -177,6 +178,11 @@ public class TrackPointsCard extends BaseCard implements OnChildClickListener, O
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
GpxDisplayItem item = adapter.getChild(groupPosition, childPosition); GpxDisplayItem item = adapter.getChild(groupPosition, childPosition);
if (item != null && item.locationStart != null) { if (item != null && item.locationStart != null) {
CardListener cardListener = getListener();
if (cardListener != null) {
cardListener.onCardButtonPressed(this, OPEN_WAYPOINT_INDEX);
}
LatLon location = new LatLon(item.locationStart.lat, item.locationStart.lon); LatLon location = new LatLon(item.locationStart.lat, item.locationStart.lon);
PointDescription description = new PointDescription(PointDescription.POINT_TYPE_WPT, item.name); PointDescription description = new PointDescription(PointDescription.POINT_TYPE_WPT, item.name);
mapActivity.getContextMenu().show(location, description, item.locationStart); mapActivity.getContextMenu().show(location, description, item.locationStart);