package net.osmand.plus.osmedit; import android.graphics.drawable.Drawable; import net.osmand.data.LatLon; 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.MenuBuilder; import net.osmand.plus.mapcontextmenu.MenuController; import net.osmand.plus.osmedit.OsmBugsLayer.OpenStreetNote; public class OsmBugMenuController extends MenuController { private OsmEditingPlugin plugin; private OpenStreetNote bug; public OsmBugMenuController(MapActivity mapActivity, PointDescription pointDescription, OpenStreetNote bug) { super(new MenuBuilder(mapActivity), pointDescription, mapActivity); plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class); this.bug = bug; leftTitleButtonController = new TitleButtonController() { @Override public void buttonPressed() { if (plugin != null) { OpenStreetNote bg = getBug(); if(bg.isOpened()) { plugin.getBugsLayer(getMapActivity()).commentBug(bg, ""); } else { plugin.getBugsLayer(getMapActivity()).reopenBug(bg, ""); } } } }; if(bug.isOpened()) { leftTitleButtonController.caption = getMapActivity().getString(R.string.poi_dialog_comment); } else { leftTitleButtonController.caption = getMapActivity().getString(R.string.poi_dialog_reopen); } leftTitleButtonController.leftIconId = R.drawable.ic_action_note_dark; rightTitleButtonController = new TitleButtonController() { @Override public void buttonPressed() { if (plugin != null) { plugin.getBugsLayer(getMapActivity()).closeBug(getBug(), ""); } } }; rightTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_close); rightTitleButtonController.leftIconId = R.drawable.ic_action_remove_dark; updateData(); } @Override protected void setObject(Object object) { if (object instanceof OpenStreetNote) { this.bug = (OpenStreetNote) object; updateData(); } } @Override protected Object getObject() { return bug; } public OpenStreetNote getBug() { return bug; } @Override public Drawable getLeftIcon() { if (bug.isOpened()) { return getIcon(R.drawable.ic_action_gabout_dark, R.color.osm_bug_unresolved_icon_color); } else { return getIcon(R.drawable.ic_action_gabout_dark, R.color.osm_bug_resolved_icon_color); } } @Override public String getTypeStr() { return getPointDescription().getTypeName(); } @Override public boolean needStreetName() { return false; } @Override public void addPlainMenuItems(String typeStr, PointDescription pointDescription, LatLon latLon) { super.addPlainMenuItems(typeStr, pointDescription, latLon); for (String description : bug.getCommentDescriptionList()) { addPlainMenuItem(R.drawable.ic_action_note_dark, description, true, false, null); } } @Override public void updateData() { super.updateData(); rightTitleButtonController.visible = bug.isOpened(); } }