package net.osmand.plus.osmedit; import android.content.DialogInterface; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; import android.support.v7.app.AlertDialog; import net.osmand.data.PointDescription; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.mapcontextmenu.MenuController; import net.osmand.plus.osmedit.OsmPoint.Action; import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment; import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.ProgressDialogPoiUploader; import net.osmand.util.Algorithms; public class EditPOIMenuController extends MenuController { private OsmPoint osmPoint; private OsmEditingPlugin plugin; private String pointTypeStr; private ProgressDialogPoiUploader poiUploader; public EditPOIMenuController(final MapActivity mapActivity, PointDescription pointDescription, OsmPoint osmPoint) { super(new EditPOIMenuBuilder(mapActivity, osmPoint), pointDescription, mapActivity); this.osmPoint = osmPoint; plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class); poiUploader = new SendPoiDialogFragment.SimpleProgressDialogPoiUploader() { @NonNull @Override protected MapActivity getMapActivity() { return mapActivity; } }; leftTitleButtonController = new TitleButtonController() { @Override public void buttonPressed() { if (plugin != null) { SendPoiDialogFragment sendPoiDialogFragment = SendPoiDialogFragment.createInstance(new OsmPoint[]{getOsmPoint()}); sendPoiDialogFragment.setPoiUploader(poiUploader); sendPoiDialogFragment.show(getMapActivity().getSupportFragmentManager(), SendPoiDialogFragment.TAG); } } }; leftTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_upload); leftTitleButtonController.leftIconId = R.drawable.ic_action_export; rightTitleButtonController = new TitleButtonController() { @Override public void buttonPressed() { AlertDialog.Builder bld = new AlertDialog.Builder(getMapActivity()); bld.setMessage(R.string.recording_delete_confirm); bld.setPositiveButton(R.string.shared_string_yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (plugin != null) { boolean deleted = false; OsmPoint point = getOsmPoint(); if (point instanceof OsmNotesPoint) { deleted = plugin.getDBBug().deleteAllBugModifications((OsmNotesPoint) point); } else if (point instanceof OpenstreetmapPoint) { deleted = plugin.getDBPOI().deletePOI((OpenstreetmapPoint) point); } if (deleted) { getMapActivity().getContextMenu().close(); } } } }); bld.setNegativeButton(R.string.shared_string_no, null); bld.show(); } }; rightTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_delete); rightTitleButtonController.leftIconId = R.drawable.ic_action_delete_dark; if (osmPoint.getGroup() == OsmPoint.Group.POI) { if(osmPoint.getAction() == Action.DELETE) { pointTypeStr = getMapActivity().getString(R.string.osm_edit_deleted_poi); } else if(osmPoint.getAction() == Action.MODIFY) { pointTypeStr = getMapActivity().getString(R.string.osm_edit_modified_poi); } else/* if(osmPoint.getAction() == Action.CREATE) */{ pointTypeStr = getMapActivity().getString(R.string.osm_edit_created_poi); } } else if (osmPoint.getGroup() == OsmPoint.Group.BUG) { if(osmPoint.getAction() == Action.DELETE) { pointTypeStr = getMapActivity().getString(R.string.osm_edit_removed_note); } else if(osmPoint.getAction() == Action.MODIFY) { pointTypeStr = getMapActivity().getString(R.string.osm_edit_commented_note); } else if(osmPoint.getAction() == Action.REOPEN) { pointTypeStr = getMapActivity().getString(R.string.osm_edit_reopened_note); } else/* if(osmPoint.getAction() == Action.CREATE) */{ pointTypeStr = getMapActivity().getString(R.string.osm_edit_created_note); } } else { pointTypeStr = ""; } } @Override protected void setObject(Object object) { if (object instanceof OsmPoint) { this.osmPoint = (OsmPoint) object; } } @Override protected Object getObject() { return osmPoint; } public OsmPoint getOsmPoint() { return osmPoint; } @Override public boolean needTypeStr() { return !Algorithms.isEmpty(pointTypeStr); } @Override public Drawable getLeftIcon() { return getIcon(R.drawable.ic_action_gabout_dark, R.color.created_poi_icon_color); } @Override public String getTypeStr() { return pointTypeStr; } @Override public boolean needStreetName() { return false; } }