package net.osmand.plus.mapcontextmenu.controllers;
import android.graphics.drawable.Drawable;
import net.osmand.data.PointDescription;
import net.osmand.plus.R;
import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.TargetPointsHelper.TargetPoint;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.mapcontextmenu.MenuBuilder;
import net.osmand.plus.mapcontextmenu.MenuController;
import net.osmand.plus.mapillary.MapillaryPlugin;
import net.osmand.plus.routing.RoutingHelper;
import net.osmand.util.Algorithms;
public class TargetPointMenuController extends MenuController {
private TargetPoint targetPoint;
public TargetPointMenuController(MapActivity mapActivity, PointDescription pointDescription, TargetPoint targetPoint) {
super(new MenuBuilder(mapActivity), pointDescription, mapActivity);
this.targetPoint = targetPoint;
builder.setShowNearestWiki(true);
final TargetPointsHelper targetPointsHelper = getMapActivity().getMyApplication().getTargetPointsHelper();
final int intermediatePointsCount = targetPointsHelper.getIntermediatePoints().size();
RoutingHelper routingHelper = getMapActivity().getMyApplication().getRoutingHelper();
final boolean nav = routingHelper.isRoutePlanningMode() || routingHelper.isFollowingMode();
leftTitleButtonController = new TitleButtonController() {
@Override
public void buttonPressed() {
TargetPoint tp = getTargetPoint();
if (tp.start) {
getMapActivity().getMyApplication().getTargetPointsHelper().clearStartPoint(true);
} else if (tp.intermediate) {
targetPointsHelper.removeWayPoint(true, tp.index);
} else {
targetPointsHelper.removeWayPoint(true, -1);
}
getMapActivity().getContextMenu().close();
if (nav && intermediatePointsCount == 0 && !tp.start) {
getMapActivity().getMapActions().stopNavigationWithoutConfirm();
getMapActivity().getMyApplication().getTargetPointsHelper().clearStartPoint(false);
}
}
};
if (nav && intermediatePointsCount == 0 && !targetPoint.start) {
leftTitleButtonController.caption = getMapActivity().getString(R.string.cancel_navigation);
leftTitleButtonController.leftIconId = R.drawable.ic_action_remove_dark;
} else {
leftTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_remove);
leftTitleButtonController.leftIconId = R.drawable.ic_action_delete_dark;
}
}
@Override
protected void setObject(Object object) {
if (object instanceof TargetPoint) {
this.targetPoint = (TargetPoint) object;
}
}
@Override
protected Object getObject() {
return targetPoint;
}
public TargetPoint getTargetPoint() {
return targetPoint;
}
@Override
public boolean needTypeStr() {
return !Algorithms.isEmpty(getNameStr());
}
@Override
public boolean displayDistanceDirection() {
return true;
}
@Override
public Drawable getLeftIcon() {
if (targetPoint.start) {
return getIconOrig(R.drawable.list_startpoint);
} else if (!targetPoint.intermediate) {
return getIconOrig(R.drawable.list_destination);
} else {
return getIconOrig(R.drawable.list_intermediate);
}
}
@Override
public String getTypeStr() {
if (targetPoint.start) {
return getMapActivity().getString(R.string.starting_point);
} else {
return targetPoint.getPointDescription(getMapActivity()).getTypeName();
}
}
@Override
public boolean needStreetName() {
return !needTypeStr();
}
}