From 4aa877f7f65b2b28566c7d5476466dceb992e3c6 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 29 Jan 2021 10:50:05 +0200 Subject: [PATCH 01/98] Travel - vehicle mode --- .../main/java/net/osmand/data/Amenity.java | 20 ++++ .../main/java/net/osmand/osm/MapPoiTypes.java | 8 +- .../res/layout/wikivoyage_travel_gpx_card.xml | 92 ++++++++++++++----- .../plus/wikivoyage/data/TravelGpx.java | 2 + .../plus/wikivoyage/data/TravelObfHelper.java | 2 + .../explore/travelcards/TravelGpxCard.java | 16 +++- 6 files changed, 113 insertions(+), 27 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java b/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java index 861a7c9b93..48e15df815 100644 --- a/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java +++ b/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java @@ -179,6 +179,26 @@ public class Amenity extends MapObject { } } + public void addProfileTag(Entry e) { + if (getAdditionalInfo("profile") == null) { + if (e.getKey().startsWith("tag_")) { + switch (e.getValue().trim()) { + case "bicycle": + case "cycling": + case "mtb": + setAdditionalInfo("profile", "bicycle"); + break; + case "hiking": + case "hike": + case "walking": + case "walk": + setAdditionalInfo("profile", "pedestrian"); + break; + } + } + } + } + @Override public String toStringEn() { return super.toStringEn() + ": " + type.getKeyName() + ":" + subType; diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java index e273fa4e7f..70d35e24ae 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java @@ -915,14 +915,18 @@ public class MapPoiTypes { if (!otag.equals(tag) && !otag.equals("name")) { PoiType pat = poiTypesByTag.get(otag + "/" + e.getValue()); if (pat == null) { - for(String splValue : e.getValue().split(";")) { + for (String splValue : e.getValue().split(";")) { PoiType ps = poiTypesByTag.get(otag + "/" + splValue.trim()); - if(ps != null) { + if (ps != null) { a.setAdditionalInfo(ps.getKeyName(), splValue.trim()); } } pat = poiTypesByTag.get(otag); + if (pat == null && otag.startsWith("tag_")) { + a.addProfileTag(e); + } } + if (pat != null && pat.isAdditional()) { a.setAdditionalInfo(pat.getKeyName(), e.getValue()); } diff --git a/OsmAnd/res/layout/wikivoyage_travel_gpx_card.xml b/OsmAnd/res/layout/wikivoyage_travel_gpx_card.xml index 44077a0dcd..2e11585264 100644 --- a/OsmAnd/res/layout/wikivoyage_travel_gpx_card.xml +++ b/OsmAnd/res/layout/wikivoyage_travel_gpx_card.xml @@ -139,31 +139,82 @@ - + android:background="?attr/btn_border_bg" + android:layout_marginLeft="@dimen/content_padding_half" + android:layout_marginStart="@dimen/content_padding_half"> + + + + + + + + + + + + @@ -172,7 +223,6 @@ diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelGpx.java b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelGpx.java index 185fdc922c..91d404510d 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelGpx.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelGpx.java @@ -6,8 +6,10 @@ public class TravelGpx extends TravelArticle { public static final String DIFF_ELE_UP = "diff_ele_up"; public static final String DIFF_ELE_DOWN = "diff_ele_down"; public static final String USER = "user"; + public static final String PROFILE = "profile"; public String user; + public String profile; public float totalDistance = 0; public double diffElevationUp = 0; public double diffElevationDown = 0; diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelObfHelper.java b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelObfHelper.java index f230929f1d..8622ed0996 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelObfHelper.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelObfHelper.java @@ -58,6 +58,7 @@ import static net.osmand.plus.helpers.GpxUiHelper.getGpxTitle; import static net.osmand.plus.wikivoyage.data.TravelGpx.DIFF_ELE_DOWN; import static net.osmand.plus.wikivoyage.data.TravelGpx.DIFF_ELE_UP; import static net.osmand.plus.wikivoyage.data.TravelGpx.DISTANCE; +import static net.osmand.plus.wikivoyage.data.TravelGpx.PROFILE; import static net.osmand.plus.wikivoyage.data.TravelGpx.USER; import static net.osmand.util.Algorithms.capitalizeFirstLetter; @@ -203,6 +204,7 @@ public class TravelObfHelper implements TravelHelper { LOG.debug(e.getMessage(), e); } res.user = Algorithms.emptyIfNull(amenity.getTagContent(USER)); + res.profile = Algorithms.emptyIfNull(amenity.getTagContent(PROFILE)); articles.put("en", res); return articles; } diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java index 1bc2409621..efd81315d3 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java @@ -2,16 +2,17 @@ package net.osmand.plus.wikivoyage.explore.travelcards; import android.graphics.drawable.Drawable; import android.view.View; +import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.fragment.app.FragmentActivity; import androidx.recyclerview.widget.RecyclerView; -import net.osmand.AndroidUtils; import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; +import net.osmand.plus.profiles.ProfileIcons; import net.osmand.plus.track.TrackMenuFragment; import net.osmand.plus.wikivoyage.data.TravelGpx; import net.osmand.plus.wikivoyage.data.TravelLocalDataHelper; @@ -40,10 +41,11 @@ public class TravelGpxCard extends BaseTravelCard { if (viewHolder instanceof TravelGpxVH) { final TravelGpxVH holder = (TravelGpxVH) viewHolder; holder.title.setText(article.getTitle()); - Drawable icon = getActiveIcon(R.drawable.ic_action_user_account_16); - holder.user.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); + holder.userIcon.setImageDrawable(getActiveIcon(R.drawable.ic_action_user_account_16)); holder.user.setText(article.user); - AndroidUtils.setBackground(app, holder.user, nightMode, R.drawable.btn_border_bg_light, R.drawable.btn_border_bg_dark); + ProfileIcons profileRes = ProfileIcons.valueOf(article.profile.toUpperCase()); + holder.profileIcon.setImageDrawable(getActiveIcon(profileRes.getResId())); + holder.profile.setText(profileRes.getTitleId()); holder.distance.setText(OsmAndFormatter.getFormattedDistance(article.totalDistance, app)); holder.diffElevationUp.setText(OsmAndFormatter.getFormattedAlt(article.diffElevationUp, app)); holder.diffElevationDown.setText(OsmAndFormatter.getFormattedAlt(article.diffElevationDown, app)); @@ -92,6 +94,9 @@ public class TravelGpxCard extends BaseTravelCard { public final TextView title; public final TextView user; + public final ImageView userIcon; + public final TextView profile; + public final ImageView profileIcon; public final TextView distance; public final TextView diffElevationUp; public final TextView diffElevationDown; @@ -104,6 +109,9 @@ public class TravelGpxCard extends BaseTravelCard { super(itemView); title = itemView.findViewById(R.id.title); user = itemView.findViewById(R.id.user_name); + userIcon = itemView.findViewById(R.id.user_icon); + profile = itemView.findViewById(R.id.profile); + profileIcon = itemView.findViewById(R.id.profile_icon); distance = itemView.findViewById(R.id.distance); diffElevationUp = itemView.findViewById(R.id.diff_ele_up); diffElevationDown = itemView.findViewById(R.id.diff_ele_down); From 30c5fda90ab673fbf7d5540cc609e71138f0ed9f Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 29 Jan 2021 11:45:54 +0200 Subject: [PATCH 02/98] Fix UI --- .../res/layout/wikivoyage_travel_gpx_card.xml | 1 + .../explore/SavedArticlesRvAdapter.java | 26 ++++++++++++------- .../explore/travelcards/TravelGpxCard.java | 12 ++++++--- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/OsmAnd/res/layout/wikivoyage_travel_gpx_card.xml b/OsmAnd/res/layout/wikivoyage_travel_gpx_card.xml index 2e11585264..b3aaf7e849 100644 --- a/OsmAnd/res/layout/wikivoyage_travel_gpx_card.xml +++ b/OsmAnd/res/layout/wikivoyage_travel_gpx_card.xml @@ -184,6 +184,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="?attr/btn_border_bg" + android:visibility="gone" android:layout_marginLeft="@dimen/content_padding_half" android:layout_marginStart="@dimen/content_padding_half"> diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/SavedArticlesRvAdapter.java b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/SavedArticlesRvAdapter.java index a01de6e6cb..7d1531d5e0 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/SavedArticlesRvAdapter.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/SavedArticlesRvAdapter.java @@ -18,12 +18,12 @@ import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; import com.squareup.picasso.RequestCreator; -import net.osmand.AndroidUtils; import net.osmand.PicassoUtils; import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; +import net.osmand.plus.profiles.ProfileIcons; import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.widgets.tools.CropCircleTransformation; import net.osmand.plus.wikipedia.WikiArticleHelper; @@ -31,11 +31,13 @@ import net.osmand.plus.wikivoyage.WikivoyageUtils; import net.osmand.plus.wikivoyage.data.TravelArticle; import net.osmand.plus.wikivoyage.data.TravelGpx; import net.osmand.plus.wikivoyage.data.TravelLocalDataHelper; -import net.osmand.plus.wikivoyage.explore.travelcards.TravelGpxCard; +import net.osmand.util.Algorithms; import java.util.ArrayList; import java.util.List; +import static net.osmand.plus.wikivoyage.explore.travelcards.TravelGpxCard.*; + public class SavedArticlesRvAdapter extends RecyclerView.Adapter { private static final int HEADER_TYPE = 0; @@ -81,7 +83,7 @@ public class SavedArticlesRvAdapter extends RecyclerView.Adapter Date: Fri, 29 Jan 2021 13:40:01 +0200 Subject: [PATCH 03/98] refactoring --- .../main/java/net/osmand/data/Amenity.java | 20 ------- .../main/java/net/osmand/osm/MapPoiTypes.java | 4 -- .../net/osmand/osm/edit/EntityParser.java | 56 +++++++++++++------ 3 files changed, 39 insertions(+), 41 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java b/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java index 48e15df815..861a7c9b93 100644 --- a/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java +++ b/OsmAnd-java/src/main/java/net/osmand/data/Amenity.java @@ -179,26 +179,6 @@ public class Amenity extends MapObject { } } - public void addProfileTag(Entry e) { - if (getAdditionalInfo("profile") == null) { - if (e.getKey().startsWith("tag_")) { - switch (e.getValue().trim()) { - case "bicycle": - case "cycling": - case "mtb": - setAdditionalInfo("profile", "bicycle"); - break; - case "hiking": - case "hike": - case "walking": - case "walk": - setAdditionalInfo("profile", "pedestrian"); - break; - } - } - } - } - @Override public String toStringEn() { return super.toStringEn() + ": " + type.getKeyName() + ":" + subType; diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java index 70d35e24ae..77507de50c 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java @@ -922,11 +922,7 @@ public class MapPoiTypes { } } pat = poiTypesByTag.get(otag); - if (pat == null && otag.startsWith("tag_")) { - a.addProfileTag(e); } - } - if (pat != null && pat.isAdditional()) { a.setAdditionalInfo(pat.getKeyName(), e.getValue()); } diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java b/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java index 9caa54b55c..9fb55fd64d 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java @@ -21,7 +21,7 @@ import net.osmand.osm.edit.Relation.RelationMember; import net.osmand.util.Algorithms; public class EntityParser { - + public static void parseMapObject(MapObject mo, Entity e, Map tags) { mo.setId(e.getId()); if(mo instanceof Amenity) { @@ -123,7 +123,7 @@ public class EntityParser { mo.setName(ref); } } - + private static void setNameFromBrand(MapObject mo, Map tags) { String ref = tags.get(OSMTagKey.BRAND.getValue()); if(ref != null){ @@ -140,7 +140,7 @@ public class EntityParser { op += " [" + ref + "]"; mo.setName(op); } - + private static String getWebSiteURL(Map tagValues, boolean checkWikipedia) { String siteUrl = null; @@ -170,14 +170,14 @@ public class EntityParser { } return siteUrl; } - - + + public static List parseAmenities(MapPoiTypes poiTypes, Entity entity, Map tags, List amenitiesList) { amenitiesList.clear(); // it could be collection of amenities boolean relation = entity instanceof Relation; - boolean purerelation = relation && + boolean purerelation = relation && !("multipolygon".equals(tags.get("type")) || "boundary".equals(tags.get("type"))); Collection> it = MapRenderingTypes.splitTagsIntoDifferentObjects(tags); for (Map ts : it) { @@ -193,6 +193,10 @@ public class EntityParser { if (wbs != null) { am.setAdditionalInfo("wikipedia", wbs); } + String tagCategory = getTagCategory(entity); + if (tagCategory != null) { + am.setAdditionalInfo("profile", tagCategory); + } if (checkAmenitiesToAdd(am, amenitiesList) && !"no".equals(am.getSubType())) { amenitiesList.add(am); } @@ -201,9 +205,27 @@ public class EntityParser { } return amenitiesList; } - - - + + private static String getTagCategory(Entity e) { + Map tags = e.getTags(); + for (String key : tags.keySet()) { + if (key.startsWith("tag_")) { + switch (tags.get(key).trim()) { + case "bicycle": + case "cycling": + case "mtb": + return "bicycle"; + case "hiking": + case "hike": + case "walking": + case "walk": + return "pedestrian"; + } + } + } + return null; + } + private static boolean checkAmenitiesToAdd(Amenity a, List amenitiesList){ // check amenity for duplication for(Amenity b : amenitiesList){ @@ -212,9 +234,9 @@ public class EntityParser { } } return true; - + } - + public static Building parseBuilding(Entity e){ Building b = new Building(); parseMapObject(b, e, e.getTags()); @@ -228,7 +250,7 @@ public class EntityParser { List nodes = ((Way) e).getNodes(); for(int i = 0; i < nodes.size(); i++) { Node node = nodes.get(i); - if(node != null && "yes".equals(node.getTag(OSMTagKey.ENTRANCE)) && + if(node != null && "yes".equals(node.getTag(OSMTagKey.ENTRANCE)) && !Algorithms.isEmpty(node.getTag(OSMTagKey.REF))) { b.addEntrance(node.getTag(OSMTagKey.REF), node.getLatLon()); } @@ -236,11 +258,11 @@ public class EntityParser { } return b; } - + public static City parseCity(Node el) { return parseCity(el, CityType.valueFromString(el.getTag(OSMTagKey.PLACE.getValue()))); } - + public static City parseCity(Entity el, CityType t) { if(t == null) { return null; @@ -252,15 +274,15 @@ public class EntityParser { c.setIsin(isin); return c; } - - + + public static TransportRoute parserRoute(Relation r, String ref){ TransportRoute rt = new TransportRoute(); parseMapObject(rt, r, r.getTags()); rt.setRef(ref); return rt; } - + public static TransportStop parseTransportStop(Entity e){ TransportStop st = new TransportStop(); parseMapObject(st, e, e.getTags()); From 2ae5bb6301d52328a1e4eb42a127ebaafbd083dd Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 29 Jan 2021 13:45:09 +0200 Subject: [PATCH 04/98] refactoring --- OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java index 77507de50c..e273fa4e7f 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java @@ -915,14 +915,14 @@ public class MapPoiTypes { if (!otag.equals(tag) && !otag.equals("name")) { PoiType pat = poiTypesByTag.get(otag + "/" + e.getValue()); if (pat == null) { - for (String splValue : e.getValue().split(";")) { + for(String splValue : e.getValue().split(";")) { PoiType ps = poiTypesByTag.get(otag + "/" + splValue.trim()); - if (ps != null) { + if(ps != null) { a.setAdditionalInfo(ps.getKeyName(), splValue.trim()); } } pat = poiTypesByTag.get(otag); - } + } if (pat != null && pat.isAdditional()) { a.setAdditionalInfo(pat.getKeyName(), e.getValue()); } From e150d39c61fe9597c8ecac4dee2611b8ae76f353 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 29 Jan 2021 13:56:10 +0200 Subject: [PATCH 05/98] rename --- .../src/main/java/net/osmand/osm/edit/EntityParser.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java b/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java index 9fb55fd64d..e21927477a 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java @@ -193,9 +193,9 @@ public class EntityParser { if (wbs != null) { am.setAdditionalInfo("wikipedia", wbs); } - String tagCategory = getTagCategory(entity); - if (tagCategory != null) { - am.setAdditionalInfo("profile", tagCategory); + String profileName = getProfileName(entity); + if (profileName != null) { + am.setAdditionalInfo("profile", profileName); } if (checkAmenitiesToAdd(am, amenitiesList) && !"no".equals(am.getSubType())) { amenitiesList.add(am); @@ -206,7 +206,7 @@ public class EntityParser { return amenitiesList; } - private static String getTagCategory(Entity e) { + private static String getProfileName(Entity e) { Map tags = e.getTags(); for (String key : tags.keySet()) { if (key.startsWith("tag_")) { From d8ff9fb1e7e29becba9ce394feff12cb09bac0d5 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Sat, 30 Jan 2021 17:02:37 +0200 Subject: [PATCH 06/98] Add route activity type --- .../net/osmand/osm/edit/EntityParser.java | 24 ------------------- .../res/layout/wikivoyage_travel_gpx_card.xml | 6 ++--- .../plus/wikivoyage/data/TravelGpx.java | 4 ++-- .../plus/wikivoyage/data/TravelObfHelper.java | 4 ++-- .../explore/SavedArticlesRvAdapter.java | 10 ++++---- .../explore/travelcards/TravelGpxCard.java | 22 ++++++++--------- 6 files changed, 23 insertions(+), 47 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java b/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java index e21927477a..bd37de6ba0 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/edit/EntityParser.java @@ -193,10 +193,6 @@ public class EntityParser { if (wbs != null) { am.setAdditionalInfo("wikipedia", wbs); } - String profileName = getProfileName(entity); - if (profileName != null) { - am.setAdditionalInfo("profile", profileName); - } if (checkAmenitiesToAdd(am, amenitiesList) && !"no".equals(am.getSubType())) { amenitiesList.add(am); } @@ -206,26 +202,6 @@ public class EntityParser { return amenitiesList; } - private static String getProfileName(Entity e) { - Map tags = e.getTags(); - for (String key : tags.keySet()) { - if (key.startsWith("tag_")) { - switch (tags.get(key).trim()) { - case "bicycle": - case "cycling": - case "mtb": - return "bicycle"; - case "hiking": - case "hike": - case "walking": - case "walk": - return "pedestrian"; - } - } - } - return null; - } - private static boolean checkAmenitiesToAdd(Amenity a, List amenitiesList){ // check amenity for duplication for(Amenity b : amenitiesList){ diff --git a/OsmAnd/res/layout/wikivoyage_travel_gpx_card.xml b/OsmAnd/res/layout/wikivoyage_travel_gpx_card.xml index b3aaf7e849..963c27c9f3 100644 --- a/OsmAnd/res/layout/wikivoyage_travel_gpx_card.xml +++ b/OsmAnd/res/layout/wikivoyage_travel_gpx_card.xml @@ -180,7 +180,7 @@ Date: Tue, 2 Feb 2021 23:34:57 +0200 Subject: [PATCH 07/98] Add activity types --- .../net/osmand/osm/RouteActivityType.java | 50 +++++++++++++++---- OsmAnd/res/values/strings.xml | 13 +++++ .../explore/travelcards/TravelGpxCard.java | 21 +++++--- 3 files changed, 67 insertions(+), 17 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java b/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java index 28c9b11551..06471b933f 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java @@ -1,29 +1,58 @@ package net.osmand.osm; public enum RouteActivityType { - WATER("Water", "yellow"), WINTER("Winter", "yellow"), SNOWMOBILE("Snowmobile", "yellow"), RIDING("Riding", "yellow"), RACING("Racing", "yellow"), - MOUNTAINBIKE("Mountainbike", "blue"), CYCLING("Cycling", "blue"), - HIKING("Hiking", "orange"), RUNNING("Running", "orange"), WALKING("Walking", "orange"), - OFFROAD("Off-road", "yellow"), - MOTORBIKE("Motorbike", "green"), CAR("Car", "green"); + WATER("Water", "yellow", "ic_action_motorboat", "activity_type_water"), + WINTER("Winter", "yellow", "ic_action_skiing", "activity_type_winter"), + SNOWMOBILE("Snowmobile", "yellow", "ic_action_snowmobile", "activity_type_snowmobile"), + RIDING("Riding", "yellow", "ic_action_horse", "activity_type_riding"), + RACING("Racing", "yellow", "ic_action_point_destination", "activity_type_racing"), + MOUNTAINBIKE("Mountainbike", "blue", "ic_action_bicycle_dark", "activity_type_mountainbike"), + CYCLING("Cycling", "blue", "ic_action_bicycle_dark", "activity_type_cycling"), + HIKING("Hiking", "orange", "ic_action_trekking_dark", "activity_type_hiking"), + RUNNING("Running", "orange", "ic_action_pedestrian_dark", "activity_type_running"), + WALKING("Walking", "orange", "ic_action_pedestrian_dark", "activity_type_walking"), + OFFROAD("Off-road", "yellow", "ic_action_offroad", "activity_type_offroad"), + MOTORBIKE("Motorbike", "green", "ic_action_motorcycle_dark", "activity_type_motorbike"), + CAR("Car", "green", "ic_action_car_dark", "activity_type_car"); // less specific bottom order String name; String color; + String icon; + String title; - private RouteActivityType(String nm, String clr) { + RouteActivityType(String nm, String clr, String icon, String title) { this.name = nm; this.color = clr; + this.icon = icon; + this.title = title; } - + public String getName() { return name; } - + public String getColor() { return color; } - + + public String getIcon() { + return icon; + } + + public String getTitle() { + return title; + } + + public static RouteActivityType getTypeFromName(String name) { + for (RouteActivityType rat : values()) { + if (rat.name().equalsIgnoreCase(name)) { + return rat; + } + } + return null; + } + public static RouteActivityType getTypeFromTags(String[] tags) { RouteActivityType activityType = null; for (String tg : tags) { @@ -36,7 +65,7 @@ public enum RouteActivityType { } return activityType; } - + public static RouteActivityType convertFromOsmGPXTag(String tg) { String t = tg.toLowerCase(); if ("mountain hiking".equalsIgnoreCase(t)) { @@ -214,5 +243,4 @@ public enum RouteActivityType { } return null; } - } \ No newline at end of file diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 1d23e9db07..f17e06d46f 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -12,6 +12,19 @@ --> + Car + Motorbike + Off-road + Walking + Running + Hiking + Cycling + Mountainbike + Racing + Riding + Snowmobile + Winter + Water Hillshade / Slope / Contour lines Select edits for upload Uploaded %1$d of %2$d diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java index 3677da0f41..c602f02a03 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java @@ -9,14 +9,13 @@ import androidx.annotation.NonNull; import androidx.fragment.app.FragmentActivity; import androidx.recyclerview.widget.RecyclerView; +import net.osmand.osm.RouteActivityType; import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; -import net.osmand.plus.profiles.ProfileIcons; import net.osmand.plus.track.TrackMenuFragment; import net.osmand.plus.wikivoyage.data.TravelGpx; import net.osmand.plus.wikivoyage.data.TravelLocalDataHelper; -import net.osmand.util.Algorithms; import java.io.File; @@ -44,10 +43,10 @@ public class TravelGpxCard extends BaseTravelCard { holder.title.setText(article.getTitle()); holder.userIcon.setImageDrawable(getActiveIcon(R.drawable.ic_action_user_account_16)); holder.user.setText(article.user); - if (!Algorithms.isEmpty(article.activityType)) { - ProfileIcons profileRes = ProfileIcons.valueOf(article.activityType.toUpperCase()); - holder.activityTypeIcon.setImageDrawable(getActiveIcon(profileRes.getResId())); - holder.activityType.setText(profileRes.getTitleId()); + RouteActivityType activityType = RouteActivityType.getTypeFromName(article.activityType); + if (activityType != null) { + holder.activityTypeIcon.setImageDrawable(getActivityTypeIcon(activityType)); + holder.activityType.setText(getActivityTypeName(activityType)); holder.activityTypeLabel.setVisibility(View.VISIBLE); } holder.distance.setText(OsmAndFormatter.getFormattedDistance(article.totalDistance, app)); @@ -72,6 +71,16 @@ public class TravelGpxCard extends BaseTravelCard { } } + private Drawable getActivityTypeIcon(RouteActivityType activityType) { + int iconId = app.getResources().getIdentifier(activityType.getIcon(), "drawable", app.getPackageName()); + return getActiveIcon(iconId > 0 ? iconId : R.drawable.ic_action_route_distance); + } + + private int getActivityTypeName(RouteActivityType activityType) { + int titleId = app.getResources().getIdentifier(activityType.getTitle(), "string", app.getPackageName()); + return titleId > 0 ? titleId : R.string.layer_route; + } + private void updateSaveButton(final TravelGpxVH holder) { if (article != null) { final TravelLocalDataHelper helper = app.getTravelHelper().getBookmarksHelper(); From 0672f140aff60eb727954001436c345daaf6fa61 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Wed, 3 Feb 2021 11:24:22 +0200 Subject: [PATCH 08/98] Check resource --- .../explore/travelcards/TravelGpxCard.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java index c602f02a03..69772bac1c 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java @@ -5,7 +5,9 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; +import androidx.annotation.StringRes; import androidx.fragment.app.FragmentActivity; import androidx.recyclerview.widget.RecyclerView; @@ -45,9 +47,13 @@ public class TravelGpxCard extends BaseTravelCard { holder.user.setText(article.user); RouteActivityType activityType = RouteActivityType.getTypeFromName(article.activityType); if (activityType != null) { - holder.activityTypeIcon.setImageDrawable(getActivityTypeIcon(activityType)); - holder.activityType.setText(getActivityTypeName(activityType)); - holder.activityTypeLabel.setVisibility(View.VISIBLE); + int iconId = getActivityTypeIcon(activityType); + int titleId = getActivityTypeTitle(activityType); + if (iconId > 0 && titleId > 0) { + holder.activityTypeIcon.setImageDrawable(getActiveIcon(iconId)); + holder.activityType.setText(titleId); + holder.activityTypeLabel.setVisibility(View.VISIBLE); + } } holder.distance.setText(OsmAndFormatter.getFormattedDistance(article.totalDistance, app)); holder.diffElevationUp.setText(OsmAndFormatter.getFormattedAlt(article.diffElevationUp, app)); @@ -71,14 +77,14 @@ public class TravelGpxCard extends BaseTravelCard { } } - private Drawable getActivityTypeIcon(RouteActivityType activityType) { - int iconId = app.getResources().getIdentifier(activityType.getIcon(), "drawable", app.getPackageName()); - return getActiveIcon(iconId > 0 ? iconId : R.drawable.ic_action_route_distance); + @DrawableRes + private int getActivityTypeIcon(RouteActivityType activityType) { + return app.getResources().getIdentifier(activityType.getIcon(), "drawable", app.getPackageName()); } - private int getActivityTypeName(RouteActivityType activityType) { - int titleId = app.getResources().getIdentifier(activityType.getTitle(), "string", app.getPackageName()); - return titleId > 0 ? titleId : R.string.layer_route; + @StringRes + private int getActivityTypeTitle(RouteActivityType activityType) { + return app.getResources().getIdentifier(activityType.getTitle(), "string", app.getPackageName()); } private void updateSaveButton(final TravelGpxVH holder) { From e9b02ae74bb32b9151740c595ab6dfa0f355c79a Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Wed, 3 Feb 2021 16:52:24 +0200 Subject: [PATCH 09/98] Renew activity icon --- .../net/osmand/osm/RouteActivityType.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java b/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java index 06471b933f..e7a7a0600a 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java @@ -1,19 +1,19 @@ package net.osmand.osm; public enum RouteActivityType { - WATER("Water", "yellow", "ic_action_motorboat", "activity_type_water"), - WINTER("Winter", "yellow", "ic_action_skiing", "activity_type_winter"), - SNOWMOBILE("Snowmobile", "yellow", "ic_action_snowmobile", "activity_type_snowmobile"), - RIDING("Riding", "yellow", "ic_action_horse", "activity_type_riding"), - RACING("Racing", "yellow", "ic_action_point_destination", "activity_type_racing"), - MOUNTAINBIKE("Mountainbike", "blue", "ic_action_bicycle_dark", "activity_type_mountainbike"), - CYCLING("Cycling", "blue", "ic_action_bicycle_dark", "activity_type_cycling"), - HIKING("Hiking", "orange", "ic_action_trekking_dark", "activity_type_hiking"), - RUNNING("Running", "orange", "ic_action_pedestrian_dark", "activity_type_running"), - WALKING("Walking", "orange", "ic_action_pedestrian_dark", "activity_type_walking"), - OFFROAD("Off-road", "yellow", "ic_action_offroad", "activity_type_offroad"), - MOTORBIKE("Motorbike", "green", "ic_action_motorcycle_dark", "activity_type_motorbike"), - CAR("Car", "green", "ic_action_car_dark", "activity_type_car"); + WATER("Water", "yellow", "mx_special_kayak", "activity_type_water"), + WINTER("Winter", "yellow", "mx_special_skiing", "activity_type_winter"), + SNOWMOBILE("Snowmobile", "yellow", "mx_special_snowmobile", "activity_type_snowmobile"), + RIDING("Riding", "yellow", "mx_special_horse", "activity_type_riding"), + RACING("Racing", "yellow", "mx_raceway", "activity_type_racing"), + MOUNTAINBIKE("Mountainbike", "blue", "mx_sport_cycling", "activity_type_mountainbike"), + CYCLING("Cycling", "blue", "mx_special_bicycle", "activity_type_cycling"), + HIKING("Hiking", "orange", "mx_special_trekking", "activity_type_hiking"), + RUNNING("Running", "orange", "mx_running", "activity_type_running"), + WALKING("Walking", "orange", " mx_special_walking", "activity_type_walking"), + OFFROAD("Off-road", "yellow", "mx_special_offroad", "activity_type_offroad"), + MOTORBIKE("Motorbike", "green", "mx_special_motorcycle", "activity_type_motorbike"), + CAR("Car", "green", "mx_shop_car", "activity_type_car"); // less specific bottom order String name; From f20a8882bde3bdc16dac8f828c7a39635255fdeb Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Sat, 6 Feb 2021 13:11:49 +0200 Subject: [PATCH 10/98] Fix get activity type name and icon --- .../net/osmand/osm/RouteActivityType.java | 34 ++++++++----------- OsmAnd/res/values/strings.xml | 26 +++++++------- OsmAnd/src/net/osmand/AndroidUtils.java | 6 ++++ .../explore/travelcards/TravelGpxCard.java | 19 ++++++----- 4 files changed, 43 insertions(+), 42 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java b/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java index e7a7a0600a..6f8a0b0e9a 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java @@ -1,31 +1,29 @@ package net.osmand.osm; public enum RouteActivityType { - WATER("Water", "yellow", "mx_special_kayak", "activity_type_water"), - WINTER("Winter", "yellow", "mx_special_skiing", "activity_type_winter"), - SNOWMOBILE("Snowmobile", "yellow", "mx_special_snowmobile", "activity_type_snowmobile"), - RIDING("Riding", "yellow", "mx_special_horse", "activity_type_riding"), - RACING("Racing", "yellow", "mx_raceway", "activity_type_racing"), - MOUNTAINBIKE("Mountainbike", "blue", "mx_sport_cycling", "activity_type_mountainbike"), - CYCLING("Cycling", "blue", "mx_special_bicycle", "activity_type_cycling"), - HIKING("Hiking", "orange", "mx_special_trekking", "activity_type_hiking"), - RUNNING("Running", "orange", "mx_running", "activity_type_running"), - WALKING("Walking", "orange", " mx_special_walking", "activity_type_walking"), - OFFROAD("Off-road", "yellow", "mx_special_offroad", "activity_type_offroad"), - MOTORBIKE("Motorbike", "green", "mx_special_motorcycle", "activity_type_motorbike"), - CAR("Car", "green", "mx_shop_car", "activity_type_car"); + WATER("water", "yellow", "special_kayak"), + WINTER("winter", "yellow", "special_skiing"), + SNOWMOBILE("snowmobile", "yellow", "special_snowmobile"), + RIDING("riding", "yellow", "special_horse"), + RACING("racing", "yellow", "raceway"), + MOUNTAINBIKE("mountainbike", "blue", "sport_cycling"), + CYCLING("cycling", "blue", "special_bicycle"), + HIKING("hiking", "orange", "special_trekking"), + RUNNING("running", "orange", "running"), + WALKING("walking", "orange", "special_walking"), + OFFROAD("offroad", "yellow", "special_offroad"), + MOTORBIKE("motorbike", "green", "special_motorcycle"), + CAR("car", "green", "shop_car"); // less specific bottom order String name; String color; String icon; - String title; - RouteActivityType(String nm, String clr, String icon, String title) { + RouteActivityType(String nm, String clr, String icon) { this.name = nm; this.color = clr; this.icon = icon; - this.title = title; } public String getName() { @@ -40,10 +38,6 @@ public enum RouteActivityType { return icon; } - public String getTitle() { - return title; - } - public static RouteActivityType getTypeFromName(String name) { for (RouteActivityType rat : values()) { if (rat.name().equalsIgnoreCase(name)) { diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 0c2feea060..8b1a73aa95 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -12,19 +12,19 @@ --> - Car - Motorbike - Off-road - Walking - Running - Hiking - Cycling - Mountainbike - Racing - Riding - Snowmobile - Winter - Water + Car + Motorbike + Off-road + Walking + Running + Hiking + Cycling + Mountainbike + Racing + Riding + Snowmobile + Winter + Water Login to OpenPlaceReviews Use test.openplacereviews.org OpenPlaceReviews diff --git a/OsmAnd/src/net/osmand/AndroidUtils.java b/OsmAnd/src/net/osmand/AndroidUtils.java index 545e7b7391..ce7547a2c4 100644 --- a/OsmAnd/src/net/osmand/AndroidUtils.java +++ b/OsmAnd/src/net/osmand/AndroidUtils.java @@ -951,6 +951,12 @@ public class AndroidUtils { return value != null ? value : propertyValue; } + + public static String getActivityTypeStringPropertyName(Context ctx, String propertyName, String defValue) { + String value = getStringByProperty(ctx, "activity_type_" + propertyName + "_name"); + return value != null ? value : defValue; + } + private static String getStringByProperty(@NonNull Context ctx, @NonNull String property) { try { Field field = R.string.class.getField(property); diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java index 69772bac1c..119df5a54a 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java @@ -7,10 +7,10 @@ import android.widget.TextView; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; -import androidx.annotation.StringRes; import androidx.fragment.app.FragmentActivity; import androidx.recyclerview.widget.RecyclerView; +import net.osmand.AndroidUtils; import net.osmand.osm.RouteActivityType; import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmandApplication; @@ -21,6 +21,8 @@ import net.osmand.plus.wikivoyage.data.TravelLocalDataHelper; import java.io.File; +import static net.osmand.util.Algorithms.capitalizeFirstLetterAndLowercase; + public class TravelGpxCard extends BaseTravelCard { public static final int TYPE = 3; @@ -48,12 +50,11 @@ public class TravelGpxCard extends BaseTravelCard { RouteActivityType activityType = RouteActivityType.getTypeFromName(article.activityType); if (activityType != null) { int iconId = getActivityTypeIcon(activityType); - int titleId = getActivityTypeTitle(activityType); - if (iconId > 0 && titleId > 0) { + if (iconId > 0) { holder.activityTypeIcon.setImageDrawable(getActiveIcon(iconId)); - holder.activityType.setText(titleId); - holder.activityTypeLabel.setVisibility(View.VISIBLE); } + holder.activityType.setText(getActivityTypeTitle(activityType)); + holder.activityTypeLabel.setVisibility(View.VISIBLE); } holder.distance.setText(OsmAndFormatter.getFormattedDistance(article.totalDistance, app)); holder.diffElevationUp.setText(OsmAndFormatter.getFormattedAlt(article.diffElevationUp, app)); @@ -79,12 +80,12 @@ public class TravelGpxCard extends BaseTravelCard { @DrawableRes private int getActivityTypeIcon(RouteActivityType activityType) { - return app.getResources().getIdentifier(activityType.getIcon(), "drawable", app.getPackageName()); + return app.getResources().getIdentifier("mx_" + activityType.getIcon(), "drawable", app.getPackageName()); } - @StringRes - private int getActivityTypeTitle(RouteActivityType activityType) { - return app.getResources().getIdentifier(activityType.getTitle(), "string", app.getPackageName()); + private String getActivityTypeTitle(RouteActivityType activityType) { + return AndroidUtils.getActivityTypeStringPropertyName(app, activityType.getName(), + capitalizeFirstLetterAndLowercase(activityType.getName())); } private void updateSaveButton(final TravelGpxVH holder) { From e261150279158cfe3d1e4afbf42391756f9d3a20 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Mon, 8 Feb 2021 16:41:10 +0200 Subject: [PATCH 11/98] Convert RouteActivityType to class --- .../net/osmand/osm/RouteActivityType.java | 64 +++++++++++++------ 1 file changed, 44 insertions(+), 20 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java b/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java index 6f8a0b0e9a..01d5a5c98e 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java @@ -1,29 +1,32 @@ package net.osmand.osm; -public enum RouteActivityType { - WATER("water", "yellow", "special_kayak"), - WINTER("winter", "yellow", "special_skiing"), - SNOWMOBILE("snowmobile", "yellow", "special_snowmobile"), - RIDING("riding", "yellow", "special_horse"), - RACING("racing", "yellow", "raceway"), - MOUNTAINBIKE("mountainbike", "blue", "sport_cycling"), - CYCLING("cycling", "blue", "special_bicycle"), - HIKING("hiking", "orange", "special_trekking"), - RUNNING("running", "orange", "running"), - WALKING("walking", "orange", "special_walking"), - OFFROAD("offroad", "yellow", "special_offroad"), - MOTORBIKE("motorbike", "green", "special_motorcycle"), - CAR("car", "green", "shop_car"); - // less specific bottom order +import java.util.ArrayList; +import java.util.List; +public class RouteActivityType { + private static final List values = new ArrayList<>(); + + public static final RouteActivityType WATER = createType("water", "yellow").icon("special_kayak").reg(); + public static final RouteActivityType WINTER = createType("winter", "yellow").icon("special_skiing").reg(); + public static final RouteActivityType SNOWMOBILE = createType("snowmobile", "yellow").icon("special_snowmobile").reg(); + public static final RouteActivityType RIDING = createType("riding", "yellow").icon("special_horse").reg(); + public static final RouteActivityType RACING = createType("racing", "yellow").icon("raceway").reg(); + public static final RouteActivityType MOUNTAINBIKE = createType("mountainbike", "blue").icon("sport_cycling").reg(); + public static final RouteActivityType CYCLING = createType("cycling", "blue").icon("special_bicycle").reg(); + public static final RouteActivityType HIKING = createType("hiking", "orange").icon("special_trekking").reg(); + public static final RouteActivityType RUNNING = createType("running", "orange").icon("running").reg(); + public static final RouteActivityType WALKING = createType("walking", "orange").icon("special_walking").reg(); + public static final RouteActivityType OFFROAD = createType("offroad", "yellow").icon("special_offroad").reg(); + public static final RouteActivityType MOTORBIKE = createType("motorbike", "green").icon("special_motorcycle").reg(); + public static final RouteActivityType CAR = createType("car", "green").icon("shop_car").reg(); + // less specific bottom order String name; String color; String icon; - RouteActivityType(String nm, String clr, String icon) { + RouteActivityType(String nm, String clr) { this.name = nm; this.color = clr; - this.icon = icon; } public String getName() { @@ -39,20 +42,26 @@ public enum RouteActivityType { } public static RouteActivityType getTypeFromName(String name) { - for (RouteActivityType rat : values()) { - if (rat.name().equalsIgnoreCase(name)) { + for (RouteActivityType rat : values) { + if (rat.name.equalsIgnoreCase(name)) { return rat; } } return null; } + private static RouteActivityTypeBuilder createType(String name, String color) { + RouteActivityTypeBuilder builder = new RouteActivityTypeBuilder(); + builder.routeActivityType = new RouteActivityType(name, color); + return builder; + } + public static RouteActivityType getTypeFromTags(String[] tags) { RouteActivityType activityType = null; for (String tg : tags) { RouteActivityType rat = RouteActivityType.convertFromOsmGPXTag(tg); if (rat != null) { - if (activityType == null || activityType.ordinal() > rat.ordinal()) { + if (activityType == null || values.indexOf(activityType) > values.indexOf(rat)) { activityType = rat; } } @@ -237,4 +246,19 @@ public enum RouteActivityType { } return null; } + + public static class RouteActivityTypeBuilder { + + private RouteActivityType routeActivityType; + + public RouteActivityTypeBuilder icon(String icon) { + routeActivityType.icon = icon; + return this; + } + + private RouteActivityType reg() { + values.add(routeActivityType); + return routeActivityType; + } + } } \ No newline at end of file From d01ff166d1e2d85cb9fbd75eb3553e42c161eb87 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 8 Feb 2021 17:38:21 +0200 Subject: [PATCH 12/98] Open wpt menu from TrackMenuFragment --- OsmAnd/src/net/osmand/plus/track/TrackMenuFragment.java | 4 +++- OsmAnd/src/net/osmand/plus/track/TrackPointsCard.java | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/track/TrackMenuFragment.java b/OsmAnd/src/net/osmand/plus/track/TrackMenuFragment.java index 6776ea8354..13b3188933 100644 --- a/OsmAnd/src/net/osmand/plus/track/TrackMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/track/TrackMenuFragment.java @@ -828,7 +828,9 @@ public class TrackMenuFragment extends ContextMenuScrollFragment implements Card @Override protected void onHeaderClick() { - updateMenuState(); + if (getCurrentMenuState() == MenuState.HEADER_ONLY) { + updateMenuState(); + } } private void adjustMapPosition(int y) { diff --git a/OsmAnd/src/net/osmand/plus/track/TrackPointsCard.java b/OsmAnd/src/net/osmand/plus/track/TrackPointsCard.java index ec3bc0446e..d605f9ed43 100644 --- a/OsmAnd/src/net/osmand/plus/track/TrackPointsCard.java +++ b/OsmAnd/src/net/osmand/plus/track/TrackPointsCard.java @@ -26,6 +26,8 @@ import net.osmand.AndroidUtils; import net.osmand.Collator; import net.osmand.GPXUtilities.WptPt; import net.osmand.OsmAndCollator; +import net.osmand.data.LatLon; +import net.osmand.data.PointDescription; import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup; import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem; import net.osmand.plus.GpxSelectionHelper.GpxDisplayItemType; @@ -173,6 +175,12 @@ public class TrackPointsCard extends BaseCard implements OnChildClickListener, O @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { + GpxDisplayItem item = adapter.getChild(groupPosition, childPosition); + if (item != null && item.locationStart != null) { + LatLon location = new LatLon(item.locationStart.lat, item.locationStart.lon); + PointDescription description = new PointDescription(PointDescription.POINT_TYPE_WPT, item.name); + mapActivity.getContextMenu().show(location, description, item.locationStart); + } return true; } From 2efd0cad00b55700fe06d7faa55b7ce0fb2a37b9 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Mon, 8 Feb 2021 18:27:18 +0200 Subject: [PATCH 13/98] Add custom activity type --- .../src/main/java/net/osmand/osm/RouteActivityType.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java b/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java index 01d5a5c98e..65fa50bf68 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/RouteActivityType.java @@ -5,6 +5,8 @@ import java.util.List; public class RouteActivityType { private static final List values = new ArrayList<>(); + public static final String DEFAULT_ICON = "special_marker"; + public static final String DEFAULT_COLOR = "orange"; public static final RouteActivityType WATER = createType("water", "yellow").icon("special_kayak").reg(); public static final RouteActivityType WINTER = createType("winter", "yellow").icon("special_skiing").reg(); @@ -47,7 +49,7 @@ public class RouteActivityType { return rat; } } - return null; + return createType(name.toLowerCase(), DEFAULT_COLOR).icon(DEFAULT_ICON).reg(); } private static RouteActivityTypeBuilder createType(String name, String color) { From 02117a8ffd79f8432d36f2c1acdac715a7a0d28c Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 8 Feb 2021 18:34:08 +0200 Subject: [PATCH 14/98] Add description to overview card --- OsmAnd/res/layout/gpx_overview_fragment.xml | 16 +++++++++ .../osmand/plus/track/DescriptionCard.java | 18 +++------- .../GpxReadDescriptionDialogFragment.java | 18 +++++----- .../net/osmand/plus/track/OverviewCard.java | 33 +++++++++++++++++++ .../plus/wikipedia/WikiArticleHelper.java | 11 +++++++ 5 files changed, 73 insertions(+), 23 deletions(-) diff --git a/OsmAnd/res/layout/gpx_overview_fragment.xml b/OsmAnd/res/layout/gpx_overview_fragment.xml index 426633eb83..3b205ae60e 100644 --- a/OsmAnd/res/layout/gpx_overview_fragment.xml +++ b/OsmAnd/res/layout/gpx_overview_fragment.xml @@ -6,6 +6,22 @@ android:layout_height="wrap_content" android:orientation="vertical"> + + \n" + content + "\n"; } - public static void showInstance(@NonNull FragmentActivity activity, @NonNull String title, @NonNull String imageUrl, @NonNull String description) { + public static void showInstance(@NonNull FragmentActivity activity, @NonNull String title, @Nullable String imageUrl, @NonNull String description) { FragmentManager fragmentManager = activity.getSupportFragmentManager(); if (!fragmentManager.isStateSaved()) { Bundle args = new Bundle(); diff --git a/OsmAnd/src/net/osmand/plus/track/OverviewCard.java b/OsmAnd/src/net/osmand/plus/track/OverviewCard.java index 5d46a69c25..d0a396499d 100644 --- a/OsmAnd/src/net/osmand/plus/track/OverviewCard.java +++ b/OsmAnd/src/net/osmand/plus/track/OverviewCard.java @@ -4,7 +4,9 @@ import android.annotation.SuppressLint; import android.graphics.drawable.Drawable; import android.view.MotionEvent; import android.view.View; +import android.view.View.OnClickListener; import android.widget.ImageView; +import android.widget.TextView; import androidx.annotation.ColorRes; import androidx.annotation.DrawableRes; @@ -13,18 +15,23 @@ import androidx.appcompat.widget.AppCompatImageView; import androidx.recyclerview.widget.RecyclerView; import net.osmand.GPXUtilities.GPXFile; +import net.osmand.GPXUtilities.Metadata; import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.helpers.AndroidUiHelper; import net.osmand.plus.myplaces.SegmentActionsListener; import net.osmand.plus.routepreparationmenu.cards.BaseCard; +import net.osmand.util.Algorithms; +import static net.osmand.plus.myplaces.TrackActivityFragmentAdapter.getMetadataImageLink; import static net.osmand.plus.myplaces.TrackActivityFragmentAdapter.isGpxFileSelected; import static net.osmand.plus.track.OptionsCard.APPEARANCE_BUTTON_INDEX; import static net.osmand.plus.track.OptionsCard.DIRECTIONS_BUTTON_INDEX; import static net.osmand.plus.track.OptionsCard.EDIT_BUTTON_INDEX; import static net.osmand.plus.track.OptionsCard.SHOW_ON_MAP_BUTTON_INDEX; +import static net.osmand.plus.wikipedia.WikiArticleHelper.getFirstParagraph; public class OverviewCard extends BaseCard { @@ -63,6 +70,7 @@ public class OverviewCard extends BaseCard { RecyclerView blocksView = view.findViewById(R.id.recycler_overview); blockStatisticsBuilder.setBlocksView(blocksView); + setupDescription(); initShowButton(iconColorDef, iconColorPres); initAppearanceButton(iconColorDef, iconColorPres); if (fileAvailable) { @@ -125,6 +133,31 @@ public class OverviewCard extends BaseCard { iv.setImageDrawable(icon); } + private void setupDescription() { + GPXFile gpxFile = getGPXFile(); + if (gpxFile.metadata == null) { + gpxFile.metadata = new Metadata(); + } + + TextView description = view.findViewById(R.id.description); + final String descriptionHtml = gpxFile.metadata.getDescription(); + if (Algorithms.isBlank(descriptionHtml)) { + AndroidUiHelper.updateVisibility(description, false); + } else { + description.setText(getFirstParagraph(descriptionHtml)); + description.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + GPXFile gpxFile = getGPXFile(); + String title = gpxFile.metadata.getArticleTitle(); + String imageUrl = getMetadataImageLink(gpxFile.metadata); + GpxReadDescriptionDialogFragment.showInstance(mapActivity, title, imageUrl, descriptionHtml); + } + }); + AndroidUiHelper.updateVisibility(description, true); + } + } + private void setOnTouchItem(View item, final ImageView image, final ImageView filled, @DrawableRes final Integer resId, @ColorRes final int colorDef, @ColorRes final int colorPres) { item.setOnTouchListener(new View.OnTouchListener() { @SuppressLint("ClickableViewAccessibility") diff --git a/OsmAnd/src/net/osmand/plus/wikipedia/WikiArticleHelper.java b/OsmAnd/src/net/osmand/plus/wikipedia/WikiArticleHelper.java index 56137a780c..7b72024b12 100644 --- a/OsmAnd/src/net/osmand/plus/wikipedia/WikiArticleHelper.java +++ b/OsmAnd/src/net/osmand/plus/wikipedia/WikiArticleHelper.java @@ -333,6 +333,17 @@ public class WikiArticleHelper { return res.toString(); } + @Nullable + public static String getFirstParagraph(String descriptionHtml) { + if (descriptionHtml != null) { + String firstParagraph = WikiArticleHelper.getPartialContent(descriptionHtml); + if (!Algorithms.isEmpty(firstParagraph)) { + return firstParagraph; + } + } + return descriptionHtml; + } + public static String buildTravelUrl(String url, String lang) { String title = url.replace(" ", "_"); try { From 0b7816eb84af3ccd83bbfb34aa7e5b6db3ff36f7 Mon Sep 17 00:00:00 2001 From: nasr pen Date: Mon, 8 Feb 2021 16:36:16 +0000 Subject: [PATCH 15/98] Translated using Weblate (Arabic) Currently translated at 99.9% (3659 of 3661 strings) --- OsmAnd/res/values-ar/strings.xml | 130 +++++++++++++++---------------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index d12d0a4de4..be1ee7842e 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -329,7 +329,7 @@ نسخ الاحتياطي كتعديل OSM %1$d ملف بقى يظهر الإعدادات لتمكين التتبع والملاحة في وضعية السكون ( الشاشة مغلقة ) عبر إيقاظ دوري لجهاز GPS. - تمكين لحساب المسارات بدقة دون أخطاء. لا يزال محدود المسافة وبطيء. + حساب الطرق بدقة دون أخطاء. لا يزال محدود المسافة وبطيء. صورة %1$s %2$s مزامنة المسارات والملاحظات الصوتية / الفيديو مع حساب Dropbox الخاص بك. تنسيق الفيديو الناتج: @@ -471,7 +471,7 @@ إفريقيا آسيا أستراليا و أوقيانوسيا - التوجيه مع الطرق + التوجيه ضبط خاص لكل وضع من أوضاع الملاحة. إدارة بيانات الخرائط إعدادات عامة @@ -977,7 +977,7 @@ مصدر الخريطة عرض أسماء المفضلة لغة الخريطة - تفاصيل إضافية + التفاصيل الوقت الحالي اتجاه الخريطة اتجاه الحركة في الأعلى @@ -992,7 +992,7 @@ تسجيل المسار اختر الفاصل الزمني لتسجيل المسار أثناء الملاحة صوت مسج - التوجيه مع الطرق + الاتجاهات استخدام الموقع… مفضلة نقاط مفضلة مجاورة @@ -1071,7 +1071,7 @@ تجنب الطرق… طرق السكك الحديدية خطوط الترام - المسارات الرياضية + الطرق وسائل المواصلات سمات أخرى للخريطة العناصر الأخرى @@ -1170,7 +1170,7 @@ طرق الحافلات الكهربائية طرق الحافلات سكك قطار الأنفاق - شارك طرق التاكسي + تاكسي مشاركة الطرق حدد حد السرعة المسموح به لتلقي تنبيه صوتي إذا ما تجاوزته. مراقبة الحدود كشك الرسوم @@ -1184,7 +1184,7 @@ قيود الدخول عرض قيود الدخول عرض سطح الطريق - إظهار مسارات الدراجات + إظهار طرق الدراجات بدء التوجيه المفصل تلقائياً مسارات فرعية: %1$s نقاط الطريق: %1$s @@ -1390,7 +1390,7 @@ قطار المسار الحالي مستوى البطارية - تغيير موقع التوجيه المباشر + تغيير موقع العلامة تابعنا اتجاه صدى الصوت الملاحة عبر أوسماند لايف @@ -1411,7 +1411,7 @@ مظهرالخريطة رقيقة متوسط - لم تضف توجيه مباشر على الخريطة + أضف علامات عبر الخريطة لم يتم العثور على نقاط الطريق التقرير سمح الآن للتطبيق بالكتابة على وحدة التخزين الخارجية. الرجاء إعادة تشغيله يدويا. @@ -1436,7 +1436,7 @@ رفع كمستخدم مجهول رفع ملاحظة OSM شريط الأدوات - حدد توجيه مباشرعلى الخريطة + حدد علامات الخريطة ترتيب عكسي تفعيل ميزة العلامات. الأسترية @@ -1472,7 +1472,7 @@ حرف غير قانوني في اسم الملف تقرير عن خرائط العالم - حرك الخريطة لتغيير مكان التوجيه المباشر + حرك الخريطة لتغيير مكان العلامة إشارة صوتية عند اتجاه نقطة الوصول. حدد اتجاه النقطة المستهدفة بالاهتزاز. @@ -1590,7 +1590,7 @@ حرك للاسفل اسم مستخدم و كلمة سر OSM نحن بحاجة اليه لكي نوفر لك معلومات حول المساهمات. - حدد توجيه مباشر + اختر علامة عرض شريط الشفافية لا توجد مساحة كافية! \n {3} MB مطلوب مؤقتا ، {1} ميجا بايت بشكل دائم. @@ -1611,7 +1611,7 @@ \nللعودة إلى واحدة من أنماط الخريطة التقليدية، ببساطة إما عطل هذا الملحق مرة أخرى أو غير \'نمط الخريطة\' في \'ضبط الخريطة\' حسب الرغبة. البحث قرب مركز الخريطة الحالية عدد خطوط التوجيه - التوجيه المباشر + علامات الخريطة تخطي الحدود حدد الطرق التي تريد تجنبها أثناء التنقل. الفئات @@ -1629,11 +1629,11 @@ الخرائط الموجودة انتقال للأعلى التعديلات %1$s ، الرتبة %2$s ، مجموع التعديلات %3$s - التوجيه المباشرالأول للخريطة - التوجيه المباشرالثاني للخريطة - إضافة إلى التوجيه المباشر - حذف كافة التوجيه المباشرالنشط على الخريطة؟ - توجيه مباشر على الخريطة + أول علامة + ثاني علامة + إضافة إلى علامات الخريطة + حذف كافة العلامات النشطة على الخريطة؟ + علامة خريطة عرض المضلعات الحالة حفظ التعديلات @@ -1655,7 +1655,7 @@ اختر التوجيه الصوتي اختر أو قم بتحميل التوجيه الصوتي الخاص بلغتك. منح الوصول إلى بيانات الموقع. - مسارات الخيول + طرق الخيول إخفاء جودة أقل أعلى جودة @@ -1749,7 +1749,7 @@ خطأ تحيين القائمة المحلية لPOI. تحيين الPOI قم بتحميل مذكرة OSM الخاصة بك دون الكشف عن هويتك أو باستخدام ملف تعريف OpenStreetMap.org . - إضافة جميع النقاط إلى التوجيه المباشر؟ + إضافة جميع النقاط إلى علامات الخريطة؟ مسح السجلات ؟ إظهار مسارات الدراجة الجبلية يمكنك إزالة التحديثات المحملة والرجوع إلى الإصدار الأصلي للخريطة @@ -1830,7 +1830,7 @@ ملاحظة OSM معلق عليها مسار زلق لإظهار خرائط التزلج، يجب تحميل خريطة خاصة محلية. - حافلة، ترامواي وغيرها + حافلة، عربة وغيرها إنشاء ملاحظة OSM حدث استثناء: لم يتم إنشاء الملاحظة. حدث استثناء: لم يتم غلق الملاحظة. @@ -1868,7 +1868,7 @@ تلوين وفق الانتماء للشبكة تلوين وفق رمز تنزه OSMC خروج - هل أنت متأكد من أنك تريد حذف الملاحظات %1$d؟ + حذف الملاحظات %1$d؟ لعرض الخرائط البحرية، يجب تحميل خريطة خاصة محلياً. تسجيل الموقع العام إلى ملف GPX يمكن تشغيله أو إيقافه باستخدام نافذة تسجيل GPX على الشاشة خريطة. ضبط اسم مضيف البروكسي (مثال 127.0.0.1). @@ -2089,7 +2089,7 @@ إجراءات سريعة إجراء %d شاشة %d - إضافة توجيه مباشر للخريطة + إضافة علامة خريطة إضافة POI نمط الخريطة نمط الخرائط تغير ل \"%s\". @@ -2468,7 +2468,7 @@ إضافة نقطة قبل إضافة نقطة بعد خيارات - سيتم توصيل النقاط بمسارات الوضع المحدد. + سيتم توصيل النقاط بطرق الوضع المحدد. يمكنك حفظ النقاط إما كنقاط طريق أو كخط. اختر وضع الملاحة إضافة نقاط مسار @@ -2481,12 +2481,12 @@ عتبة توجيه الخريطة حدد أدناه على أي سرعة يتغير توجيه الخريطة من \'اتجاه الحركة\' إلى \'البوصلة\'. تم نقل جميع العلامات إلى السجل - تم نقل التوجيه المباشر إلى السجل - التوجيه المباشر انتقل كنشط + تم نقل العلامة إلى السجل + العلامة أصبحت نشطة قائمة مجموعات آخر استخدام : %1$s - تنشيط التوجيه المباشر + تنشيط العلامة اليوم أمس آخر ٧ أيام @@ -2502,12 +2502,12 @@ سهم متجه للهدف عرض المتجاوز إخفاء المتجاوز - إزالة من \"التوجيه المباشر\" + إزالة من \"علامات الخريطة\" تنازلي تصاعدي تاريخ الإضافة ترتيب حسب: - حدد كيفية الإشارة إلى المسافة والاتجاه للتوجيه المباشر على شاشة الخريطة: + حدد كيفية الإشارة إلى مسافة واتجاه العلامة على شاشة الخريطة: استخدم الموقع أضف موقعك كنقطة أولى لتخطيط طريق مثالي. موقعي @@ -2518,7 +2518,7 @@ تصدير علاماتك إلى ملف يمكنك تحديده هنا: نقل إلى السجل سيتم إزالة المجموعة بعد إعادة تشغيل التطبيق. - التوجيه المباشر + العلامات نمط الإحداثيات لوحة مفاتيح النظام اختر نسق إدخال الأحداثيات. يمكنك دائماً تغييره بالنقر على خيارات. @@ -2535,12 +2535,12 @@ أظهر الخريطة تم حساب المسار رحلة ذهاب وإياب - يجب عليك إضافة توجيه مباشر واحد على الأقل لاستخدام هذه الوظيفة. + يجب عليك إضافة علامة واحدة على الأقل لاستخدام هذه الوظيفة. تنسيق خاطئ أدخل اسم جديد عودة عرض - تمت إضافة نقاط الطريق إلى التوجيه المباشر للخريطة + تمت إضافة نقاط الطريق إلى علامات الخريطة إدخال خاطئ يمكن استيرادها كنقاط مفضلة، أو كملف GPX. استيراد كملف GPX @@ -2548,15 +2548,15 @@ استيراد ملف نقرة على الخريطة ستفعل أزرار التحكم والويدجت. شاشة كاملة - توجيه مباشر مجتاز + علامة مُجتازة إنشاء أو تعديل عناصر OSM قم بإنشاء أو تعديل نقاط الاهتمام OSM ، وفتح ملاحظات OSM أو التعليق عليها ، والمساهمة في ملفات GPX المسجلة. حذف مُعدلة تمت الإضافة تعديل طلب البحث. - تم تنشيط التوجيه المباشر %s. - انقر على التوجيه المباشر في الخريطة لجعله الاعلى بدون فتح القائمة. + تم تنشيط العلامة %s. + انقر على العلامة في الخريطة لجعلها بالاعلى بدون فتح القائمة. تدوين ملاحظات! بدون حد زمني اقرأ المقال كاملا @@ -2564,27 +2564,27 @@ جميع نقاط هذه المجموعة افتح من مفتوح حتى - يغلق أبوابه على - سيفتح الأبواب على - يفتح أبوابه على + يغلق عند + يفتح عند + يفتح عند إجراءات إضافية إجراءات - توجيه مباشر + العلامات الملاحظات حسب التاريخ حسب التاريخ حسب النوع المزيد - التوجيه المباشر + المظهر على الخريطة نقاط المسار إضافة مجموعة - قم بإنشاء التوجيه المباشر على الخريطة ! + قم بإنشاء علامات على الخريطة ! استيراد مجموعات عدد الأرقام اليمين اليسار لصق الانتقال إلى الحقل التالي - إعادة تسمية التوجيه المباشر + إعادة تسمية العلامة مجموع التبرعات تسميات POI بدون اسم @@ -2616,7 +2616,7 @@ ج ش اسم النقطة - الطرق القريبة التي في الداخل + الطرق القريبة في الداخل أدخل اسم الملف. خطأ أثناء استرجاع الخريطة تمت عملية استيراد الخريطة @@ -2628,7 +2628,7 @@ قم باختيار نسق الملف جميع البيانات ملاحظات OSM - سيفتح أبوابه غداً على + سيفتح غداً عند ماذا هنا: اللاوسية عرض خريطة السياحة @@ -2692,7 +2692,7 @@ تنزيل الكل إعادة تشغيل التطبيق إشارة مرجعية - نقاط بالطريق تم إزالتها من التوجيه المباشر للخريطة + نقاط بالطريق تم إزالتها من علامات الخريطة بواسطة أوسماند الأسعار والاشتراك شهري @@ -2707,14 +2707,14 @@ يجدد سنويا حدد فترة الدفع المناسبة لك: تبرعات مساعدة صندوق رسم الخرائط OSM. - حذف التوجيه المباشر \'%s\'؟ - تعديل التوجيه المباشر + حذف العلامة \'%s\'؟ + تعديل العلامة بحث عن شارع اختر المدينة أولاً استعادة تطبيق من طرف ثالث - عند التفعيل سيبقى التوجيه المباشر المضاف من مجموعة إحداثيات أو من نقاط طريق على الخريطة عند اختيار \"تجاوز التوجيه المباشر\". إذا كانت المجموعة غير نشطة ستختفي الوجهات المباشرة من الخريطة. - إبقاء التوجيه المباشر المتجاوز + ستبقى العلامات المضافة من مجموعة إحداثيات أو من نقاط طريق على الخريطة عند اختيار \"تجاوز العلامة\". إذا كانت المجموعة غير نشطة ستختفي العلامات من الخريطة. + إبقاء العلامة المتجاوز هناك المزيد من وسائل النقل في هذا الموقف. يرجى إعطاء إذن تحديد الموقع للتطبيق لكي يواصل. شكرا على الرد @@ -2842,7 +2842,7 @@ إضافة ملاحظة صوتية أو فيديو أو صورة لكل نقطة على الخريطة، باستخدام قائمة السياق أو القطعة. ابحث عن المسارات مع نقاط الطريق حدد مسار لإضافة نقاط الطريق إلى العلامات(يتم سرد المسارات فقط مع نقاط الطريق). - نقرة طويلة أو قصيرة على الأماكن ثم اضغط على زر التوجيه المباشر. + نقرة طويلة أو قصيرة على الأماكن ثم اضغط على زر علامة. يمكنك استيراد المجموعات المفضلة أو نقاط المسار كتوجيه. ستظهر العلامات التي تم تجاوزها على هذه الشاشة. خط مباشر من موقعك إلى الهدف. @@ -2992,7 +2992,7 @@ سنوات ثلاثة أشهر مجاناً - إظهار شبكة مسارات الدارجات الهوائية + إظهار شبكة طرق الدارجات الهوائية نافذة تحميل الخريطة النوافذ والإشعارات التحكم في النوافذ المنبثقة ، ومربعات الحوار والإشعارات. @@ -3017,7 +3017,7 @@ لصق مسار مجلد بيانات أوسماند تغيير مجلد التخزين ؟ نقل للموقع الجديد - تجنب بعض الطرق + تجنب بعض أنواع الطرق جنبًا إلى جنب طريق تلفريك اتصال @@ -3042,7 +3042,7 @@ تفضيل الطرق الغير معبدة تفضيل الطرق الغير معبدة. تحديث كل الخرائط - هل أنت متأكد من رغبتك بتحديث (%1$d) خريطة؟ + تحديث (%1$d) خريطة؟ • تحديث التطبيق وإعدادات الأوضاع: يتم ترتيب الإعدادات الآن حسب النوع. يمكن تخصيص كل وضع بشكل منفصل. \n \n • نافذة جديدة لتنزيل الخريطة المقترحة أثناء تصفح الخرائط @@ -3328,14 +3328,14 @@ طرق لجولات التزلج. تزلج منحدرات لاستخدام الزلاجات. - السماح بالمسارات المتوسطة - طرق أكثر صعوبة مع أقسام أكثر حدة. بعض العقبات التي ينبغي تجنبها. + السماح بالطرق المتوسطة + طرق أكثر صعوبة مع أقسام أكثر حدة. بعض العقبات ينبغي تجنبها. السماح للطرق المتقدمة طرق صعبة ، مع عقبات خطيرة وأقسام شديدة الانحدار. السماح بطرق المتخصصين طرق صعبة للغاية ، مع عقبات خطيرة والمناطق المحيطة بها. السماح بالتزلج على الطرق فقط - الطريق مصممة خصيصا بحرية أو التزلج على الجليد. + طرق مصممة للأسلوب الحر أو التزلج فقط بدون المسارات الكلاسيكية. السماح للطرق الكلاسيكية فقط تم إعداد الطرق للأسلوب الكلاسيكي فقط دون مسارات التزلج. يشمل ذلك الطرق التي يتم إعدادها بواسطة عربة ثلجية أصغر مع زحلقة مرنة ومسارات مصنوعة يدوياً بواسطة المتزلجين. الصعوبة المفضلة @@ -3355,8 +3355,8 @@ لوحة المفاتيح وندرلينك ببغاء - المسار: المسافة%2$s، وقت التوجيه %1$s. -\nالحساب: %3$.1f ث، %4$d طريق، %5$d تجانب) + "المسار: المسافة%1$s، الوقت %2$s. +\nالحساب: %3$.1f ث، %4$d طريق، %5$d تجانب" الأوكيتانية ثم %1$s تطبيق فقط على \"%1$s\" @@ -3378,7 +3378,7 @@ اختر اللون لا يمكنك حذف أوضاع أوسماند الافتراضية ، ولكن يمكنك تعطيلها في الشاشة السابقة ، أو نقلها إلى الأسفل. تحرير الأوضاع - يؤثر نوع التنقل على قواعد حسابات المسار. + يؤثر نوع التنقل على قواعد حساب الطرق. مظهر الوضع اختر الايقونة واللون والاسم تحرير قائمة الأوضاع @@ -3534,7 +3534,7 @@ استعادة جميع إعدادات الوضع؟ حفظ الوضع الجديد لا يمكن عمل نسخة احتياطية لهذا الوضع. - هل أنت متأكد من أنك تريد مسح البيانات المسجلة؟ + مسح البيانات المسجلة؟ استيراد البيانات من %1$s استيراد OsmAnd تحقق %1$s للتكرارات مع العناصر الموجودة في التطبيق. @@ -3730,7 +3730,7 @@ مهلة الشاشة الافتراضية يمكنك تصدير أو استيراد إجراءات سريعة باستخدام أوضاع التطبيق . حذف الكل؟ - هل أنت متأكد من رغبتك في حذف الاختصارات السريعة %d نهائيًا؟ + حذف الاختصارات السريعة %d نهائيًا؟ مهلة الشاشة نغمات أدل بعرض مركبتك، قد يتم تطبيق بعض القيود على المركبات العريضة. @@ -3787,7 +3787,7 @@ أغلق ملاحظة OSM تحتاج إلى تعيين أيام العمل للمتابعة المسار بين النقاط - قياس المسافة + تخطيط طريق إضافة إلى مسار لن تكون النقطة المضافة مرئية على الخريطة، نظرًا لأن المجموعة المحددة مخفية، يمكنك العثور عليها في \"%s\". إظهار رموز البدء والانتهاء @@ -3816,7 +3816,7 @@ بعد ذلك ، ألقط مسارك بأقرب طريق مسموح به باستخدام أحد أوضاع التنقل الخاصة بك لاستخدام هذا الخيار. بداية المسافة صور للشارع - هل أنت متأكد أنك تريد إغلاق مسار الرحلة دون حفظ؟ سوف تفقد كل التغييرات؟ + إغلاق مسار الرحلة دون حفظ؟ ستفقد كل التغييرات؟ في حالة الاتجاه المعاكس تسجيل المسار أثناء الملاحة حفظ كملف مسار جديد @@ -3997,8 +3997,8 @@ \n • دعم ألوان مخصصة للمفضلة ونقاط لمسار الطريق \n \n - وضع الاستعراض - ملف تعريف المستخدم + وضع أساسي + وضع المستخدم عكس جميع النقاط حدد الوضع الذي سيتم استخدامه في بدء التطبيق. آخر استخدام From 4308ab15dd65ad1ed8f952ee1cb9803681064a91 Mon Sep 17 00:00:00 2001 From: Ahmad Alfrhood Date: Mon, 8 Feb 2021 10:03:59 +0000 Subject: [PATCH 16/98] Translated using Weblate (Arabic) Currently translated at 99.9% (3659 of 3661 strings) --- OsmAnd/res/values-ar/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index be1ee7842e..48e89e070c 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -4074,4 +4074,13 @@ رفع %1$d من %2$d تم رفع %1$d من %2$d تحديد التعديلات للتحميل + التضاريس / الانحدار / الخطوط المحيطية + OpenPlaceReviews هو مشروع يحركه المجتمع حول الأماكن العامة مثل المطاعم والفنادق والمتاحف ونقاط الطريق. يقوم بجمع جميع المعلومات العامة المتعلقة بهم مثل الصور والتعليقات والروابط إلى ارتباط الأنظمة الأخرى OpenStreetMap و Wikipedia. +\n +\nجميع بيانات OpenPlaceReview مفتوحة ومتاحة للجميع: http://openplacereviews.org/data. +\n +\nيمكنك قراءة المزيد على: http://openplacereviews.org + مراجعات الأمكنة + استخدام test.openplacereviews.org + الدخول إلى OpenPlaceReviews \ No newline at end of file From cc2653d79addacc5174a81db9a24e541041e7f52 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Sun, 7 Feb 2021 13:47:50 +0000 Subject: [PATCH 17/98] Translated using Weblate (French) Currently translated at 99.9% (3660 of 3661 strings) --- OsmAnd/res/values-fr/strings.xml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index c963ab462e..1f8808c5dc 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -2382,7 +2382,7 @@ Enregistrer les traces dans des dossiers mensuels Enregistrer les traces dans des sous-dossiers organisés par mois (par exemple 2018-01). %1$d de %2$d - Durée de déplacement + Durée de mouvement Min / Max Rose translucide Suspendre / Reprendre la Navigation @@ -3981,7 +3981,7 @@ Ce nom existe déjà Poids lourd Durée - Analyser par intervalles (fractionner) + Analyser par intervalles de fractionnement Intervalles de temps et de distance Le délai d\'annonce des alertes vocales dépend du type d\'annonce, de la vitesse actuelle et du type de navigation. Délai de l\'annonce @@ -4001,4 +4001,8 @@ %1$d sur %2$d envoyé Envoi en cours Envoi terminé + Ombrage du relief / Pente / Courbes de niveaux + OpenPlaceReviews + Utilisez test.openplacereviews.org + Se connecter à OpenPlaceReviews \ No newline at end of file From bf8320023e4cbbe5258152cc11fa1ed28b1857bb Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 7 Feb 2021 15:56:39 +0000 Subject: [PATCH 18/98] Translated using Weblate (German) Currently translated at 99.9% (3658 of 3661 strings) --- OsmAnd/res/values-de/strings.xml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index f71ed65545..215d278648 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -3694,7 +3694,7 @@ Mapillary ein-/ausblenden Mapillary ausblenden Mapillary anzeigen - Eine Umschaltfläche zum ein- oder ausblenden der Mapillary-Layer auf der Karte. + Eine Umschaltfläche zum Ein- oder Ausblenden des Mapillary-Layers auf der Karte. Blitzer deinstallieren Rechtliches Blitzer-POIs @@ -4013,4 +4013,13 @@ Lade %1$d von %2$d hoch %1$d von %2$d hochgeladen Bearbeitungen zum Hochladen auswählen + Relief / Hangneigung / Höhenlinien + OpenPlaceReviews ist ein von der Gemeinschaft betriebenes Projekt über öffentliche Orte wie Restaurants, Hotels, Museen, Wegpunkte. Es sammelt alle öffentlichen Informationen über sie wie Fotos, Bewertungen, Links zu anderen Systemen, Link OpenStreetMap, Wikipedia. +\n +\nAlle OpenPlaceReview-Daten sind offen und für jedermann zugänglich: http://openplacereviews.org/data. +\n +\nMehr Informationen finden Sie unter: http://openplacereviews.org + OpenPlaceReviews + test.openplacereviews.org verwenden + Anmelden bei OpenPlaceReviews \ No newline at end of file From 8d6cc1127d3bfaf2401ed6cd6821a383b206abcb Mon Sep 17 00:00:00 2001 From: Artem Date: Sun, 7 Feb 2021 17:56:11 +0000 Subject: [PATCH 19/98] Translated using Weblate (Russian) Currently translated at 99.7% (3647 of 3657 strings) --- OsmAnd/res/values-ru/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 5747a78d85..4836ea274c 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -3992,4 +3992,13 @@ Отправка %1$d из %2$d Отправлено %1$d из %2$d Выберите правки для отправки + Рельеф / Уклон/ Контурные линии + Транспортное средство + Велосипед + Электрический велосипед + Горный велосипед + Шоссейный велосипед + Обычный велосипед + Гоночный велосипед + Горный велосипед \ No newline at end of file From 39347ce7e2a55ddf349ac6b35b0976b372cf2a28 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Mon, 8 Feb 2021 14:23:17 +0000 Subject: [PATCH 20/98] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3657 of 3657 strings) --- OsmAnd/res/values-uk/strings.xml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index f724876c74..470ebc3850 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -2971,7 +2971,7 @@ Лижі Лижі Показати компас-лінійку - Приховати компас-лінійку + Сховати компас-лінійку Оберіть значок Режим: %s Користувацький режим, похідний від: %s @@ -2988,7 +2988,7 @@ Зберегти зміни Спочатку збережіть зміни в профілі Видалити профіль - Ви дійсно хочете видалити профіль %s\? + Ви дійсно хочете видалити профіль «%s» Виберіть профіль для початку Служба завантаження OsmAnd Пурпуровий @@ -3302,7 +3302,7 @@ Профілі, додані втулком Вимкнути Нова втулка додана - Приєднати частки + Об’єднати сегменти Додати новий профіль \'%1$s\'\? Зберегти заголовок Зберегти заголовок для кожної точки треку під час запису. @@ -3736,7 +3736,7 @@ Суцільний В останнє змінено Імпортувати трек - Переглянути наявний трек + Відкрити наявний трек Створити новий маршрут Виберіть який файл з треком відкрити. Готово @@ -3966,7 +3966,7 @@ Вибрати теку Виберіть теку або додайте нову Порожньо - Аналіз за інтервалами (розділений інтервал) + Аналізувати розділені інтервали Відвантажити на OpenStreetMap Редагувати трек Перейменувати трек @@ -4010,4 +4010,5 @@ Вивантаження %1$d з %2$d Вивантажено %1$d з %2$d Виберіть зміни для вивантаження + Рельєф місцевості / Схили / Горизонталі \ No newline at end of file From 0ff11328058eeaa7a8c9453be8e6fbfdaa6284a0 Mon Sep 17 00:00:00 2001 From: Michalis Date: Mon, 8 Feb 2021 16:06:31 +0000 Subject: [PATCH 21/98] Translated using Weblate (Greek) Currently translated at 92.4% (3386 of 3661 strings) --- OsmAnd/res/values-el/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-el/strings.xml b/OsmAnd/res/values-el/strings.xml index b1ddebc715..af31956d26 100644 --- a/OsmAnd/res/values-el/strings.xml +++ b/OsmAnd/res/values-el/strings.xml @@ -778,7 +778,7 @@ Ενημέρωση χάρτη Δημιουργία ΣΕ Ναι - Ακύρωση + Άκυρο Εφαρμογή Όχι Εισαγωγή ονόματος αγαπημένου @@ -1270,7 +1270,7 @@ Λήψη Νέου Χάρτη Γλώσσα χάρτη Μορφή δρόμου - Προκαθορισμένο + Προεπιλογή Πορτοκαλί Διασταύρωση σιδηροτροχιάς Διασταυρώσεις σιδηροτροχιάς @@ -1467,7 +1467,7 @@ Τμήματα διαδρομής Σημεία της διαδρομής Τοποθεσία:\n Γ. Πλ %1$s\n Γ. Μηκ %2$s - Προκαθορισμένο + Προεπιλογή Εκτύπωση διαδρομής εκπρόθεσμο Προσομοίωση της θέση σας @@ -3013,7 +3013,7 @@ Εμφάνιση στον χάρτη ζωνών για χαμηλή εκπομπή καυσαερίων. Δεν επηρεάζει τη δρομολόγηση. Εμφάνιση ζωνών χαμηλής εκπομπής καυσαερίων Λάβετε υπόψη τους προσωρινούς περιορισμούς - Προεπιλεγμένο + Προεπιλογή Ημιφορτηγό Ημέρα Ημέρες From c0d397ccc24ea317e831ab5bd52db863b8f574fc Mon Sep 17 00:00:00 2001 From: ace shadow Date: Sun, 7 Feb 2021 22:32:43 +0000 Subject: [PATCH 22/98] Translated using Weblate (Slovak) Currently translated at 100.0% (3657 of 3657 strings) --- OsmAnd/res/values-sk/strings.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 84b80a03a8..ada5be40c9 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -2415,7 +2415,7 @@ Vzdialenosť opravená Povolenia Nepodarilo sa naimportovať súbor. Prosím zabezpečte, že OsmAnd má oprávnenie čítať súbor. - Polomerové pravítko + Kruhové pravítko Resetovať Znovu načítať Znovu načítať dlaždice pre získanie aktuálnych dát. @@ -3580,7 +3580,7 @@ Stopovanie OsmAnd OsmAnd + Mapillary Rýchla akcia - Polomerové pravítko + Kruhové pravítko Merať vzdialenosť Cestovanie (Wikivoyage a Wikipédia) Mapové značky @@ -3962,7 +3962,7 @@ Zvoľte priečinok Zvoľte priečinok alebo pridajte nový Prázdne - Analyzovať podľa intervalov (rozdeliť interval) + Analyzovať rozdelené intervaly Nahrať do OpenStreetMap Upraviť stopu Premenovať stopu @@ -4006,4 +4006,5 @@ Odosiela sa %1$d z %2$d Odoslané %1$d z %2$d Zvoľte úpravy na odoslanie + Tieňované svahy / Sklony svahov / Vrstevnice \ No newline at end of file From de0d774ae71945f4afee6d5bf82cdcf6d78546e2 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Sun, 7 Feb 2021 15:52:43 +0000 Subject: [PATCH 23/98] Translated using Weblate (Hebrew) Currently translated at 99.8% (3656 of 3661 strings) --- OsmAnd/res/values-iw/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-iw/strings.xml b/OsmAnd/res/values-iw/strings.xml index 737272e2e5..d91880e6d1 100644 --- a/OsmAnd/res/values-iw/strings.xml +++ b/OsmAnd/res/values-iw/strings.xml @@ -4013,4 +4013,7 @@ נשלחות %1$d מתוך %2$d נשלחו %1$d מתוך %2$d נא לבחור עריכות לשליחה + OpenPlaceReviews + להשתמש ב־test.openplacereviews.org + כניסה ל־OpenPlaceReviews \ No newline at end of file From 5686fa9ab5588b98a26cdb83d7e080ff9d7067fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Kotr=C4=8D?= Date: Mon, 8 Feb 2021 07:31:19 +0000 Subject: [PATCH 24/98] Translated using Weblate (Czech) Currently translated at 100.0% (3661 of 3661 strings) --- OsmAnd/res/values-cs/strings.xml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index 738a4e98fe..ed36b49158 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -3425,7 +3425,7 @@ Směrové šipky Naposledy upraveno Importovat trasu - Otevřít existující trasu + Otevřít existující stopu Vytvořit novou trasu Vyberte stopu k otevření. Hotovo @@ -3442,10 +3442,10 @@ Přidat mezicíl Záznam trasy Uložit jako soubor trasy - Sledovat trasu + Sledovat stopu Zvolte soubor trasy, kterou chcete sledovat Zvolte soubor stopy, kterou chcete sledovat, nebo jej importujte ze svého zařízení. - Zvolit jinou trasu + Zvolit jinou stopu Navigovat z mé polohy k trase Bod trasy pro navigování Začátek trasy @@ -3490,7 +3490,7 @@ Ukládat trasu do GPX souboru Trasa ze stopy Přidat soubory stop - Zjednodušená trasa + Zjednodušená stopa Uloží se pouze linie trasy, mezicíle budou odstraněny. Název souboru %s vybraných souborů stop @@ -3505,7 +3505,7 @@ Pouze vybraný úsek bude přepočítán pomocí vybraného profilu. Všechny následující úseky budou přepočítány pomocí vybraného profilu. Všechny předcházející úseky budou přepočítány pomocí vybraného profilu. - Otevřít uloženou trasu + Otevřít uloženou stopu je uloženo Přidejte prosím alespoň dva body. Znovu @@ -3967,7 +3967,7 @@ Zvolte složku Zvolte složku nebo vytvořte novou Prázdné - Analyzovat podle intervalů (rozdělit interval) + Analyzovat rozdělené intervaly Nahrát do OpenStreetMap Editovat stopu Přejmenovat stopu @@ -4011,4 +4011,13 @@ Nahrávám %1$d z %2$d Nahráno %1$d z %2$d Vyberte úpravy pro nahrání + Stínované svahy / Sklon svahů / Vrstevnice + OpenPlaceReviews je komunitní projekt o veřejných místech, jako jsou restaurace, hotely, muzea a další. Shromažďuje o nich veškeré veřejné informace, např. fotografie, hodnocení, odkazy do dalších systémů jako OpenStreetMap či Wikipedie. +\n +\nVšechna data OpenPlaceReviews jsou otevřená a přístupná každému: http://openplacereviews.org/data. +\n +\nPřečtěte si více na http://openplacereviews.org + OpenPlaceReviews + Použít test.openplacereviews.org + Přihlásit se do OpenPlaceReviews \ No newline at end of file From c626e95421479744e859bba5930b73044657d748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1ns?= Date: Mon, 8 Feb 2021 14:27:06 +0000 Subject: [PATCH 25/98] Translated using Weblate (Galician) Currently translated at 99.8% (3657 of 3661 strings) --- OsmAnd/res/values-gl/strings.xml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/OsmAnd/res/values-gl/strings.xml b/OsmAnd/res/values-gl/strings.xml index c39329ec8e..6c078f0d5b 100644 --- a/OsmAnd/res/values-gl/strings.xml +++ b/OsmAnd/res/values-gl/strings.xml @@ -3998,4 +3998,35 @@ Lon %2$s Bicicleta de montaña Erro do servidor: %1$s O nome xa existe + Analizar intres divididos + Subir ao OpenStreetMap + Editar pista + Renomear pista + Mudar cartafol + seg + Pasando + Aproximación + Longa preparación + Preparar + Fóra da ruta + Eliminar este motor de navegación en liña\? + Ler completo + Editar descrición + Eliminar puntos de referencia + Copiar ás marcaxes do mapa + Copiar aos favoritos + Subindo + Subida completa + Subindo %1$d de %2$d + Subíronse %1$d de %2$d + Seleccionar edicións para subir + Sombras do relevo / Pendentes / Curvas de nivel + O OpenPlaceReviews é un proxecto impulsado pola comunidade sobre lugares públicos como restaurantes, hoteis, museos, puntos de referencia. Recolle toda a información pública sobre eles como imaxes, recesións, ligazóns a outros servizos como OpenStreetMap e Wikipedia. +\n +\nTodos os datos do OpenPlaceReviews son abertos e están dispoñíbeis para todos: http://openplacereviews.org/data. +\n +\nPodes ler máis en: https://openplacereviews.org + OpenPlaceReviews + Empregar test.openplacereviews.org + Iniciar sesión ao OpenPlaceReviews \ No newline at end of file From 049146c1343facfef0b1fbb314aeaf86225bed6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Kotr=C4=8D?= Date: Mon, 8 Feb 2021 07:57:38 +0000 Subject: [PATCH 26/98] Translated using Weblate (Czech) Currently translated at 100.0% (3881 of 3881 strings) --- OsmAnd/res/values-cs/phrases.xml | 48 +++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-cs/phrases.xml b/OsmAnd/res/values-cs/phrases.xml index 8c6b4981ff..8fafe343d7 100644 --- a/OsmAnd/res/values-cs/phrases.xml +++ b/OsmAnd/res/values-cs/phrases.xml @@ -3601,7 +3601,7 @@ Přístup vozidel: vojenské Přístup vozidel: zásobování Přístup vozidel: lesnictví - Přístup aut: + Přístup aut: ano Přístup aut: soukromý Přístup aut: ne Přístup aut: cíl @@ -3835,4 +3835,50 @@ Neimigrační víza Konzulát Ambasáda + Mobilní směnárna + Prostředník + Prostředník + Netopýří tunel + Netopýří most + Ekodukt + Plovárna + Veřejná prádelna + Překladiště odpadů + Mostní váha + Stanice rangera + Jezero + Řeka + Studna + Poháněné čerpadlo + Vodní nádrž + Kohoutek + Zásobování vodou + Trubková studna + Očkování: COVID19 + Očkování + Záchranářská základna + Siréna + Zdravotní sestra + Ne + Ano + Ne + Ano + Ne + Ano + Podnárodní + Reprezentační kancelář + Kancelář + Honorární konzul + Generální konzulát + Kancelář konzula + Konzulární zastupitelstvo + Vedená konzulem + Rezidence + Nunciatura + Mise + Zájmová sekce + Vysoký komisař + Delegace + Pobočka + Vedená velvyslancem \ No newline at end of file From f7c9bd393f59a833b6f4d38d130e6953ac78b8d6 Mon Sep 17 00:00:00 2001 From: Franco Date: Sun, 7 Feb 2021 22:40:27 +0000 Subject: [PATCH 27/98] Translated using Weblate (Spanish (Argentina)) Currently translated at 99.9% (3660 of 3661 strings) --- OsmAnd/res/values-es-rAR/strings.xml | 56 ++++++++++++++++------------ 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 18a479e18b..b1bdd574c8 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -772,24 +772,24 @@ \n Los PDI de OsmAnd están siendo desarrollados activamente. Nuestro proyecto y su continuo progreso, se basa en contribuciones económicas para desarrollar y probar nuevas funcionalidades. Por favor, considera comprar OsmAnd+, financiar nuevas funciones o hacer una donación general en https://osmand.net. Navegación y Mapas OsmAnd+ Visor y navegador móvil global de mapas OSM con y sin conexión - OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM) -\n -\nOsmAnd+ es un software de navegación de código abierto con acceso a una amplia variedad de datos globales de OSM. Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. Ofrece funcionalidades de rutas con y sin conexión, incluyendo guía de giro-a-giro por voz. -\n -\n OsmAnd+ es la versión de pago de la aplicación, comprándola ayudas al proyecto, financias el desarrollo de nuevas funciones, y recibes las últimas actualizaciones. -\n -\n Algunas de las funciones fundamentales: -\n - Completa funcionalidad sin conexión (guarda los mapas vectoriales o teselas descargados en el almacenamiento del dispositivo) -\n - Mapas mundiales vectoriales compactos disponibles -\n - Descarga ilimitada de mapas de países o regiones directamente desde la aplicación -\n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés, Favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable -\n -\n - Búsqueda sin conexión de direcciones y sitios (PDI) -\n - Rutas sin conexión para distancias de rango medio -\n - Modos de automóvil, bicicleta y peatón con opcional: -\n - Cambio automático de modo diurno/nocturno -\n - Zoom del mapa según la velocidad -\n - Alineación del mapa, según brújula o dirección del movimiento + OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM) +\n +\n OsmAnd+ es un software de navegación de código abierto con acceso a una amplia variedad de datos globales de OSM. Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. Ofrece funcionalidades de rutas con y sin conexión, incluyendo guía de giro-a-giro por voz. +\n +\n OsmAnd+ es la versión de pago de la aplicación, comprándola ayudas al proyecto, financias el desarrollo de nuevas funciones, y recibes las últimas actualizaciones. +\n +\n Algunas de las funciones fundamentales: +\n - Completa funcionalidad sin conexión (guarda los mapas vectoriales o teselas descargados en el almacenamiento del dispositivo) +\n - Mapas mundiales vectoriales compactos disponibles +\n - Descarga ilimitada de mapas de países o regiones directamente desde la aplicación +\n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés, Favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable +\n +\n - Búsqueda sin conexión de direcciones y sitios (PDI) +\n - Rutas sin conexión para distancias de rango medio +\n - Modos de automóvil, bicicleta y peatón con opcional: +\n - Cambio automático de modo diurno/nocturno +\n - Zoom del mapa según la velocidad +\n - Alineación del mapa, según brújula o dirección del movimiento \n - Indicación de carriles, mostrar límites de velocidad, voces grabadas y sintetizadas \n Crear filtro PDI @@ -1222,8 +1222,7 @@ Todos los datos sin conexión en la versión vieja de OsmAnd son compatibles con la nueva versión, pero los puntos de Favoritos deben exportarse desde la versión vieja y luego, importarse en la nueva. Compilación {0} instalada ({1}). Descargando compilación… - ¿Instalar OsmAnd? -\nVersión: {0} + ¿Instalar OsmAnd {0}\? \nFecha: {1} \nTamaño: {2} MB Error al recuperar la lista de compilaciones de OsmAnd @@ -2063,7 +2062,7 @@ Notificaciones Sin archivos de trazas aún También puedes añadir archivos de trazas a la carpeta - Añadir GPX + Añadir más… Aspecto Muy fino Cálculo de la ruta @@ -3732,8 +3731,8 @@ El punto añadido no será visible en el mapa, ya que el grupo elegido está oculto, se puede encontrar en «%s». Mostrar los iconos de inicio y fin Elegir la anchura - Marca el intervalo en el que se mostrarán las marcas con distancia o tiempo en la traza. - Marca la opción de división deseada: por tiempo o por distancia. + Elige el intervalo de la traza en el que se mostrarán las marcas con la distancia o el tiempo. + Elige la opción de división deseada: por tiempo o por distancia. Personalizado Flechas de dirección Sólido @@ -3970,7 +3969,7 @@ Elegir carpeta Elegir carpeta o añadir una nueva Vacío - Analizar por intervalos (intervalo de división) + Analizar intervalos divididos Subir a OpenStreetMap Editar traza Renombrar traza @@ -4014,4 +4013,13 @@ Subiendo %1$d de %2$d Se subieron %1$d de %2$d Marcar ediciones a subir + Sombreado / Pendiente / Curvas de nivel + OpenPlaceReviews es un proyecto impulsado por la comunidad sobre lugares públicos como restaurantes, hoteles, museos, puntos de referencia. Recoge toda la información pública sobre ellos como fotos, reseñas, enlaces a otros servicios como OpenStreetMap y Wikipedia. +\n +\nTodos los datos de OpenPlaceReviews son abiertos y están disponibles para todos: http://openplacereviews.org/data. +\n +\nPuedes leer más en: https://openplacereviews.org + OpenPlaceReviews + Usar test.openplacereviews.org + Acceder a OpenPlaceReviews \ No newline at end of file From 919efeee4ee555b09d243478ae07b61afe7bc980 Mon Sep 17 00:00:00 2001 From: Franco Date: Sun, 7 Feb 2021 22:43:35 +0000 Subject: [PATCH 28/98] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (3881 of 3881 strings) --- OsmAnd/res/values-es-rAR/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index ac7e14f5ee..44abab2a5b 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -2723,7 +2723,7 @@ Acuicultura: mejillones Edad mínima - No + Productos orgánicos: no Únicamente Espejo de tráfico Consulado From e995142894663f5b962a80dfb80adcb6e2afa9ef Mon Sep 17 00:00:00 2001 From: Eduardo Addad de Oliveira Date: Sun, 7 Feb 2021 13:29:48 +0000 Subject: [PATCH 29/98] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3657 of 3657 strings) --- OsmAnd/res/values-pt-rBR/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 023809b5ae..afd52545aa 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -3782,7 +3782,7 @@ Alterar o tipo de rota antes Alterar o tipo de rota após Trilha simplificada - Apenas a linha da rota será salva, os waypoints serão excluídos. + Apenas a linha da rota será salva, os pontos de passagem serão excluídos. Nome do arquivo %s arquivos de trilha selecionados O registro de trilhas fará uma pausa quando o aplicativo for encerrado (por meio de aplicativos recentes). (A indicação de segundo plano do OsmAnd desaparece da barra de notificação do Android.) @@ -3962,7 +3962,7 @@ Selecione a pasta Selecione a pasta ou adicione uma nova Vazio - Analisar por intervalos (intervalo de divisão) + Analisar intervalos de divisão Carregar para OpenStreetMap Editar trilha Renomear trilha @@ -4006,4 +4006,5 @@ Carregando %1$d de %2$d Carregado %1$d de %2$d Selecione as edições para carregamento + Sombras de relevo / Encostas / Curvas de nível \ No newline at end of file From 1e63481a4a8bbe843857e96d56c77dc446ac50e5 Mon Sep 17 00:00:00 2001 From: Verdulo Date: Sun, 7 Feb 2021 18:44:19 +0000 Subject: [PATCH 30/98] Translated using Weblate (Esperanto) Currently translated at 100.0% (3661 of 3661 strings) --- OsmAnd/res/values-eo/strings.xml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index 219a59ae10..da7a929cf2 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -654,7 +654,7 @@ Trovis nenion. Se vi ne povas trovi vian regionon, vi povas fari ĝin mem (rigardu https://osmand.net). Unue elektu GPX‑dosieron per frapetadi. Elektu kurson - Intertempo de divido + Fragmento Ordigi laŭ distanco Ordigi laŭ nomo Turisma map-vido @@ -2405,7 +2405,7 @@ Kontribui viajn strat-nivelajn vidaĵojn pri tiu ĉi loko al Mapillary. Strat-nivelaj fotoj por ĉiuj. Esplori lokojn, kunlabori kaj foti la mondon. Enretaj fotoj - Neniuj fotoj tie ĉi. + Neniu foto tie ĉi. Instali Pliigi fotan atingon de Mapillary Instalu la aplikaĵon Mapillary por aldoni fotojn al tiu ĉi loko sur la mapo. @@ -3967,7 +3967,7 @@ Elekti dosierujon Elekti dosierujon aŭ krei novan Malplena - Analizi laŭ intertempoj (dividoj) + Analizi laŭ fragmentoj Alŝuti al OpenStreetMap Redakti spuron Renomi spuron @@ -4011,4 +4011,13 @@ Sendado de %1$d el %2$d Sendis %1$d el %2$d Elektu redaktojn por sendi + Nivelombrumo / dekliveco / nivelkurboj + OpenPlaceReviews estas komunuma projekto pri publikaj lokoj, kiel restoracioj, hoteloj, muzeoj, rekoniloj, ktp. Ĝi kolektas diversajn publikajn informojn pri tiuj punktoj: fotojn, opiniojn, ligilojn al OpenStreetMap kaj Vikipedio. +\n +\nĈiuj OpenPlaceReview‑datumoj estas malfermaj kaj disponeblaj por ĉiu: http://openplacereviews.org/data +\n +\nPliaj informoj ĉe http://openplacereviews.org + OpenPlaceReviews + Uzi test.openplacereviews.org + Ensaluti al OpenPlaceReviews \ No newline at end of file From 5425152065baa442cecd5dcb86cd9dffb3d7a971 Mon Sep 17 00:00:00 2001 From: Liu Tao Date: Sun, 7 Feb 2021 15:57:20 +0000 Subject: [PATCH 31/98] Translated using Weblate (Chinese (Simplified)) Currently translated at 67.7% (2478 of 3657 strings) --- OsmAnd/res/values-zh-rCN/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-zh-rCN/strings.xml b/OsmAnd/res/values-zh-rCN/strings.xml index c21fc6f733..9550f1fb9c 100644 --- a/OsmAnd/res/values-zh-rCN/strings.xml +++ b/OsmAnd/res/values-zh-rCN/strings.xml @@ -35,7 +35,7 @@ 避開高速路 自动缩放地图 運輸方式: - 選擇傳輸模式 + 运输模式: 地图风格 熒光路線 統治者 @@ -430,9 +430,9 @@ 等高线数据 录制视频 录制音频 - 选择缺省窗体动作。 + 默认小部件操作: 缺省窗体动作 - 选择视频输出格式。 + 视频输出格式: 视频输出格式 使用系统程序录制视频。 使用系统程序拍照 @@ -481,7 +481,7 @@ 路线小地图 设置唤醒间隔: 上次导航未完成。是否继续?(%1$s 秒) - 选择模拟导航速度 + 路线模拟速度: 已分配内存 %1$s MB (Android 限制 %2$s MB,Dalvik %3$s MB)。 分享位置 有时间限制 @@ -555,7 +555,7 @@ 开始模拟导航 文件无法重命名。 同名文件已存在。 - 找到多个满足查询的POI类别: + 找到了几个相关的 POI 类别。 用于搜索POI的本地数据不存在。 按名称搜索 兴趣点数据文件 \'%1$s\' 是多余的,可以删除。 @@ -2020,7 +2020,7 @@ 感谢您使用 OsmAnd。对于此应用程序的许多功能,您需要一些地区的离线数据,您可以透过\'设置\' -> \'管理地图文件\'来下载。之后您可浏览地图、位置的地址、查看兴趣点以及寻找大众运输工具。 底图为某些特别的应用功能必需使用的,并且缺省为下载。 启动插件的高级设置和更多的附加功能。 - 用所选择的语音播放指令 + 通过播放通知选择语音和测试: 回到目前位置 横向(8 个扇区) 顺时针(12 个扇区) @@ -3068,7 +3068,7 @@ 到期时间 选择如何储存下载的数据。 你可以在应用配置中导入导出快捷操作。 - 你确定要删除%d快捷操作吗? + 你确定要不可撤销地删除 %d 快捷操作吗? 在某些国家或地区,使用测速摄像头提示应用是非法的。 \n \n你需要根据你所在的国家的法律作出选择。 From d3e4cf8cfbd34974067e5c39789dde7ffca4e712 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Mon, 8 Feb 2021 01:40:21 +0000 Subject: [PATCH 32/98] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3657 of 3657 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 9b601f4c19..388b13d671 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -3960,7 +3960,7 @@ 選取資料夾 選取資料夾或新增 - 按時間間隔分析(分割時間間隔) + 分析分割間隔 上傳到 OpenStreetMap 編輯軌跡 重新命名軌跡 @@ -4004,4 +4004,5 @@ 正在上傳 %1$d,共 %2$d 已上傳 %1$d,共 %2$d 選取要上傳的檔案 + 地形陰影/斜坡/等高線 \ No newline at end of file From 562f09ce76c52733869fc8251492ce3e9f74e1f3 Mon Sep 17 00:00:00 2001 From: Artem Date: Sun, 7 Feb 2021 17:09:54 +0000 Subject: [PATCH 33/98] Translated using Weblate (Russian) Currently translated at 99.9% (3878 of 3881 strings) --- OsmAnd/res/values-ru/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index 839721ba13..95e72999d5 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -3878,4 +3878,5 @@ Станция перекачки отходов Станция рейнджеров Место для купания + Экодук \ No newline at end of file From 455518decc5632ff10cd5938f9e7ad17342b4fdf Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Mon, 8 Feb 2021 18:44:21 +0200 Subject: [PATCH 34/98] Add custom activity type --- .../wikivoyage/explore/travelcards/TravelGpxCard.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java index 119df5a54a..795980df32 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelGpxCard.java @@ -48,14 +48,9 @@ public class TravelGpxCard extends BaseTravelCard { holder.userIcon.setImageDrawable(getActiveIcon(R.drawable.ic_action_user_account_16)); holder.user.setText(article.user); RouteActivityType activityType = RouteActivityType.getTypeFromName(article.activityType); - if (activityType != null) { - int iconId = getActivityTypeIcon(activityType); - if (iconId > 0) { - holder.activityTypeIcon.setImageDrawable(getActiveIcon(iconId)); - } - holder.activityType.setText(getActivityTypeTitle(activityType)); - holder.activityTypeLabel.setVisibility(View.VISIBLE); - } + holder.activityTypeIcon.setImageDrawable(getActiveIcon(getActivityTypeIcon(activityType))); + holder.activityType.setText(getActivityTypeTitle(activityType)); + holder.activityTypeLabel.setVisibility(View.VISIBLE); holder.distance.setText(OsmAndFormatter.getFormattedDistance(article.totalDistance, app)); holder.diffElevationUp.setText(OsmAndFormatter.getFormattedAlt(article.diffElevationUp, app)); holder.diffElevationDown.setText(OsmAndFormatter.getFormattedAlt(article.diffElevationDown, app)); From 095c22a03528bdd4cbac03ed9dd5beffc5e4eb50 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 8 Feb 2021 19:28:59 +0200 Subject: [PATCH 35/98] Add line on top of selected tab item --- .../drawable/bottom_navigation_item_bg_dark.xml | 8 ++++++++ .../drawable/bottom_navigation_item_bg_light.xml | 8 ++++++++ .../drawable/navigation_item_active_bg_dark.xml | 15 +++++++++++++++ .../drawable/navigation_item_active_bg_light.xml | 15 +++++++++++++++ OsmAnd/res/layout/track_menu.xml | 2 +- OsmAnd/res/values/attrs.xml | 1 + OsmAnd/res/values/styles.xml | 2 ++ 7 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 OsmAnd/res/drawable/bottom_navigation_item_bg_dark.xml create mode 100644 OsmAnd/res/drawable/bottom_navigation_item_bg_light.xml create mode 100644 OsmAnd/res/drawable/navigation_item_active_bg_dark.xml create mode 100644 OsmAnd/res/drawable/navigation_item_active_bg_light.xml diff --git a/OsmAnd/res/drawable/bottom_navigation_item_bg_dark.xml b/OsmAnd/res/drawable/bottom_navigation_item_bg_dark.xml new file mode 100644 index 0000000000..f0934052c1 --- /dev/null +++ b/OsmAnd/res/drawable/bottom_navigation_item_bg_dark.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/drawable/bottom_navigation_item_bg_light.xml b/OsmAnd/res/drawable/bottom_navigation_item_bg_light.xml new file mode 100644 index 0000000000..f410c7a1ff --- /dev/null +++ b/OsmAnd/res/drawable/bottom_navigation_item_bg_light.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/drawable/navigation_item_active_bg_dark.xml b/OsmAnd/res/drawable/navigation_item_active_bg_dark.xml new file mode 100644 index 0000000000..de8b54eb6e --- /dev/null +++ b/OsmAnd/res/drawable/navigation_item_active_bg_dark.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/drawable/navigation_item_active_bg_light.xml b/OsmAnd/res/drawable/navigation_item_active_bg_light.xml new file mode 100644 index 0000000000..31d31f1c40 --- /dev/null +++ b/OsmAnd/res/drawable/navigation_item_active_bg_light.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/layout/track_menu.xml b/OsmAnd/res/layout/track_menu.xml index db0f8a47f9..e62361afc2 100644 --- a/OsmAnd/res/layout/track_menu.xml +++ b/OsmAnd/res/layout/track_menu.xml @@ -206,7 +206,7 @@ android:layout_height="@dimen/context_menu_action_buttons_height" android:layout_gravity="bottom" android:background="?attr/wikivoyage_card_bg_color" - osmand:itemBackground="?attr/wikivoyage_card_bg_color" + osmand:itemBackground="?attr/bottom_navigation_item_background" osmand:itemIconTint="@color/bottom_navigation_color_selector_light" osmand:itemTextColor="@color/bottom_navigation_color_selector_light" osmand:labelVisibilityMode="labeled" diff --git a/OsmAnd/res/values/attrs.xml b/OsmAnd/res/values/attrs.xml index c745589ef7..f75867c8e8 100644 --- a/OsmAnd/res/values/attrs.xml +++ b/OsmAnd/res/values/attrs.xml @@ -142,6 +142,7 @@ + diff --git a/OsmAnd/res/values/styles.xml b/OsmAnd/res/values/styles.xml index 5c074185ef..4648cba1cc 100644 --- a/OsmAnd/res/values/styles.xml +++ b/OsmAnd/res/values/styles.xml @@ -249,6 +249,7 @@ @color/text_input_background_light @drawable/img_help_announcement_time_day @color/switch_button_active_light + @drawable/bottom_navigation_item_bg_light