diff --git a/OsmAnd/src/net/osmand/plus/activities/OsmandActionBarActivity.java b/OsmAnd/src/net/osmand/plus/activities/OsmandActionBarActivity.java index 5162339969..91af8c103b 100644 --- a/OsmAnd/src/net/osmand/plus/activities/OsmandActionBarActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/OsmandActionBarActivity.java @@ -19,8 +19,7 @@ public class OsmandActionBarActivity extends OsmandInAppPurchaseActivity { //should be called after set content view protected void setupHomeButton(){ - Drawable back = ((OsmandApplication)getApplication()).getIconsCache().getIcon(R.drawable.ic_arrow_back); - back.setColorFilter(ContextCompat.getColor(this, R.color.color_white), PorterDuff.Mode.MULTIPLY); + Drawable back = ((OsmandApplication)getApplication()).getIconsCache().getIcon(R.drawable.ic_arrow_back, R.color.color_white); final ActionBar supportActionBar = getSupportActionBar(); if (supportActionBar != null) { supportActionBar.setHomeButtonEnabled(true); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuBuilder.java index 6bd5beaf65..3605b06f02 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuBuilder.java @@ -13,6 +13,7 @@ import android.net.Uri; import android.os.AsyncTask; import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; +import android.support.v4.graphics.drawable.DrawableCompat; import android.support.v7.view.ContextThemeWrapper; import android.text.ClipboardManager; import android.text.TextUtils; @@ -752,7 +753,10 @@ public class MenuBuilder { public Drawable getRowIcon(Context ctx, String fileName) { Drawable d = RenderingIcons.getBigIcon(ctx, fileName); if (d != null) { - d.setColorFilter(app.getResources().getColor(light ? R.color.ctx_menu_bottom_view_icon_light : R.color.ctx_menu_bottom_view_icon_dark), PorterDuff.Mode.SRC_IN); + d = DrawableCompat.wrap(d); + d.mutate(); + d.setColorFilter(app.getResources().getColor(light + ? R.color.ctx_menu_bottom_view_icon_light : R.color.ctx_menu_bottom_view_icon_dark), PorterDuff.Mode.SRC_IN); return d; } else { return null; diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java index 5edc09f0fa..6479301de4 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/builders/AmenityMenuBuilder.java @@ -25,6 +25,7 @@ import net.osmand.data.Amenity; import net.osmand.data.PointDescription; import net.osmand.osm.AbstractPoiType; import net.osmand.osm.MapPoiTypes; +import net.osmand.osm.PoiCategory; import net.osmand.osm.PoiType; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; @@ -49,6 +50,7 @@ import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; +import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -344,6 +346,7 @@ public class AmenityMenuBuilder extends MenuBuilder { Map> poiAdditionalCategories = new HashMap<>(); AmenityInfoRow cuisineRow = null; + List collectedPoiTypes = new ArrayList<>(); for (Map.Entry e : amenity.getAdditionalInfo().entrySet()) { int iconId = 0; @@ -362,14 +365,15 @@ public class AmenityMenuBuilder extends MenuBuilder { boolean isWiki = false; boolean isText = false; boolean isDescription = false; - boolean needLinks = !("population".equals(key) - || "height".equals(key)); + boolean needLinks = !("population".equals(key) || "height".equals(key)); boolean isPhoneNumber = false; boolean isUrl = false; boolean isCuisine = false; int poiTypeOrder = 0; String poiTypeKeyName = ""; + PoiType poiType = amenity.getType().getPoiTypeByKeyName(key); + AbstractPoiType pt = poiTypes.getAnyPoiAdditionalTypeByKey(key); if (pt == null && !Algorithms.isEmpty(vl) && vl.length() < 50) { pt = poiTypes.getAnyPoiAdditionalTypeByKey(key + "_" + vl); @@ -501,6 +505,8 @@ public class AmenityMenuBuilder extends MenuBuilder { if (icon == null && isText && iconId == 0) { iconId = R.drawable.ic_action_note_dark; } + } else if (poiType != null) { + collectedPoiTypes.add(poiType); } else { textPrefix = Algorithms.capitalizeFirstLetterAndLowercase(e.getKey()); vl = amenity.unzipContent(e.getValue()); @@ -524,12 +530,10 @@ public class AmenityMenuBuilder extends MenuBuilder { } if (isDescription) { descriptions.add(row); - } else { - if (!isCuisine) { - infoRows.add(row); - } else { - cuisineRow = row; - } + } else if (isCuisine) { + cuisineRow = row; + } else if (poiType == null) { + infoRows.add(row); } } @@ -568,12 +572,27 @@ public class AmenityMenuBuilder extends MenuBuilder { sb.append(pt.getTranslation()); } boolean cuisineOrDish = categoryName.equals(Amenity.CUISINE) || categoryName.equals(Amenity.DISH); - CollapsableView collapsableView = getPoiAdditionalCollapsableView(view.getContext(), true, categoryTypes, cuisineOrDish ? cuisineRow : null); + CollapsableView collapsableView = getPoiTypeCollapsableView(view.getContext(), true, categoryTypes, true, cuisineOrDish ? cuisineRow : null); infoRows.add(new AmenityInfoRow(poiAdditionalCategoryName, icon, pType.getPoiAdditionalCategoryTranslation(), sb.toString(), true, collapsableView, 0, false, false, false, pType.getOrder(), pType.getKeyName(), false, false, false, 1)); } } + if (collectedPoiTypes.size() > 0) { + CollapsableView collapsableView = getPoiTypeCollapsableView(view.getContext(), true, collectedPoiTypes, false, null); + PoiCategory poiCategory = amenity.getType(); + Drawable icon = getRowIcon(view.getContext(), poiCategory.getIconKeyName()); + StringBuilder sb = new StringBuilder(); + for (PoiType pt : collectedPoiTypes) { + if (sb.length() > 0) { + sb.append(" • "); + } + sb.append(pt.getTranslation()); + } + infoRows.add(new AmenityInfoRow(poiCategory.getKeyName(), icon, poiCategory.getTranslation(), sb.toString(), true, collapsableView, + 0, false, false, false, 40, poiCategory.getKeyName(), false, false, false, 1)); + } + Collections.sort(infoRows, new Comparator() { @Override public int compare(AmenityInfoRow row1, AmenityInfoRow row2) { @@ -664,9 +683,9 @@ public class AmenityMenuBuilder extends MenuBuilder { return params; } - private CollapsableView getPoiAdditionalCollapsableView( - final Context context, boolean collapsed, - @NonNull final List categoryTypes, AmenityInfoRow textCuisineRow) { + private CollapsableView getPoiTypeCollapsableView(final Context context, boolean collapsed, + @NonNull final List categoryTypes, + final boolean poiAdditional, AmenityInfoRow textRow) { final List buttons = new ArrayList<>(); @@ -684,9 +703,15 @@ public class AmenityMenuBuilder extends MenuBuilder { PoiUIFilter filter = app.getPoiFilters().getFilterById(PoiUIFilter.STD_PREFIX + amenity.getType().getKeyName()); if (filter != null) { filter.clearFilter(); - filter.setTypeToAccept(amenity.getType(), true); - filter.updateTypesToAccept(pt); - filter.setFilterByName(pt.getKeyName().replace('_', ':').toLowerCase()); + if (poiAdditional) { + filter.setTypeToAccept(amenity.getType(), true); + filter.updateTypesToAccept(pt); + filter.setFilterByName(pt.getKeyName().replace('_', ':').toLowerCase()); + } else { + LinkedHashSet accept = new LinkedHashSet<>(); + accept.add(pt.getKeyName()); + filter.selectSubTypesToAccept(amenity.getType(), accept); + } getMapActivity().showQuickSearch(filter); } } @@ -699,9 +724,9 @@ public class AmenityMenuBuilder extends MenuBuilder { view.addView(button); } - if (textCuisineRow != null) { + if (textRow != null) { TextViewEx button = buildButtonInCollapsableView(context, true, false, false); - String name = textCuisineRow.textPrefix + ": " + textCuisineRow.text.toLowerCase(); + String name = textRow.textPrefix + ": " + textRow.text.toLowerCase(); button.setText(name); view.addView(button); } diff --git a/OsmAnd/src/net/osmand/plus/quickaction/QuickActionListFragment.java b/OsmAnd/src/net/osmand/plus/quickaction/QuickActionListFragment.java index a0adce7a5c..913903d041 100644 --- a/OsmAnd/src/net/osmand/plus/quickaction/QuickActionListFragment.java +++ b/OsmAnd/src/net/osmand/plus/quickaction/QuickActionListFragment.java @@ -109,8 +109,7 @@ public class QuickActionListFragment extends BaseOsmAndFragment implements Quick private void setUpToolbar(View view) { Toolbar toolbar = (Toolbar) view.findViewById(R.id.custom_toolbar); - Drawable back = getMyApplication().getIconsCache().getIcon(R.drawable.ic_arrow_back); - back.setColorFilter(ContextCompat.getColor(getContext(), R.color.color_white), PorterDuff.Mode.MULTIPLY); + Drawable back = getMyApplication().getIconsCache().getIcon(R.drawable.ic_arrow_back, R.color.color_white); toolbar.setNavigationIcon(back); toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); toolbar.setNavigationOnClickListener(new View.OnClickListener() {