package net.osmand.core.samples.android.sample1.mapcontextmenu.controllers; import net.osmand.core.samples.android.sample1.MainActivity; import net.osmand.core.samples.android.sample1.OsmandResources; import net.osmand.core.samples.android.sample1.data.PointDescription; import net.osmand.core.samples.android.sample1.mapcontextmenu.MenuBuilder; import net.osmand.core.samples.android.sample1.mapcontextmenu.MenuController; import net.osmand.core.samples.android.sample1.mapcontextmenu.builders.AmenityMenuBuilder; import net.osmand.data.Amenity; import net.osmand.data.LatLon; import net.osmand.osm.PoiCategory; import net.osmand.osm.PoiType; import net.osmand.util.Algorithms; public class AmenityMenuController extends MenuController { private Amenity amenity; public AmenityMenuController(MainActivity mainActivity, PointDescription pointDescription, Amenity amenity) { super(new AmenityMenuBuilder(mainActivity, amenity), pointDescription, mainActivity); this.amenity = amenity; } @Override protected void setObject(Object object) { if (object instanceof Amenity) { this.amenity = (Amenity) object; } } @Override protected Object getObject() { return amenity; } @Override public boolean needStreetName() { if (amenity.getSubType() != null && amenity.getType() != null) { PoiType pt = amenity.getType().getPoiTypeByKeyName(amenity.getSubType()); if (pt != null && pt.getOsmTag() != null && pt.getOsmTag().equals("place")) { return false; } } return true; } @Override public int getLeftIconId() { return getLeftIconId(amenity); } public static int getLeftIconId(Amenity amenity) { int id = 0; PoiType st = amenity.getType().getPoiTypeByKeyName(amenity.getSubType()); if (st != null) { id = OsmandResources.getBigDrawableId(st.getIconKeyName()); if (id == 0) { id = OsmandResources.getBigDrawableId(st.getOsmTag() + "_" + st.getOsmValue()); } } return id; } @Override public boolean displayDistanceDirection() { return true; } @Override public String getTypeStr() { return getTypeStr(amenity); } public static String getTypeStr(Amenity amenity) { PoiCategory pc = amenity.getType(); PoiType pt = pc.getPoiTypeByKeyName(amenity.getSubType()); String typeStr = amenity.getSubType(); if (pt != null) { typeStr = pt.getTranslation(); } else if (typeStr != null) { typeStr = Algorithms.capitalizeFirstLetterAndLowercase(typeStr.replace('_', ' ')); } return typeStr; } @Override public String getCommonTypeStr() { PoiCategory pc = amenity.getType(); return pc.getTranslation(); } @Override public void addPlainMenuItems(String typeStr, PointDescription pointDescription, LatLon latLon) { addPlainMenuItems(amenity, typeStr, builder); } public static void addPlainMenuItems(Amenity amenity, String typeStr, MenuBuilder builder) { if (!Algorithms.isEmpty(typeStr)) { int resId = getLeftIconId(amenity); if (resId == 0) { PoiCategory pc = amenity.getType(); resId = OsmandResources.getBigDrawableId(pc.getIconKeyName()); } if (resId == 0) { resId = OsmandResources.getDrawableId("ic_action_folder_stroke"); } builder.addPlainMenuItem(resId, typeStr, false, false, null); } } }