From cd79e69028c365e3dc090efac79d6680df7779e0 Mon Sep 17 00:00:00 2001 From: Viktar Palstsiuk Date: Wed, 11 Jun 2014 20:34:43 +0200 Subject: [PATCH 01/40] Translated using Weblate. --- OsmAnd/res/values-be/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index a6dfbf41c5..f58253e996 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -101,8 +101,8 @@ хуткасьць вышыня Кропка - Імя GPX-файла - GPX файл паспяхова захаваны ў {0} + Назва GPX файлу + GPX файл пасьпяхова захаваны ў {0} Ствараць шляхі (ці выкарыстоўваць/рэдагаваць існуючыя файлы GPX) каб мераць адлегласьць паміж кропкамі. Захоўваць у GPX і потым карыстацца каб плянаваць шлях па GPX. Прылада для разьліку адлегласьцей й плянаваньня * Націсніце , каб адзначыць кропку.\n * Націсьніце і ўтрымлівайце на мапе, каб выдаліць папярэднюю кропку.\n * Націсьніце і ўтрымлівайце на кропцы, каб паглядзець і прыкласьці апісаньне.\n * Націсніце на віджэце вымярэньня, каб убачыць больш дзеяньняў. @@ -1242,11 +1242,11 @@ OsmAnd мае адкрыты зыходны код і актыўна разві SD карта даступная толькі для чытання.\nВы не можаце сьцягнуць мапы з Інтэрнэту. Файл распакоўваецца… Паварочвайце направа і рухайцеся - Паварочвайце рэзка направа і рухайцеся - Паварочвайце трохі направа і рухайцеся + Рэзка паварочвайце направа і рухайцеся + Павольна паварочвайце направа і рухайцеся Паварочвайце налева і рухайцеся - Паварочвайце рэзка налева і рухайцеся - Паварочвайце трохі налева і рухайцеся + Рэзка паварочвайце налева і рухайцеся + Павольна паварочвайце налева і рухайцеся Развярніцеся і рухайцеся Рухайцеся Далей @@ -1846,7 +1846,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві Частак сьледу: %1$s Выберыце інтэрвал нарэзкі выбрана - Пад\ʼём вышыні: %1$s + Пад\ʼём/спад: %1$s Загрузка %1$s… Бягучы час Кропка шляху From 1d028b6ad4ecf746fdf0e52c6bc1357c88a968f0 Mon Sep 17 00:00:00 2001 From: Ludek M Date: Wed, 11 Jun 2014 12:50:29 +0200 Subject: [PATCH 02/40] Translated using Weblate. --- OsmAnd/res/values-cs/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index fd858a1204..82762848ee 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -1022,7 +1022,7 @@ Mezicíl Cíl je příliš daleko od nejbližší cesty. Přidat označení -Pokročilé… +Pokročilý režim… \tOsmAnd podporuje několik konfigurovatelných profilů pro různé způsoby dopravy. \t\nProfil můžete změnit tlačítkem v levém dolním rohu mapové obrazovky (ikona auta, kola nebo chodce) nebo při zadávání navigace. @@ -1096,7 +1096,8 @@ Ostatní mapy Máte nainstalovanou starou verzi modulu OsMoDroid, která potřebuje být aktualizována. "\tVětšina přijímačů GPS měří výškové souřadnice v systému WGS84. Převod z něj do lokálního systému vyžaduje korekci závislou na pozici. -\n\tLepší aproximace k těmro lokálním systémům je systém EGM96. OsmAnd nyní podporuje automatické zobrazení nadmořské výšky v tomto systému.\n\tPro zobrazení výšky v systému EGM96 stáhněte soubor WW15MGH.DAC ve Správci offline dat (originál souboru je na http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC). " +\n\tLepší aproximace k těmro lokálním systémům je systém EGM96. OsmAnd nyní podporuje automatické zobrazení nadmořské výšky v tomto systému.\n\tPro zobrazení výšky v systému EGM96 stáhněte soubor WW15MGH.DAC ve Správci offline dat (originál souboru je na http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC). " + Modul OsMoDroid je rozšíření OsmAnd pro použití s aplikací OsModroid pro přímý přenos pozice. Informace o službě OsModroid jsou dostupné na http://esya.ru. Modul OsMoDroid From 7845013866f1d78fbb996d2dcf3753f9fb7159e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Michalski?= Date: Wed, 11 Jun 2014 19:56:30 +0200 Subject: [PATCH 03/40] Translated using Weblate. --- OsmAnd/res/values-pl/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index 00058742aa..a97fed23ef 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -1821,8 +1821,8 @@ Afganistan, Afryka Południowa, Albania, Algieria, Andora, Angola, Anguilla, Ant Prędkość średnia: %1$s Prędkość maksymalna: %1$s Średnia wysokość: %1$s - Różnica wysokości: %1$s - Wysokość wzniesień: %1$s + Zakres wysokości: %1$s + Zjazd/podjazd: %1$s Okres czasu: %1$s Czas w ruchu: %1$s Odcinek From 5f06612c119a0e17b9423e96ab6b2ba433d0f4b7 Mon Sep 17 00:00:00 2001 From: ace shadow Date: Wed, 11 Jun 2014 20:57:48 +0200 Subject: [PATCH 04/40] Translated using Weblate. --- OsmAnd/res/values-sk/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index a49682f14a..b8693c84b8 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -1872,8 +1872,8 @@ Afganistan, Albánsko, Alžírsko, Andora, Angola, Anguilla, Antigua a Barbuda, Priemerná rýchlosť: %1$s Maximálna rýchlosť: %1$s Priemerná výška: %1$s - Výškový rozdiel: %1$s - Výškové výstupy: %1$s + Výškový rozsah: %1$s + Zostup/výstup: %1$s Časový úsek: %1$s Čas pohybu: %1$s Úsek From 68f74b905e1287028a66dcf4edf039110313c6cc Mon Sep 17 00:00:00 2001 From: reza khan Date: Thu, 12 Jun 2014 00:30:50 +0200 Subject: [PATCH 05/40] Translated using Weblate. --- OsmAnd/res/values-fa/strings.xml | 36 ++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml index c984db3646..a2b2ac6ed6 100644 --- a/OsmAnd/res/values-fa/strings.xml +++ b/OsmAnd/res/values-fa/strings.xml @@ -1,4 +1,5 @@ -پشتیبان‌گیری از تغییرات OsmAnd ناموفق بود + +پشتیبان‌گیری از تغییرات OsmAnd ناموفق بود زمان دقت سرعت @@ -918,7 +919,7 @@ \n\t* بسته سایه تپه برای افزونه منحنی‌های هم‌تراز \n\t* رفع اشکال (بهینه سازی مسیریابی) - این افزونه، منحنی‌های هم‌تراز را که در نقشه‌های آفلاین OsmAnd نمایش داده میشوند فراهم میکند. داده‌های جهانی (بین 70 درجه شمالی و 70 درجه جنوبی) در این زمینه براساس اندازه گیری‌های SRTM (مأموریت توپوگرافی رادار شاتل) و ASTER (رادیومتر انعکاسی و پرتویی حرارتی هوایی پیشرفته)، یک ابزار تصویربرداری پردازنده ترا و ماهواره فوق پیشرفته سیستم نظارتی زمین ناسا مییباشند. ASTER محصول تلاش مشترک میان ناسا، وزارت اقتصاد ژاپن، صنعت و تجارت (متی)، و سیستم های فضایی ژاپن (جی-اسپیس سیستم) است. + این افزونه، منحنی‌های هم‌تراز را که در نقشه‌های آفلاین OsmAnd نمایش داده میشوند فراهم میکند. داده‌های جهانی (بین 70 درجه شمالی و 70 درجه جنوبی) در این زمینه براساس اندازه گیری‌های SRTM (مأموریت توپوگرافی رادار شاتل) و ASTER (رادیومتر انعکاسی و پرتویی حرارتی هوایی پیشرفته)، یک ابزار تصویربرداری پردازنده ترا و ماهواره فوق پیشرفته سیستم نظارتی زمین ناسا مییباشند. ASTER محصول تلاش مشترک میان ناسا، وزارت اقتصاد ژاپن، صنعت و تجارت (متی)، و سیستم های فضایی ژاپن (جی-اسپیس سیستم) است. تسهیل دانلود خطوط هم‌تراز و سایه تپه (\'تنظیمات\'->\'مدیریت داده‌ها\'->\'دانلود\'->\'انتخاب نوع نقشه\' مورد نظر). جی پی ایکس محو کردن همه عوارض زمین روی نقشه @@ -1662,7 +1663,7 @@ OsmAnd منبع باز است و فعالانه در حال توسعه است. \n\t* مهم: نقشه‌ها باید جدیدتر از فوریه ۲۰۱۴ باشند. \n\t* سیستم مسیریابی کاملاً به‌روزرسانی شد (از لحاظ سرعت و دقت)- \n\t* صفحه جدید برای برنامه‌ریزی مسیر سفر (بسیار زیباتر و موثرتر) - \n\t** نکته: فایل‌های GPX از طریق دکمه تنظیمات قابل دستیابی هستند. + \n\t** نکته: فایل‌های GPX از طریق دکمه تنظیمات قابل دستیابی هستند. \n\t* دکمه‌ها در حالت مسیریابی به صورت خودکار مخفی میشوند. \n\t* محاسبه مسیر آفلاین بسته به اولین نقطه مسیر GPX \n\t* شبیه‌سازی فعال در داخل تونلها @@ -1839,4 +1840,31 @@ OsmAnd منبع باز است و فعالانه در حال توسعه است. کاربر %1$s گروه چپ %2$s نمایش اطلاعیه های گروه نمایش پیام ها از زمانی که کاربر به گروه پیوسته و یا گروه را ترک کرده - \ No newline at end of file + بارگزاری %1$s … + هم اکنون + ایستگاه بین راه + \n\n برای نمایش بر روی نقشه انگشت خود را چند لحظه بر روی صفحه نگه دارید + شروع مسیریابی در زمان دیگر + انتخاب + انتخاب بازه زمانی + مسیر فرعی: %1$s + ایستگاههای بین راه: %1$s + فاصله: %1$s (%2$s points) + زمان شروع: %1$tF, %1$tT + زمان اتمام: %1$tF, %1$tT + سرعت متوسط: %1$s + بیشترین سرعت: %1$s + میانگین ارتفاع: %1$s + ارتفاع: %1$s + فرود/صعود: %1$s + مدت زمان: %1$s + زمان حرکت: %1$s + بخش + %1$s نقاط + نقطه %1$s + ثبت + %1$s \nنقاط مسیر %2$s + %1$s \n نقاط + %1$s \n مسیر %2$s + ثبت مسیر فعلی + From 7cd2c6f819a8808f2ab1a2de80f917161776ac0b Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Wed, 11 Jun 2014 19:14:12 +0200 Subject: [PATCH 06/40] Show labels for POI, favorites and gpx points --- OsmAnd/res/values/colors.xml | 2 +- OsmAnd/res/values/strings.xml | 3 +- .../net/osmand/plus/FavouritesDbHelper.java | 5 +- OsmAnd/src/net/osmand/plus/OsmandPlugin.java | 4 + .../activities/FavouritesListFragment.java | 2 +- .../activities/FavouritesTreeFragment.java | 2 +- .../plus/activities/MapActivityLayers.java | 22 +- .../plus/base/FavoriteImageDrawable.java | 20 +- .../plus/osmo/SettingsOsMoActivity.java | 13 +- .../plus/sherpafy/SherpafyCustomization.java | 2 +- .../net/osmand/plus/views/FavoritesLayer.java | 36 ++- .../src/net/osmand/plus/views/GPXLayer.java | 43 +++- .../net/osmand/plus/views/MapTextLayer.java | 196 +++++++++++++++ .../osmand/plus/views/OsmandMapTileView.java | 12 + .../net/osmand/plus/views/POIMapLayer.java | 224 ++++++------------ 15 files changed, 389 insertions(+), 197 deletions(-) create mode 100644 OsmAnd/src/net/osmand/plus/views/MapTextLayer.java diff --git a/OsmAnd/res/values/colors.xml b/OsmAnd/res/values/colors.xml index 727f344a18..26db37c054 100644 --- a/OsmAnd/res/values/colors.xml +++ b/OsmAnd/res/values/colors.xml @@ -7,7 +7,7 @@ #0080FF #00000000 - + #eecc22 #A5A5A5 diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 24ff53c071..35651165cd 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -9,6 +9,7 @@ 3. All your modified/created strings are in the top of the file (to make easier find what\'s translated). PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy --> + Text labels Loading %1$s … Current time Waypoint @@ -1233,7 +1234,7 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Village Town City - POI labels + Stop simulation Start simulation Changes in 0.6.8: diff --git a/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java b/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java index 8c7d6df754..95ebb492e7 100644 --- a/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java +++ b/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java @@ -31,7 +31,6 @@ public class FavouritesDbHelper { public static final String FILE_TO_SAVE = "favourites.gpx"; //$NON-NLS-1$ public static final String FILE_TO_BACKUP = "favourites_bak.gpx"; //$NON-NLS-1$ - private List favoritePointsFromGPXFile = null; private List cachedFavoritePoints = new ArrayList(); private Map> favoriteGroups = null; private final OsmandApplication context; @@ -111,9 +110,7 @@ public class FavouritesDbHelper { addCategoryQuery(context.getString(R.string.favorite_default_category), db); } - public List getFavoritePointsFromGPXFile() { - return favoritePointsFromGPXFile; - } + diff --git a/OsmAnd/src/net/osmand/plus/OsmandPlugin.java b/OsmAnd/src/net/osmand/plus/OsmandPlugin.java index 754fe79ffa..adcb61613b 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandPlugin.java +++ b/OsmAnd/src/net/osmand/plus/OsmandPlugin.java @@ -319,5 +319,9 @@ public abstract class OsmandPlugin { } } + public static boolean isDevelopment() { + return getEnabledPlugin(OsmandDevelopmentPlugin.class) != null; + } + } diff --git a/OsmAnd/src/net/osmand/plus/activities/FavouritesListFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavouritesListFragment.java index ae01075207..14f9075bdb 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavouritesListFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavouritesListFragment.java @@ -176,7 +176,7 @@ public class FavouritesListFragment extends SherlockListFragment implements Sear TextView label = (TextView) row.findViewById(R.id.favourite_label); ImageView icon = (ImageView) row.findViewById(R.id.favourite_icon); final FavouritePoint model = getItem(position); - icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(activity, 0)); + icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(activity, model.getColor())); String distance = ""; if (location != null) { int dist = (int) (MapUtils.getDistance(model.getLatitude(), model.getLongitude(), location.getLatitude(), location diff --git a/OsmAnd/src/net/osmand/plus/activities/FavouritesTreeFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavouritesTreeFragment.java index cb0024da7d..13af2e3188 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavouritesTreeFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavouritesTreeFragment.java @@ -698,7 +698,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { ImageView icon = (ImageView) row.findViewById(R.id.favourite_icon); final FavouritePoint model = (FavouritePoint) getChild(groupPosition, childPosition); row.setTag(model); - icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(getActivity(), 0)); + icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(getActivity(), model.getColor())); LatLon lastKnownMapLocation = getMyApplication().getSettings().getLastKnownMapLocation(); int dist = (int) (MapUtils.getDistance(model.getLatitude(), model.getLongitude(), lastKnownMapLocation.getLatitude(), lastKnownMapLocation.getLongitude())); diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java index ae7ac7e9dd..fabe8200c5 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java @@ -4,7 +4,6 @@ package net.osmand.plus.activities; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; import java.util.Map.Entry; import net.osmand.CallbackWithObject; @@ -17,7 +16,6 @@ import net.osmand.map.TileSourceManager.TileSourceTemplate; import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.ContextMenuAdapter.Item; import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick; -import net.osmand.plus.GPXUtilities; import net.osmand.plus.GPXUtilities.GPXFile; import net.osmand.plus.GPXUtilities.WptPt; import net.osmand.plus.OsmAndFormatter; @@ -46,6 +44,7 @@ import net.osmand.plus.views.POIMapLayer; import net.osmand.plus.views.PointLocationLayer; import net.osmand.plus.views.PointNavigationLayer; import net.osmand.plus.views.RouteLayer; +import net.osmand.plus.views.MapTextLayer; import net.osmand.plus.views.TransportInfoLayer; import net.osmand.plus.views.TransportStopsLayer; import android.app.AlertDialog; @@ -87,6 +86,7 @@ public class MapActivityLayers { private PointLocationLayer locationLayer; private PointNavigationLayer navigationLayer; private MapInfoLayer mapInfoLayer; + private MapTextLayer mapTextLayer; private ContextMenuLayer contextMenuLayer; private MapControlsLayer mapControlsLayer; private DownloadedRegionsLayer downloadedRegionsLayer; @@ -104,7 +104,10 @@ public class MapActivityLayers { OsmandApplication app = (OsmandApplication) getApplication(); RoutingHelper routingHelper = app.getRoutingHelper(); - + // first create to make accessible + mapTextLayer = new MapTextLayer(); + // 5.95 all labels + mapView.addLayer(mapTextLayer, 5.95f); // mapView.addLayer(underlayLayer, -0.5f); mapTileLayer = new MapTileLayer(true); mapView.addLayer(mapTileLayer, 0.0f); @@ -135,8 +138,9 @@ public class MapActivityLayers { // 5.5 transport info layer transportInfoLayer = new TransportInfoLayer(TransportRouteHelper.getInstance()); mapView.addLayer(transportInfoLayer, 5.5f); + // 5.95 all text labels // 6. point location layer - locationLayer = new PointLocationLayer(activity.getMapViewTrackingUtilities()); + locationLayer = new PointLocationLayer(MapActivity.getMapViewTrackingUtilities()); mapView.addLayer(locationLayer, 6); // 7. point navigation layer navigationLayer = new PointNavigationLayer(activity); @@ -248,9 +252,8 @@ public class MapActivityLayers { selectPOIFilterLayer(mapView); } settings.SHOW_POI_OVER_MAP.set(isChecked); - } else if(itemId == R.string.layer_poi_label){ + } else if(itemId == R.string.layer_amenity_label){ settings.SHOW_POI_LABEL.set(isChecked); - } else if(itemId == R.string.layer_favorites){ settings.SHOW_FAVORITES.set(isChecked); } else if(itemId == R.string.layer_gpx_layer){ @@ -276,7 +279,7 @@ public class MapActivityLayers { // String appMode = " [" + settings.getApplicationMode().toHumanString(view.getApplication()) +"] "; adapter.item(R.string.layer_poi).selected(settings.SHOW_POI_OVER_MAP.get() ? 1 : 0) .icons(R.drawable.ic_action_info_dark, R.drawable.ic_action_info_light).reg(); - adapter.item(R.string.layer_poi_label).selected(settings.SHOW_POI_LABEL.get() ? 1 : 0) + adapter.item(R.string.layer_amenity_label).selected(settings.SHOW_POI_LABEL.get() ? 1 : 0) .icons(R.drawable.ic_action_text_dark, R.drawable.ic_action_text_light).reg(); adapter.item(R.string.layer_favorites).selected(settings.SHOW_FAVORITES.get() ? 1 : 0) .icons(R.drawable.ic_action_fav_dark, R.drawable.ic_action_fav_light).reg(); @@ -611,6 +614,11 @@ public class MapActivityLayers { public FavoritesLayer getFavoritesLayer() { return favoritesLayer; } + + public MapTextLayer getMapTextLayer() { + return mapTextLayer; + } + public PointLocationLayer getLocationLayer() { return locationLayer; } diff --git a/OsmAnd/src/net/osmand/plus/base/FavoriteImageDrawable.java b/OsmAnd/src/net/osmand/plus/base/FavoriteImageDrawable.java index ffbc4cd4a6..1d04a5d913 100644 --- a/OsmAnd/src/net/osmand/plus/base/FavoriteImageDrawable.java +++ b/OsmAnd/src/net/osmand/plus/base/FavoriteImageDrawable.java @@ -11,6 +11,7 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.Paint; +import android.graphics.RectF; import android.graphics.Paint.Style; import android.graphics.Rect; import android.graphics.drawable.Drawable; @@ -26,8 +27,8 @@ public class FavoriteImageDrawable extends Drawable { private Drawable drawable; private float density; private Bitmap bmp; - private int bmpSize; private Paint paintBmp; + private RectF bmpDest; public FavoriteImageDrawable(Context ctx, int color) { @@ -39,7 +40,7 @@ public class FavoriteImageDrawable extends Drawable { density = dm.density; drawable = getResources().getDrawable(R.drawable.ic_action_fav_dark); bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_fav_light); - bmpSize = bmp.getWidth(); + bmpDest = new RectF(); paintOuter = new Paint(); paintOuter.setColor(0x88555555); paintOuter.setAntiAlias(true); @@ -50,7 +51,7 @@ public class FavoriteImageDrawable extends Drawable { paintBmp.setDither(true); paintInnerCircle = new Paint(); paintInnerCircle.setStyle(Style.FILL_AND_STROKE); - paintInnerCircle.setColor(color == 0 || color == Color.BLACK ? getResources().getColor(R.color.color_distance) : color); + paintInnerCircle.setColor(color == 0 || color == Color.BLACK ? getResources().getColor(R.color.color_favorite) : color); paintInnerCircle.setAntiAlias(true); } @@ -96,13 +97,12 @@ public class FavoriteImageDrawable extends Drawable { drawable.draw(canvas); } - public void drawBitmapInCenter(Canvas canvas, int x, int y) { - int min = (int) (bmpSize + 4 * density); - int r = (int) (min / 2); - int rs = (int) (min / 2 - 2 * density); - canvas.drawCircle(x, density + y, r, paintOuter); - canvas.drawCircle(x, density + y, rs, paintInnerCircle); - canvas.drawBitmap(bmp, x - bmpSize / 2, y - bmpSize / 2 , paintBmp); + public void drawBitmapInCenter(Canvas canvas, int x, int y, float density) { + float bmpRad = 10 * density; + bmpDest.set(x - bmpRad, y - bmpRad, x + bmpRad, y + bmpRad); + canvas.drawCircle(x, density + y, bmpRad + 3 * density, paintOuter); + canvas.drawCircle(x, density + y, bmpRad + 2 * density, paintInnerCircle); + canvas.drawBitmap(bmp, null, bmpDest, paintBmp); } @Override diff --git a/OsmAnd/src/net/osmand/plus/osmo/SettingsOsMoActivity.java b/OsmAnd/src/net/osmand/plus/osmo/SettingsOsMoActivity.java index bdd000db44..2eb1c676da 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/SettingsOsMoActivity.java +++ b/OsmAnd/src/net/osmand/plus/osmo/SettingsOsMoActivity.java @@ -4,6 +4,7 @@ package net.osmand.plus.osmo; import java.util.List; import net.osmand.access.AccessibleToast; +import net.osmand.plus.OsmandPlugin; import net.osmand.plus.R; import net.osmand.plus.activities.SettingsBaseActivity; import net.osmand.plus.activities.actions.ShareDialog; @@ -60,11 +61,13 @@ public class SettingsOsMoActivity extends SettingsBaseActivity { sendLocationsref.setSummary(R.string.osmo_show_group_notifications_descr); grp.addPreference(sendLocationsref); - debugPref = new Preference(this); - debugPref.setTitle(R.string.osmo_settings_debug); - debugPref.setOnPreferenceClickListener(this); - updateDebugPref(); - grp.addPreference(debugPref); + if (OsmandPlugin.isDevelopment()) { + debugPref = new Preference(this); + debugPref.setTitle(R.string.osmo_settings_debug); + debugPref.setOnPreferenceClickListener(this); + updateDebugPref(); + grp.addPreference(debugPref); + } } private void updateDebugPref() { diff --git a/OsmAnd/src/net/osmand/plus/sherpafy/SherpafyCustomization.java b/OsmAnd/src/net/osmand/plus/sherpafy/SherpafyCustomization.java index 1a80f0217e..432555d259 100644 --- a/OsmAnd/src/net/osmand/plus/sherpafy/SherpafyCustomization.java +++ b/OsmAnd/src/net/osmand/plus/sherpafy/SherpafyCustomization.java @@ -242,7 +242,7 @@ public class SherpafyCustomization extends OsmAndAppCustomization { @Override public void prepareLayerContextMenu(MapActivity activity, ContextMenuAdapter adapter) { - filter(adapter, R.string.layer_poi, R.string.layer_poi_label, R.string.layer_favorites); + filter(adapter, R.string.layer_poi, R.string.layer_amenity_label, R.string.layer_favorites); } @Override diff --git a/OsmAnd/src/net/osmand/plus/views/FavoritesLayer.java b/OsmAnd/src/net/osmand/plus/views/FavoritesLayer.java index e391a99f70..aa7da43857 100644 --- a/OsmAnd/src/net/osmand/plus/views/FavoritesLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/FavoritesLayer.java @@ -13,6 +13,7 @@ import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick; import net.osmand.plus.FavouritesDbHelper; import net.osmand.plus.R; import net.osmand.plus.base.FavoriteImageDrawable; +import net.osmand.plus.views.MapTextLayer.MapTextProvider; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; @@ -22,19 +23,18 @@ import android.graphics.Paint; import android.graphics.PointF; import android.widget.Toast; -public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider { +public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider, MapTextProvider { private static final int startZoom = 6; private OsmandMapTileView view; private Paint paint; private FavouritesDbHelper favorites; + private List cache = new ArrayList(); + private MapTextLayer textLayer; // private Bitmap d; - public FavoritesLayer(){ - } - @Override public void initLayer(OsmandMapTileView view) { @@ -45,6 +45,7 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.I paint.setDither(true); favorites = view.getApplication().getFavorites(); + textLayer = view.getLayerByClass(MapTextLayer.class); // favoriteIcon = BitmapFactory.decodeResource(view.getResources(), R.drawable.poi_favourite); @@ -74,6 +75,7 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.I @Override public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) { + cache.clear(); if (tileBox.getZoom() >= startZoom) { // request to load final QuadRect latLonBounds = tileBox.getLatLonBounds(); @@ -81,15 +83,19 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.I if (o.getLatitude() >= latLonBounds.bottom && o.getLatitude() <= latLonBounds.top && o.getLongitude() >= latLonBounds.left && o.getLongitude() <= latLonBounds.right ) { + cache.add(o); int x = (int) tileBox.getPixXFromLatLon(o.getLatitude(), o.getLongitude()); int y = (int) tileBox.getPixYFromLatLon(o.getLatitude(), o.getLongitude()); FavoriteImageDrawable fid = FavoriteImageDrawable.getOrCreate(view.getContext(), o.getColor()); - fid.drawBitmapInCenter(canvas, x, y); + fid.drawBitmapInCenter(canvas, x, y, tileBox.getDensity()); // canvas.drawBitmap(favoriteIcon, x - favoriteIcon.getWidth() / 2, // y - favoriteIcon.getHeight(), paint); } } } + if(textLayer.isVisible()) { + textLayer.putData(this, cache); + } } @@ -113,9 +119,12 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.I @Override public boolean onSingleTap(PointF point, RotatedTileBox tileBox) { + if(tileBox.getZoom() < 11) { + return false; + } List favs = new ArrayList(); getFavoriteFromPoint(tileBox, point, favs); - if(!favs.isEmpty()){ + if(!favs.isEmpty() && (tileBox.getZoom() > 14 || favs.size() < 6)){ StringBuilder res = new StringBuilder(); int i = 0; for(FavouritePoint fav : favs) { @@ -188,6 +197,21 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.I R.drawable.ic_action_delete_light).listen(listener).reg(); } } + + @Override + public LatLon getTextLocation(FavouritePoint o) { + return new LatLon(o.getLatitude(), o.getLongitude()); + } + + @Override + public int getTextShift(FavouritePoint o, RotatedTileBox rb) { + return (int) (16 * rb.getDensity()); + } + + @Override + public String getText(FavouritePoint o) { + return o.getName(); + } } diff --git a/OsmAnd/src/net/osmand/plus/views/GPXLayer.java b/OsmAnd/src/net/osmand/plus/views/GPXLayer.java index 9e43a0c002..b1de3b0284 100644 --- a/OsmAnd/src/net/osmand/plus/views/GPXLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/GPXLayer.java @@ -13,6 +13,7 @@ import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; import net.osmand.plus.R; import net.osmand.plus.base.FavoriteImageDrawable; +import net.osmand.plus.views.MapTextLayer.MapTextProvider; import net.osmand.render.RenderingRuleSearchRequest; import net.osmand.render.RenderingRulesStorage; import android.graphics.Canvas; @@ -24,7 +25,8 @@ import android.graphics.Path; import android.graphics.PointF; import android.widget.Toast; -public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider { +public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider, + MapTextProvider{ private OsmandMapTileView view; @@ -40,6 +42,9 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex private GpxSelectionHelper selectedGpxHelper; private Paint paintBmp; + private List cache = new ArrayList(); + private MapTextLayer textLayer; + // private Drawable favoriteIcon; @@ -57,6 +62,8 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex paintBmp.setAntiAlias(true); paintBmp.setFilterBitmap(true); paintBmp.setDither(true); + + textLayer = view.getLayerByClass(MapTextLayer.class); //favoriteIcon = BitmapFactory.decodeResource(view.getResources(), R.drawable.poi_favourite); } @@ -90,6 +97,8 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) { List selectedGPXFiles = selectedGpxHelper.getSelectedGPXFiles(); int clr = getColor(settings); + cache.clear(); + int pointColor = view.getResources().getColor(R.color.gpx_track); if (!selectedGPXFiles.isEmpty()) { for (SelectedGpxFile g : selectedGPXFiles) { List> points = g.getPointsToDisplay(); @@ -102,14 +111,15 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex final QuadRect latLonBounds = tileBox.getLatLonBounds(); for (SelectedGpxFile g : selectedGPXFiles) { List pts = g.getGpxFile().points; - int fcolor = g.getColor() == 0 ? clr : g.getColor(); + int fcolor = g.getColor() == 0 ? pointColor : g.getColor(); FavoriteImageDrawable fid = FavoriteImageDrawable.getOrCreate(view.getContext(), fcolor); for (WptPt o : pts) { if (o.lat >= latLonBounds.bottom && o.lat <= latLonBounds.top && o.lon >= latLonBounds.left && o.lon <= latLonBounds.right) { + cache.add(o); int x = (int) tileBox.getPixXFromLatLon(o.lat, o.lon); int y = (int) tileBox.getPixYFromLatLon(o.lat, o.lon); - fid.drawBitmapInCenter(canvas, x, y); + fid.drawBitmapInCenter(canvas, x, y, tileBox.getDensity()); // canvas.drawBitmap(favoriteIcon, x - favoriteIcon.getWidth() / 2, // y - favoriteIcon.getHeight(), paint); } @@ -117,6 +127,9 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex } } } + if(textLayer.isVisible()) { + textLayer.putData(this, cache); + } } private void drawSegments(Canvas canvas, RotatedTileBox tileBox, List> points) { @@ -188,9 +201,12 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex @Override public boolean onSingleTap(PointF point, RotatedTileBox tileBox) { + if(tileBox.getZoom() < 11) { + return false; + } List favs = new ArrayList(); getWptFromPoint(tileBox, point, favs); - if(!favs.isEmpty()){ + if(!favs.isEmpty() && (tileBox.getZoom() > 14 || favs.size() < 6)){ StringBuilder res = new StringBuilder(); int i = 0; for(WptPt fav : favs) { @@ -229,8 +245,8 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex @Override public LatLon getObjectLocation(Object o) { - if(o instanceof FavouritePoint){ - return new LatLon(((FavouritePoint)o).getLatitude(), ((FavouritePoint)o).getLongitude()); + if(o instanceof WptPt){ + return new LatLon(((WptPt)o).lat, ((WptPt)o).lon); } return null; } @@ -250,6 +266,21 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex return false; } + @Override + public LatLon getTextLocation(WptPt o) { + return new LatLon(((WptPt)o).lat, ((WptPt)o).lon); + } + + @Override + public int getTextShift(WptPt o, RotatedTileBox rb) { + return (int) (16 * rb.getDensity()); + } + + @Override + public String getText(WptPt o) { + return o.name; + } + diff --git a/OsmAnd/src/net/osmand/plus/views/MapTextLayer.java b/OsmAnd/src/net/osmand/plus/views/MapTextLayer.java new file mode 100644 index 0000000000..c7d709839c --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/views/MapTextLayer.java @@ -0,0 +1,196 @@ +package net.osmand.plus.views; + +import gnu.trove.set.hash.TIntHashSet; + +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +import net.osmand.data.LatLon; +import net.osmand.data.RotatedTileBox; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Paint.Align; +import android.graphics.Paint.Style; + +public class MapTextLayer extends OsmandMapLayer { + + private Map> textObjects = new LinkedHashMap>(); + public static final int TEXT_WRAP = 15; + public static final int TEXT_LINES = 3; + private Paint paintTextIcon; + private OsmandMapTileView view; + + + public interface MapTextProvider { + + LatLon getTextLocation(T o); + + int getTextShift(T o, RotatedTileBox rb); + + String getText(T o); + } + + public void putData(OsmandMapLayer ml, List objects) { + if(objects == null || objects.isEmpty()) { + textObjects.remove(ml); + } else { + if(ml instanceof MapTextProvider) { + textObjects.put(ml, objects); + } else { + throw new IllegalArgumentException(); + } + } + } + + public boolean isVisible() { + return view.getSettings().SHOW_POI_LABEL.get(); + } + + @SuppressWarnings("unchecked") + @Override + public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) { + if (!view.getSettings().SHOW_POI_LABEL.get()) { + return; + } + TIntHashSet set = new TIntHashSet(); + for (OsmandMapLayer l : textObjects.keySet()) { + if (view.isLayerVisible(l)) { + for (Object o : textObjects.get(l)) { + LatLon location = ((MapTextProvider) l).getTextLocation(o); + int x = (int) tileBox.getPixXFromLatLon(location.getLatitude(), location + .getLongitude()); + int y = (int) tileBox.getPixYFromLatLon(location.getLatitude(), location + .getLongitude()); + int tx = tileBox.getPixXFromLonNoRot(location.getLongitude()); + int ty = tileBox.getPixYFromLatNoRot(location.getLatitude()); + String name = ((MapTextProvider) l).getText(o); + if (name != null && name.length() > 0) { + int lines = 0; + while (lines < TEXT_LINES) { + if (set.contains(division(tx, ty, 0, lines)) || set.contains(division(tx, ty, -1, lines)) + || set.contains(division(tx, ty, +1, lines))) { + break; + } + lines++; + } + if (lines == 0) { + // drawWrappedText(canvas, "...", paintTextIcon.getTextSize(), x, y + r + 2 + + // paintTextIcon.getTextSize() / 2, 1); + } else { + int r = ((MapTextProvider) l).getTextShift(o, tileBox); + drawWrappedText(canvas, name, paintTextIcon.getTextSize(), x, + y + r + 2 + paintTextIcon.getTextSize() / 2, lines); + while (lines > 0) { + set.add(division(tx, ty, 1, lines - 1)); + set.add(division(tx, ty, -1, lines - 1)); + set.add(division(tx, ty, 0, lines - 1)); + lines--; + } + } + } + } + } + } + } + + private int division(int x, int y, int sx, int sy) { + // make numbers positive + return ((((x + 10000) >> 4) + sx) << 16) | (((y + 10000) >> 4) + sy); + } + + private void drawWrappedText(Canvas cv, String text, float textSize, float x, float y, int lines) { + if(text.length() > TEXT_WRAP){ + int start = 0; + int end = text.length(); + int lastSpace = -1; + int line = 0; + int pos = 0; + int limit = 0; + while(pos < end && (line < lines)){ + lastSpace = -1; + limit += TEXT_WRAP; + while(pos < limit && pos < end){ + if(!Character.isLetterOrDigit(text.charAt(pos))){ + lastSpace = pos; + } + pos++; + } + if(lastSpace == -1 || (pos == end)){ + drawShadowText(cv, text.substring(start, pos), x, y + line * (textSize + 2)); + start = pos; + } else { + String subtext = text.substring(start, lastSpace); + if (line + 1 == lines) { + subtext += ".."; + } + drawShadowText(cv, subtext, x, y + line * (textSize + 2)); + + start = lastSpace + 1; + limit += (start - pos) - 1; + } + + line++; + + + } + } else { + drawShadowText(cv, text, x, y); + } + } + + private void drawShadowText(Canvas cv, String text, float centerX, float centerY) { + int c = paintTextIcon.getColor(); + paintTextIcon.setStyle(Style.STROKE); + paintTextIcon.setColor(Color.WHITE); + paintTextIcon.setStrokeWidth(2); + cv.drawText(text, centerX, centerY, paintTextIcon); + // reset + paintTextIcon.setStrokeWidth(2); + paintTextIcon.setStyle(Style.FILL); + paintTextIcon.setColor(c); + cv.drawText(text, centerX, centerY, paintTextIcon); + } + + @Override + public void initLayer(OsmandMapTileView v) { + this.view = v; + paintTextIcon = new Paint(); + paintTextIcon.setTextSize(13 * v.getDensity()); + paintTextIcon.setTextAlign(Align.CENTER); + paintTextIcon.setAntiAlias(true); + Map> textObjectsLoc = new TreeMap>(new Comparator() { + + @Override + public int compare(OsmandMapLayer lhs, OsmandMapLayer rhs) { + if(view != null) { + float z1 = view.getZorder(lhs); + float z2 = view.getZorder(rhs); + return Float.compare(z1, z2); + + } + return 0; + } + }); + textObjectsLoc.putAll(this.textObjects); + this.textObjects = textObjectsLoc; + } + + @Override + public void onDraw(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) { + } + + @Override + public void destroyLayer() { + } + + @Override + public boolean drawInScreenPixels() { + return false; + } + +} diff --git a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java index ef432a2197..bf89537d5a 100644 --- a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java +++ b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java @@ -236,6 +236,18 @@ public class OsmandMapTileView extends SurfaceView implements IMapDownloaderCall public boolean onKeyDown(int keyCode, KeyEvent event) { return application.accessibilityEnabled() ? false : super.onKeyDown(keyCode, event); } + + public boolean isLayerVisible(OsmandMapLayer layer) { + return layers.contains(layer); + } + + public float getZorder(OsmandMapLayer layer) { + Float z = zOrders.get(layer); + if(z == null) { + return 10; + } + return z; + } public synchronized void addLayer(OsmandMapLayer layer, float zOrder) { int i = 0; diff --git a/OsmAnd/src/net/osmand/plus/views/POIMapLayer.java b/OsmAnd/src/net/osmand/plus/views/POIMapLayer.java index ec8cdc2563..1009798533 100644 --- a/OsmAnd/src/net/osmand/plus/views/POIMapLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/POIMapLayer.java @@ -1,7 +1,5 @@ package net.osmand.plus.views; -import gnu.trove.set.hash.TIntHashSet; - import java.util.ArrayList; import java.util.List; @@ -21,6 +19,7 @@ import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.render.RenderingIcons; import net.osmand.plus.resources.ResourceManager; +import net.osmand.plus.views.MapTextLayer.MapTextProvider; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; @@ -29,43 +28,40 @@ import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; -import android.graphics.Paint.Align; import android.graphics.Paint.Style; import android.graphics.PointF; import android.net.Uri; import android.widget.Toast; -public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider { +public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider, + MapTextProvider { private static final int startZoom = 10; - public static final int TEXT_WRAP = 15; - public static final int TEXT_LINES = 3; + public static final org.apache.commons.logging.Log log = PlatformUtil.getLog(POIMapLayer.class); - - + private Paint pointAltUI; private Paint paintIcon; - private Paint paintTextIcon; private Paint point; private OsmandMapTileView view; private List objects = new ArrayList(); private final static int MAXIMUM_SHOW_AMENITIES = 5; - + private ResourceManager resourceManager; private PoiFilter filter; + private MapTextLayer mapTextLayer; public POIMapLayer(MapActivity activity) { } - public PoiFilter getFilter() { return filter; } - + public void setFilter(PoiFilter filter) { this.filter = filter; } - - public void getAmenityFromPoint(RotatedTileBox tb, PointF point, List am){ + + public void getAmenityFromPoint(RotatedTileBox tb, PointF point, List am) { if (objects != null) { int ex = (int) point.x; int ey = (int) point.y; @@ -87,13 +83,12 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon } } } - @Override public boolean onSingleTap(PointF point, RotatedTileBox tileBox) { List am = new ArrayList(); getAmenityFromPoint(tileBox, point, am); - if(!am.isEmpty()){ + if (!am.isEmpty()) { StringBuilder res = new StringBuilder(); for (int i = 0; i < MAXIMUM_SHOW_AMENITIES && i < am.size(); i++) { Amenity n = am.get(i); @@ -108,57 +103,51 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon return false; } - private StringBuilder buildPoiInformation(StringBuilder res, Amenity n) { - String format = OsmAndFormatter.getPoiSimpleFormat(n, view.getApplication(), view.getSettings().USE_ENGLISH_NAMES.get()); + String format = OsmAndFormatter.getPoiSimpleFormat(n, view.getApplication(), + view.getSettings().USE_ENGLISH_NAMES.get()); res.append(" " + format + "\n" + OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), n, true)); return res; } - - + @Override public void initLayer(OsmandMapTileView view) { this.view = view; pointAltUI = new Paint(); pointAltUI.setColor(view.getApplication().getResources().getColor(R.color.poi_background)); pointAltUI.setStyle(Style.FILL); - + paintIcon = new Paint(); - - paintTextIcon = new Paint(); - paintTextIcon.setTextSize(12 * view.getDensity()); - paintTextIcon.setTextAlign(Align.CENTER); - paintTextIcon.setAntiAlias(true); - + point = new Paint(); point.setColor(Color.GRAY); point.setAntiAlias(true); point.setStyle(Style.STROKE); resourceManager = view.getApplication().getResourceManager(); + mapTextLayer = view.getLayerByClass(MapTextLayer.class); } - - public int getRadiusPoi(RotatedTileBox tb){ + + public int getRadiusPoi(RotatedTileBox tb) { int r = 0; final float zoom = tb.getZoom() + tb.getZoomScale(); - if(zoom < startZoom){ + if (zoom < startZoom) { r = 0; - } else if(zoom <= 15){ + } else if (zoom <= 15) { r = 10; - } else if(zoom <= 16){ + } else if (zoom <= 16) { r = 14; - } else if(zoom <= 17){ + } else if (zoom <= 17) { r = 16; } else { r = 18; } return (int) (r * tb.getDensity()); } - + @Override public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) { - + objects.clear(); if (tileBox.getZoom() >= startZoom) { - objects.clear(); final QuadRect latLonBounds = tileBox.getLatLonBounds(); resourceManager.searchAmenitiesAsync(latLonBounds.top, latLonBounds.left, latLonBounds.bottom, latLonBounds.right, tileBox.getZoom(), filter, objects); @@ -174,114 +163,23 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon MapRenderingTypes.getDefault().getAmenityTagValue(o.getType(), o.getSubType(), tag, value); if (RenderingIcons.containsIcon(tag + "_" + value)) { id = tag + "_" + value; - } else if(RenderingIcons.containsIcon(tag.toString())){ + } else if (RenderingIcons.containsIcon(tag.toString())) { id = tag.toString(); - } - if(id != null){ + } + if (id != null) { Bitmap bmp = RenderingIcons.getIcon(view.getContext(), id); - if(bmp != null){ + if (bmp != null) { canvas.drawBitmap(bmp, x - bmp.getWidth() / 2, y - bmp.getHeight() / 2, paintIcon); } } } - - if (view.getSettings().SHOW_POI_LABEL.get()) { - TIntHashSet set = new TIntHashSet(); - for (Amenity o : objects) { - int x = (int) tileBox.getPixXFromLatLon(o.getLocation().getLatitude(), o.getLocation().getLongitude()); - int y = (int) tileBox.getPixYFromLatLon(o.getLocation().getLatitude(), o.getLocation().getLongitude()); - int tx = tileBox.getPixXFromLonNoRot(o.getLocation().getLongitude()); - int ty = tileBox.getPixYFromLatNoRot(o.getLocation().getLatitude()); - String name = o.getName(view.getSettings().USE_ENGLISH_NAMES.get()); - if (name != null && name.length() > 0) { - int lines = 0; - while (lines < TEXT_LINES) { - if (set.contains(division(tx, ty, 0, lines)) || - set.contains(division(tx, ty, -1, lines)) || set.contains(division(tx, ty, +1, lines))) { - break; - } - lines++; - } - if (lines == 0) { - // drawWrappedText(canvas, "...", paintTextIcon.getTextSize(), x, y + r + 2 + paintTextIcon.getTextSize() / 2, 1); - } else { - drawWrappedText(canvas, name, paintTextIcon.getTextSize(), x, y + r + 2 + paintTextIcon.getTextSize() / 2, - lines); - while (lines > 0) { - set.add(division(tx, ty, 1, lines - 1)); - set.add(division(tx, ty, -1, lines - 1)); - set.add(division(tx, ty, 0, lines - 1)); - lines--; - } - } + } + mapTextLayer.putData(this, objects); - } - } - } - } - } - - + @Override - public void onDraw(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) {} - - private int division(int x, int y, int sx, int sy) { - // make numbers positive - return ((((x + 10000) >> 4) + sx) << 16) | (((y + 10000) >> 4) + sy); - } - - private void drawWrappedText(Canvas cv, String text, float textSize, float x, float y, int lines) { - if(text.length() > TEXT_WRAP){ - int start = 0; - int end = text.length(); - int lastSpace = -1; - int line = 0; - int pos = 0; - int limit = 0; - while(pos < end && (line < lines)){ - lastSpace = -1; - limit += TEXT_WRAP; - while(pos < limit && pos < end){ - if(!Character.isLetterOrDigit(text.charAt(pos))){ - lastSpace = pos; - } - pos++; - } - if(lastSpace == -1 || (pos == end)){ - drawShadowText(cv, text.substring(start, pos), x, y + line * (textSize + 2)); - start = pos; - } else { - String subtext = text.substring(start, lastSpace); - if (line + 1 == lines) { - subtext += ".."; - } - drawShadowText(cv, subtext, x, y + line * (textSize + 2)); - - start = lastSpace + 1; - limit += (start - pos) - 1; - } - - line++; - - - } - } else { - drawShadowText(cv, text, x, y); - } - } - - private void drawShadowText(Canvas cv, String text, float centerX, float centerY) { - int c = paintTextIcon.getColor(); - paintTextIcon.setStyle(Style.STROKE); - paintTextIcon.setColor(Color.WHITE); - paintTextIcon.setStrokeWidth(2); - cv.drawText(text, centerX, centerY, paintTextIcon); - // reset - paintTextIcon.setStrokeWidth(2); - paintTextIcon.setStyle(Style.FILL); - paintTextIcon.setColor(c); - cv.drawText(text, centerX, centerY, paintTextIcon); + public void onDraw(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) { } @Override @@ -292,9 +190,10 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon public boolean drawInScreenPixels() { return true; } + @Override public void populateObjectContextMenu(Object o, ContextMenuAdapter adapter) { - if(o instanceof Amenity) { + if (o instanceof Amenity) { final Amenity a = (Amenity) o; OnContextMenuClick listener = new ContextMenuAdapter.OnContextMenuClick() { @Override @@ -302,7 +201,7 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon if (itemId == R.string.poi_context_menu_call) { try { Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setData(Uri.parse("tel:"+a.getPhone())); //$NON-NLS-1$ + intent.setData(Uri.parse("tel:" + a.getPhone())); //$NON-NLS-1$ view.getContext().startActivity(intent); } catch (RuntimeException e) { log.error("Failed to invoke call", e); //$NON-NLS-1$ @@ -311,7 +210,7 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon } else if (itemId == R.string.poi_context_menu_website) { try { Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setData(Uri.parse(a.getSite())); + intent.setData(Uri.parse(a.getSite())); view.getContext().startActivity(intent); } catch (RuntimeException e) { log.error("Failed to invoke call", e); //$NON-NLS-1$ @@ -322,44 +221,46 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon } } }; - if(OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), a, false).length() > 0){ + if (OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), a, false).length() > 0) { adapter.item(R.string.poi_context_menu_showdescription) - .icons(R.drawable.ic_action_note_dark,R.drawable.ic_action_note_light) - .listen(listener).reg(); + .icons(R.drawable.ic_action_note_dark, R.drawable.ic_action_note_light).listen(listener).reg(); } - if(a.getPhone() != null){ - adapter.item(R.string.poi_context_menu_call).icons(R.drawable.ic_action_call_dark, R.drawable.ic_action_call_light).listen(listener).reg(); + if (a.getPhone() != null) { + adapter.item(R.string.poi_context_menu_call) + .icons(R.drawable.ic_action_call_dark, R.drawable.ic_action_call_light).listen(listener).reg(); } - if(a.getSite() != null){ + if (a.getSite() != null) { adapter.item(R.string.poi_context_menu_website) - .icons( R.drawable.ic_action_globus_dark, R.drawable.ic_action_globus_light).listen(listener).reg(); + .icons(R.drawable.ic_action_globus_dark, R.drawable.ic_action_globus_light).listen(listener) + .reg(); } } } private void showDescriptionDialog(Amenity a) { Builder bs = new AlertDialog.Builder(view.getContext()); - bs.setTitle(OsmAndFormatter.getPoiSimpleFormat(a, view.getApplication(), view.getSettings().USE_ENGLISH_NAMES.get())); - if(a.getType() == AmenityType.OSMWIKI) { + bs.setTitle(OsmAndFormatter.getPoiSimpleFormat(a, view.getApplication(), + view.getSettings().USE_ENGLISH_NAMES.get())); + if (a.getType() == AmenityType.OSMWIKI) { bs.setMessage(a.getDescription()); } else { bs.setMessage(OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), a, false)); } bs.show(); } - + @Override public String getObjectDescription(Object o) { - if(o instanceof Amenity){ + if (o instanceof Amenity) { return buildPoiInformation(new StringBuilder(), (Amenity) o).toString(); } return null; } - + @Override public String getObjectName(Object o) { - if(o instanceof Amenity){ - return ((Amenity)o).getName(); //$NON-NLS-1$ + if (o instanceof Amenity) { + return ((Amenity) o).getName(); //$NON-NLS-1$ } return null; } @@ -371,10 +272,25 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon @Override public LatLon getObjectLocation(Object o) { - if(o instanceof Amenity){ - return ((Amenity)o).getLocation(); + if (o instanceof Amenity) { + return ((Amenity) o).getLocation(); } return null; } + @Override + public LatLon getTextLocation(Amenity o) { + return o.getLocation(); + } + + @Override + public int getTextShift(Amenity o, RotatedTileBox rb) { + return getRadiusPoi(rb); + } + + @Override + public String getText(Amenity o) { + return o.getName(view.getSettings().USE_ENGLISH_NAMES.get()); + } + } From 8f879647509eb6822da027f0c6fa432ac9ea6af9 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Wed, 11 Jun 2014 21:54:57 +0200 Subject: [PATCH 07/40] Allow bulk select as intermediate points --- OsmAnd/res/values/strings.xml | 1 + .../activities/FavouritesTreeFragment.java | 129 +++++++++++++++--- .../activities/IntermediatePointsDialog.java | 11 +- .../net/osmand/plus/views/FavoritesLayer.java | 3 - .../src/net/osmand/plus/views/GPXLayer.java | 12 +- 5 files changed, 126 insertions(+), 30 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 35651165cd..926c41df1a 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -9,6 +9,7 @@ 3. All your modified/created strings are in the top of the file (to make easier find what\'s translated). PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy --> + Select waypoints Text labels Loading %1$s … Current time diff --git a/OsmAnd/src/net/osmand/plus/activities/FavouritesTreeFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavouritesTreeFragment.java index 13af2e3188..ad0ee25127 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavouritesTreeFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavouritesTreeFragment.java @@ -28,6 +28,7 @@ import net.osmand.plus.GPXUtilities.WptPt; import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; +import net.osmand.plus.TargetPointsHelper; import net.osmand.plus.base.FavoriteImageDrawable; import net.osmand.util.MapUtils; import android.app.Activity; @@ -37,6 +38,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.res.Resources; import android.os.AsyncTask; +import android.support.v4.app.FragmentActivity; import android.text.Spannable; import android.text.style.ForegroundColorSpan; import android.view.LayoutInflater; @@ -71,12 +73,14 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { public static final int DELETE_ID = 2; public static final int DELETE_ACTION_ID = 3; public static final int SHARE_ID = 4; + public static final int SELECT_DESTINATIONS_ID = 5; + public static final int SELECT_DESTINATIONS_ACTION_MODE_ID = 6; private FavouritesAdapter favouritesAdapter; private FavouritesDbHelper helper; private boolean selectionMode = false; - private Set favoritesToDelete = new LinkedHashSet(); + private Set favoritesSelected = new LinkedHashSet(); private Set groupsToDelete = new LinkedHashSet(); private Comparator favoritesComparator; private ActionMode actionMode; @@ -131,11 +135,11 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { @Override protected String doInBackground(Void... params) { - for (FavouritePoint fp : favoritesToDelete) { + for (FavouritePoint fp : favoritesSelected) { helper.deleteFavourite(fp); publishProgress(fp); } - favoritesToDelete.clear(); + favoritesSelected.clear(); for (String group : groupsToDelete) { helper.deleteGroup(group); publishProgress(group); @@ -158,6 +162,14 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { favouritesAdapter.sort(favoritesComparator); } + + private void updateSelectionMode(ActionMode m) { + if(favoritesSelected.size() > 0) { + m.setTitle(favoritesSelected.size() + " " + getMyApplication().getString(R.string.selected)); + } else{ + m.setTitle(""); + } + } @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { @@ -166,10 +178,11 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { FavouritePoint model = favouritesAdapter.getChild(groupPosition, childPosition); ch.setChecked(!ch.isChecked()); if (ch.isChecked()) { - favoritesToDelete.add(model); + favoritesSelected.add(model); } else { - favoritesToDelete.remove(model); + favoritesSelected.remove(model); } + updateSelectionMode(actionMode); } else { final QuickAction qa = new QuickAction(v); final OsmandSettings settings = getMyApplication().getSettings(); @@ -276,6 +289,9 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { } else if (item.getItemId() == IMPORT_ID) { importFile(); return true; + } else if (item.getItemId() == SELECT_DESTINATIONS_ID) { + selectDestinations(); + return true; } else if (item.getItemId() == SHARE_ID) { shareFavourites(); return true; @@ -290,6 +306,30 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { } } + private void selectDestinations() { + final TargetPointsHelper targetPointsHelper = getMyApplication().getTargetPointsHelper(); + if (targetPointsHelper.getIntermediatePoints().size() > 0) { + final FragmentActivity act = getActivity(); + Builder builder = new AlertDialog.Builder(act); + builder.setTitle(R.string.new_directions_point_dialog); + builder.setItems( + new String[] { act.getString(R.string.keep_intermediate_points), + act.getString(R.string.clear_intermediate_points)}, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (which == 1) { + targetPointsHelper.clearPointToNavigate(false); + } + enterIntermediatesMode(); + } + }); + builder.show(); + } else { + enterIntermediatesMode(); + } + } + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { MenuItem mi = createMenuItem(menu, SEARCH_ID, R.string.export_fav, R.drawable.ic_action_search_light, @@ -325,15 +365,18 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { // } // }); if (!mi.isActionViewExpanded()) { - createMenuItem(menu, EXPORT_ID, R.string.export_fav, R.drawable.ic_action_gsave_light, - R.drawable.ic_action_gsave_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM); createMenuItem(menu, SHARE_ID, R.string.share_fav, R.drawable.ic_action_gshare_light, R.drawable.ic_action_gshare_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM); + createMenuItem(menu, SELECT_DESTINATIONS_ID, R.string.select_destination_and_intermediate_points, R.drawable.ic_action_flage_light, + R.drawable.ic_action_flage_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM); + createMenuItem(menu, DELETE_ID, R.string.default_buttons_delete, R.drawable.ic_action_delete_light, + R.drawable.ic_action_delete_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM); + createMenuItem(menu, EXPORT_ID, R.string.export_fav, R.drawable.ic_action_gsave_light, + R.drawable.ic_action_gsave_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM); createMenuItem(menu, IMPORT_ID, R.string.import_fav, R.drawable.ic_action_grefresh_light, R.drawable.ic_action_grefresh_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); - createMenuItem(menu, DELETE_ID, R.string.default_buttons_delete, R.drawable.ic_action_delete_light, - R.drawable.ic_action_delete_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM); + } } @@ -344,6 +387,59 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { public void hideProgressBar() { getSherlockActivity().setSupportProgressBarIndeterminateVisibility(false); } + + private void enterIntermediatesMode() { + actionMode = getSherlockActivity().startActionMode(new Callback() { + + @Override + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + selectionMode = true; + createMenuItem(menu, SELECT_DESTINATIONS_ACTION_MODE_ID, R.string.select_destination_and_intermediate_points, + R.drawable.ic_action_flage_light, R.drawable.ic_action_flage_dark, + MenuItem.SHOW_AS_ACTION_IF_ROOM); + updateSelectionMode(actionMode); + favoritesSelected.clear(); + groupsToDelete.clear(); + favouritesAdapter.notifyDataSetInvalidated(); + updateSelectionMode(mode); + return true; + } + + @Override + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + return false; + } + + @Override + public void onDestroyActionMode(ActionMode mode) { + selectionMode = false; + favouritesAdapter.notifyDataSetInvalidated(); + } + + @Override + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + if (item.getItemId() == SELECT_DESTINATIONS_ACTION_MODE_ID) { + selectDestinationImpl(); + } + return true; + } + }); + + } + + private void selectDestinationImpl() { + if(!favoritesSelected.isEmpty()) { + final TargetPointsHelper targetPointsHelper = getMyApplication().getTargetPointsHelper(); + for(FavouritePoint fp : favoritesSelected) { + targetPointsHelper.navigateToPoint(new LatLon(fp.getLatitude(), fp.getLongitude()), false, + targetPointsHelper.getIntermediatePoints().size() + 1, + getString(R.string.favorite) + ": " + fp.getName()); + } + targetPointsHelper.updateRoutingHelper(); + IntermediatePointsDialog.openIntermediatePointsDialog(getActivity(), getMyApplication(), false); + //MapActivity.launchMapActivityMoveToTop(getActivity()); + } + } private void enterDeleteMode() { actionMode = getSherlockActivity().startActionMode(new Callback() { @@ -354,9 +450,10 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { createMenuItem(menu, DELETE_ACTION_ID, R.string.default_buttons_delete, R.drawable.ic_action_delete_light, R.drawable.ic_action_delete_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM); - favoritesToDelete.clear(); + favoritesSelected.clear(); groupsToDelete.clear(); favouritesAdapter.notifyDataSetInvalidated(); + updateSelectionMode(mode); return true; } @@ -384,10 +481,10 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { } private void deleteFavoritesAction() { - if (groupsToDelete.size() + favoritesToDelete.size() > 0) { + if (groupsToDelete.size() + favoritesSelected.size() > 0) { Builder b = new AlertDialog.Builder(getActivity()); - b.setMessage(getString(R.string.favorite_delete_multiple, favoritesToDelete.size(), groupsToDelete.size())); + b.setMessage(getString(R.string.favorite_delete_multiple, favoritesSelected.size(), groupsToDelete.size())); b.setPositiveButton(R.string.default_buttons_delete, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -671,7 +768,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { groupsToDelete.add(model); List fvs = helper.getFavoriteGroups().get(model); if (fvs != null) { - favoritesToDelete.addAll(fvs); + favoritesSelected.addAll(fvs); } favouritesAdapter.notifyDataSetInvalidated(); } else { @@ -710,16 +807,16 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { final CheckBox ch = (CheckBox) row.findViewById(R.id.check_item); if (selectionMode) { ch.setVisibility(View.VISIBLE); - ch.setChecked(favoritesToDelete.contains(model)); + ch.setChecked(favoritesSelected.contains(model)); row.findViewById(R.id.favourite_icon).setVisibility(View.GONE); ch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (ch.isChecked()) { - favoritesToDelete.add(model); + favoritesSelected.add(model); } else { - favoritesToDelete.remove(model); + favoritesSelected.remove(model); if (groupsToDelete.contains(model.getCategory())) { groupsToDelete.remove(model.getCategory()); favouritesAdapter.notifyDataSetInvalidated(); diff --git a/OsmAnd/src/net/osmand/plus/activities/IntermediatePointsDialog.java b/OsmAnd/src/net/osmand/plus/activities/IntermediatePointsDialog.java index 50420ea3e0..2ea11d796a 100644 --- a/OsmAnd/src/net/osmand/plus/activities/IntermediatePointsDialog.java +++ b/OsmAnd/src/net/osmand/plus/activities/IntermediatePointsDialog.java @@ -43,7 +43,7 @@ public class IntermediatePointsDialog { openIntermediatePointsDialog(mapActivity, (OsmandApplication) mapActivity.getApplication(), false); } - public static void openIntermediatePointsDialog(final MapActivity activity, + public static void openIntermediatePointsDialog(final Activity activity, final OsmandApplication app, final boolean changeOrder){ TargetPointsHelper targets = app.getTargetPointsHelper(); final List intermediates = targets.getIntermediatePointsWithTarget(); @@ -127,7 +127,7 @@ public class IntermediatePointsDialog { dlg.show(); } - private static void applySortTargets(AlertDialog dlg, final MapActivity activity, final List intermediates, + private static void applySortTargets(AlertDialog dlg, final Activity activity, final List intermediates, final TIntArrayList originalPositions, final List names, final ArrayAdapter listadapter, final ProgressBar pb, final TextView textInfo) { dlg.setOnShowListener(new OnShowListener() { @@ -146,7 +146,12 @@ public class IntermediatePointsDialog { protected int[] doInBackground(Void[] params) { ArrayList lt = new ArrayList(intermediates); - LatLon start = new LatLon(activity.getMapView().getLatitude(), activity.getMapView().getLongitude()); + LatLon start ; + if(activity instanceof MapActivity) { + start = new LatLon(((MapActivity) activity).getMapView().getLatitude(), ((MapActivity) activity).getMapView().getLongitude()); + } else { + start = lt.get(0); + } LatLon end = lt.remove(lt.size() - 1); return new TspAnt().readGraph(lt, start, end).solve(); }; diff --git a/OsmAnd/src/net/osmand/plus/views/FavoritesLayer.java b/OsmAnd/src/net/osmand/plus/views/FavoritesLayer.java index aa7da43857..bfa1c26549 100644 --- a/OsmAnd/src/net/osmand/plus/views/FavoritesLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/FavoritesLayer.java @@ -119,9 +119,6 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.I @Override public boolean onSingleTap(PointF point, RotatedTileBox tileBox) { - if(tileBox.getZoom() < 11) { - return false; - } List favs = new ArrayList(); getFavoriteFromPoint(tileBox, point, favs); if(!favs.isEmpty() && (tileBox.getZoom() > 14 || favs.size() < 6)){ diff --git a/OsmAnd/src/net/osmand/plus/views/GPXLayer.java b/OsmAnd/src/net/osmand/plus/views/GPXLayer.java index b1de3b0284..8b4c641e3e 100644 --- a/OsmAnd/src/net/osmand/plus/views/GPXLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/GPXLayer.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import net.osmand.access.AccessibleToast; -import net.osmand.data.FavouritePoint; import net.osmand.data.LatLon; import net.osmand.data.QuadRect; import net.osmand.data.RotatedTileBox; @@ -201,15 +200,12 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex @Override public boolean onSingleTap(PointF point, RotatedTileBox tileBox) { - if(tileBox.getZoom() < 11) { - return false; - } - List favs = new ArrayList(); - getWptFromPoint(tileBox, point, favs); - if(!favs.isEmpty() && (tileBox.getZoom() > 14 || favs.size() < 6)){ + List gpxPoints = new ArrayList(); + getWptFromPoint(tileBox, point, gpxPoints); + if(!gpxPoints.isEmpty() && (tileBox.getZoom() > 14 || gpxPoints.size() < 6)){ StringBuilder res = new StringBuilder(); int i = 0; - for(WptPt fav : favs) { + for(WptPt fav : gpxPoints) { if (i++ > 0) { res.append("\n\n"); } From 311a944d3d9901d55c793197dd0afcf6e9f44ecd Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Wed, 11 Jun 2014 22:15:22 +0200 Subject: [PATCH 08/40] Allow save gpx points as favorites --- OsmAnd/res/values/strings.xml | 1 + .../net/osmand/plus/TargetPointsHelper.java | 4 +- .../plus/activities/AvailableGPXFragment.java | 1 + .../activities/FavouritesTreeFragment.java | 17 +++-- .../activities/IntermediatePointsDialog.java | 18 +++--- .../osmand/plus/activities/MapActivity.java | 2 +- .../plus/activities/MapActivityActions.java | 2 +- .../plus/activities/SelectedGPXFragment.java | 62 ++++++++++++++++++- .../osmand/plus/base/FailSafeFuntions.java | 2 +- .../osmand/plus/routing/RoutingHelper.java | 2 +- .../controls/MapRoutePreferencesControl.java | 4 +- 11 files changed, 91 insertions(+), 24 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 926c41df1a..7a1c647165 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -9,6 +9,7 @@ 3. All your modified/created strings are in the top of the file (to make easier find what\'s translated). PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy --> + Save as group of favorites Select waypoints Text labels Loading %1$s … diff --git a/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java b/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java index 180524edc6..910120c03f 100644 --- a/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java +++ b/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java @@ -133,7 +133,7 @@ public class TargetPointsHelper { updateRouteAndReferesh(updateRoute); } - private void updateRouteAndReferesh(boolean updateRoute) { + public void updateRouteAndReferesh(boolean updateRoute) { if(updateRoute && ( routingHelper.isRouteBeingCalculated() || routingHelper.isRouteCalculated() || routingHelper.isFollowingMode() || routingHelper.isRoutePlanningMode())) { updateRoutingHelper(); @@ -141,7 +141,7 @@ public class TargetPointsHelper { updateListeners(); } - public void updateRoutingHelper() { + private void updateRoutingHelper() { LatLon start = settings.getPointToStart(); Location lastKnownLocation = ctx.getLocationProvider().getLastKnownLocation(); if((routingHelper.isFollowingMode() && lastKnownLocation != null) || start == null) { diff --git a/OsmAnd/src/net/osmand/plus/activities/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/activities/AvailableGPXFragment.java index 4519964017..8ae0b9d8b3 100644 --- a/OsmAnd/src/net/osmand/plus/activities/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/AvailableGPXFragment.java @@ -360,6 +360,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { Builder b = new AlertDialog.Builder(getActivity()); if(f.exists()){ final EditText editText = new EditText(getActivity()); + editText.setPadding(7, 3, 7, 3); editText.setText(f.getName()); b.setView(editText); b.setPositiveButton(R.string.default_buttons_save, new DialogInterface.OnClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/activities/FavouritesTreeFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavouritesTreeFragment.java index ad0ee25127..6da9373458 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavouritesTreeFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavouritesTreeFragment.java @@ -61,7 +61,6 @@ import com.actionbarsherlock.view.ActionMode.Callback; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.MenuItem.OnActionExpandListener; import com.actionbarsherlock.widget.SearchView; import com.actionbarsherlock.widget.SearchView.OnQueryTextListener; @@ -160,6 +159,10 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { // Sort Favs by distance on Search tab, but sort alphabetically here favouritesAdapter.sort(favoritesComparator); + if(favouritesAdapter.getGroupCount() > 0 && + "".equals(favouritesAdapter.getGroup(0))) { + getListView().expandGroup(0); + } } @@ -397,7 +400,6 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { createMenuItem(menu, SELECT_DESTINATIONS_ACTION_MODE_ID, R.string.select_destination_and_intermediate_points, R.drawable.ic_action_flage_light, R.drawable.ic_action_flage_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM); - updateSelectionMode(actionMode); favoritesSelected.clear(); groupsToDelete.clear(); favouritesAdapter.notifyDataSetInvalidated(); @@ -419,6 +421,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { if (item.getItemId() == SELECT_DESTINATIONS_ACTION_MODE_ID) { + mode.finish(); selectDestinationImpl(); } return true; @@ -435,7 +438,9 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { targetPointsHelper.getIntermediatePoints().size() + 1, getString(R.string.favorite) + ": " + fp.getName()); } - targetPointsHelper.updateRoutingHelper(); + if(getMyApplication().getRoutingHelper().isRouteCalculated()) { + targetPointsHelper.updateRouteAndReferesh(true); + } IntermediatePointsDialog.openIntermediatePointsDialog(getActivity(), getMyApplication(), false); //MapActivity.launchMapActivityMoveToTop(getActivity()); } @@ -471,6 +476,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { if (item.getItemId() == DELETE_ACTION_ID) { + mode.finish(); deleteFavoritesAction(); } return true; @@ -658,6 +664,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { Map> favoriteGroups = new LinkedHashMap>(); List groups = new ArrayList(); Filter myFilter; + public void setFavoriteGroups(Map> favoriteGroups) { this.sourceFavoriteGroups = favoriteGroups; @@ -754,7 +761,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { adjustIndicator(groupPosition, isExpanded, row); TextView label = (TextView) row.findViewById(R.id.category_name); final String model = getGroup(groupPosition); - label.setText(model); + label.setText(model.length() == 0? getString(R.string.favourites_activity) : model); final CheckBox ch = (CheckBox) row.findViewById(R.id.check_item); if (selectionMode) { @@ -774,6 +781,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { } else { groupsToDelete.remove(model); } + updateSelectionMode(actionMode); } }); } else { @@ -822,6 +830,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment { favouritesAdapter.notifyDataSetInvalidated(); } } + updateSelectionMode(actionMode); } }); } else { diff --git a/OsmAnd/src/net/osmand/plus/activities/IntermediatePointsDialog.java b/OsmAnd/src/net/osmand/plus/activities/IntermediatePointsDialog.java index 2ea11d796a..9befcfe438 100644 --- a/OsmAnd/src/net/osmand/plus/activities/IntermediatePointsDialog.java +++ b/OsmAnd/src/net/osmand/plus/activities/IntermediatePointsDialog.java @@ -105,20 +105,20 @@ public class IntermediatePointsDialog { } }); - if (!changeOrder && intermediates.size()>1) { + if (!changeOrder && intermediates.size() > 1) { builder.setNeutralButton(R.string.intermediate_points_change_order, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { openIntermediatePointsDialog(activity, app, true); } }); - } else if(intermediates.size()>1) { - builder.setNeutralButton(R.string.intermediate_items_sort_by_distance, new Dialog.OnClickListener() { - @Override - public void onClick(DialogInterface d, int which) { - //Do nothing here. We override the onclick - } - }); + } else if (intermediates.size() > 1) { + builder.setNeutralButton(R.string.intermediate_items_sort_by_distance, new Dialog.OnClickListener() { + @Override + public void onClick(DialogInterface d, int which) { + // Do nothing here. We override the onclick + } + }); } AlertDialog dlg = builder.create(); if (changeOrder) { @@ -289,7 +289,7 @@ public class IntermediatePointsDialog { app.getTargetPointsHelper().removeWayPoint(cnt == 0, i); } } - // FIXME + // FIXME delete location when point is removed // if(mapActivity instanceof MapActivity) { // ((MapActivity) mapActivity).getMapLayers().getContextMenuLayer().setLocation(null, ""); // } diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java index 5a3c1dbf33..18d2358dce 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java @@ -290,7 +290,7 @@ public class MapActivity extends AccessibleActivity { !Algorithms.objectEquals(targets.getPointToNavigate(), routingHelper.getFinalLocation() )|| !Algorithms.objectEquals(targets.getIntermediatePoints(), routingHelper.getIntermediatePoints()) )) { - targets.updateRoutingHelper(); + targets.updateRouteAndReferesh(true); } app.getLocationProvider().resumeAllUpdates(); diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index 23cdd0e9d1..3966a35c91 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -545,7 +545,7 @@ public class MapActivityActions implements DialogProvider { // then set gpx setGPXRouteParams(gpxFile); // then update start and destination point - targets.updateRoutingHelper(); + targets.updateRouteAndReferesh(true); mapActivity.getMapViewTrackingUtilities().switchToRoutePlanningMode(); mapActivity.getMapView().refreshMap(true); diff --git a/OsmAnd/src/net/osmand/plus/activities/SelectedGPXFragment.java b/OsmAnd/src/net/osmand/plus/activities/SelectedGPXFragment.java index 2cac5083db..3204de31fa 100644 --- a/OsmAnd/src/net/osmand/plus/activities/SelectedGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/SelectedGPXFragment.java @@ -2,10 +2,14 @@ package net.osmand.plus.activities; import gnu.trove.list.array.TIntArrayList; +import java.io.File; import java.text.Collator; import java.util.ArrayList; import java.util.List; +import net.osmand.access.AccessibleToast; +import net.osmand.data.FavouritePoint; +import net.osmand.plus.FavouritesDbHelper; import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup; import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem; @@ -14,6 +18,7 @@ import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandSettings.MetricsConstants; import net.osmand.plus.R; +import net.osmand.plus.activities.AvailableGPXFragment.LoadGpxTask; import net.osmand.plus.base.FavoriteImageDrawable; import net.osmand.util.Algorithms; import android.app.Activity; @@ -26,11 +31,13 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; +import android.widget.EditText; import android.widget.ExpandableListView; import android.widget.Filter; import android.widget.ImageView; import android.widget.SectionIndexer; import android.widget.TextView; +import android.widget.Toast; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; @@ -85,6 +92,40 @@ public class SelectedGPXFragment extends OsmandExpandableListFragment { public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) { return super.onOptionsItemSelected(item); } + + protected void saveAsFavorites(final GpxDisplayGroup model) { + Builder b = new AlertDialog.Builder(getActivity()); + final EditText editText = new EditText(getActivity()); + String name = model.getName(); + if(name.indexOf('\n') > 0) { + name = name.substring(0, name.indexOf('\n')); + } + editText.setText(name); + editText.setPadding(7, 3, 7, 3); + b.setTitle(R.string.save_as_favorites_points); + b.setView(editText); + b.setPositiveButton(R.string.default_buttons_save, new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, int which) { + saveFavoritesImpl(model.getModifiableList(), editText.getText().toString()); + + } + }); + b.setNegativeButton(R.string.default_buttons_cancel, null); + b.show(); + } + + protected void saveFavoritesImpl(List modifiableList, String category) { + FavouritesDbHelper fdb = getMyApplication().getFavorites(); + for(GpxDisplayItem i : modifiableList) { + if (i.locationStart != null) { + FavouritePoint fp = new FavouritePoint(i.locationStart.lat, i.locationStart.lon, i.locationStart.name, + category); + fdb.addFavourite(fp); + } + } + } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { @@ -345,9 +386,8 @@ public class SelectedGPXFragment extends OsmandExpandableListFragment { final GpxDisplayGroup model = getGroup(groupPosition); label.setText(model.getGroupName()); final ImageView ch = (ImageView) row.findViewById(R.id.check_item); - if(model.getType() != GpxDisplayItemType.TRACK_SEGMENT) { - ch.setVisibility(View.INVISIBLE); - } else { + + if(model.getType() == GpxDisplayItemType.TRACK_SEGMENT) { ch.setVisibility(View.VISIBLE); ch.setImageDrawable(getActivity().getResources().getDrawable( app.getSettings().isLightContent() ? R.drawable.ic_action_settings_light @@ -359,11 +399,27 @@ public class SelectedGPXFragment extends OsmandExpandableListFragment { } }); + } else if(model.getType() == GpxDisplayItemType.TRACK_POINTS || + model.getType() == GpxDisplayItemType.TRACK_ROUTE_POINTS) { + ch.setVisibility(View.VISIBLE); + ch.setImageDrawable(getActivity().getResources().getDrawable( + app.getSettings().isLightContent() ? R.drawable.ic_action_fav_light + : R.drawable.ic_action_fav_dark)); + ch.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + saveAsFavorites(model); + } + + }); + } else { + ch.setVisibility(View.INVISIBLE); } return row; } + @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { diff --git a/OsmAnd/src/net/osmand/plus/base/FailSafeFuntions.java b/OsmAnd/src/net/osmand/plus/base/FailSafeFuntions.java index 09b0796b43..0eca4bcbfd 100644 --- a/OsmAnd/src/net/osmand/plus/base/FailSafeFuntions.java +++ b/OsmAnd/src/net/osmand/plus/base/FailSafeFuntions.java @@ -174,7 +174,7 @@ public class FailSafeFuntions { app.getTargetPointsHelper().setStartPoint(null, false, null); app.getSettings().FOLLOW_THE_ROUTE.set(true); routingHelper.setFollowingMode(true); - app.getTargetPointsHelper().updateRoutingHelper(); + app.getTargetPointsHelper().updateRouteAndReferesh(true); app.initVoiceCommandPlayer(ma); } diff --git a/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java b/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java index 079d27b611..416982c1af 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java +++ b/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java @@ -290,7 +290,7 @@ public class RoutingHelper { recalculateRouteInBackground(false, currentLocation, finalLocation, intermediatePoints, currentGPXRoute, previousRoute.isCalculated() ? previousRoute : null); } - double projectDist = mode.hasFastSpeed() ? posTolerance : posTolerance / 2; + double projectDist = mode != null && mode.hasFastSpeed() ? posTolerance : posTolerance / 2; if(returnUpdatedLocation && locationProjection != null && currentLocation.distanceTo(locationProjection) < projectDist) { return locationProjection; } else { diff --git a/OsmAnd/src/net/osmand/plus/views/controls/MapRoutePreferencesControl.java b/OsmAnd/src/net/osmand/plus/views/controls/MapRoutePreferencesControl.java index b0f1f4bab1..821e83806c 100644 --- a/OsmAnd/src/net/osmand/plus/views/controls/MapRoutePreferencesControl.java +++ b/OsmAnd/src/net/osmand/plus/views/controls/MapRoutePreferencesControl.java @@ -183,7 +183,7 @@ public class MapRoutePreferencesControl extends MapControls { update = true; } if(update) { - tg.updateRoutingHelper(); + tg.updateRouteAndReferesh(true); } } } else if (gpxParam.id == R.string.gpx_option_calculate_first_last_segment) { @@ -361,7 +361,7 @@ public class MapRoutePreferencesControl extends MapControls { @Override public boolean processResult(GPXFile[] result) { mapActivity.getMapActions().setGPXRouteParams(result[0]); - mapActivity.getMyApplication().getTargetPointsHelper().updateRoutingHelper(); + mapActivity.getMyApplication().getTargetPointsHelper().updateRouteAndReferesh(true); updateSpinnerItems(gpxSpinner); updateParameters(); mapActivity.getRoutingHelper().recalculateRouteDueToSettingsChange(); From 0b6119ae569ab767da33b2de3eb408a0805c901a Mon Sep 17 00:00:00 2001 From: reza khan Date: Thu, 12 Jun 2014 00:46:23 +0200 Subject: [PATCH 09/40] Translated using Weblate. --- OsmAnd/res/values-fa/strings.xml | 33 +++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml index a2b2ac6ed6..1110661b4f 100644 --- a/OsmAnd/res/values-fa/strings.xml +++ b/OsmAnd/res/values-fa/strings.xml @@ -174,7 +174,7 @@ تفییر شفافیت (0-شفاف، 255-کدر) آیا می خواهید دانلود را متوقف کنید؟ نقشه های آفلاین (بُرداری) - نقشه را دانلود کنید و داده های آفلاین را بر روی گوشی خود مدیریت کنید + نقشه را دانلود کنید و نقشه های آفلاین را بر روی گوشی خود مدیریت کنید افزونه نقشه های آنلاین را فعال کنید تا منابع مختلف نقشه را انتخاب کنید تنظیمات نقشه پشتیبان‌گیری به عنوان تغییرات OsmAnd @@ -296,7 +296,7 @@ خروج نقشه تنظیمات - علاقمندیها + مکانهای من جستجو جستجو انتخاب POI @@ -358,7 +358,7 @@ قبلی تغییر واحد طول و سرعت واحد اندازه گیری - مدیریت داده‌ها + مدیریت نقشه ها فعال سازی غیرفعال کردن حذف @@ -407,7 +407,7 @@ فایلی با نام مشابه از قبل وجود دارد. مسیر GPX جستجو براساس نام - مدیریت داده‌ها + مدیریت نقشه ها عمومی تعیین نحوه نمایش و تنظیمات کلی برنامه تنظیمات کلی برنامه @@ -557,7 +557,7 @@ تصحیح ارتفاع بیشتر دستگاههای جی‌پی‌اس مقدار ارتفاع را براساس سیستم مرجع WGS84 هذلولی نشان میدهند که تبدیل آن به سیستمهای مورد استفاده محلی نیازمند تصحیح موقعیت میباشد. \n\nمرجع (EGM96 (geoid نزدیکترین سیستم به این سیستم محلی میباشد. - \n\nبرنامه OsmAnd نیز ارتفاع محل شما را در سیستم EGM96 نشان میدهد در صورتیکه فایل \'تصحیح ارتفاع جهان\' (WW15MGH.DAC) را از طریق \'تنظیمات\'->\'مدیریت داده ها\' دانلود کنید. (فایل اصلی در http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC وجود دارد.) + \n\nبرنامه OsmAnd نیز ارتفاع محل شما را در سیستم EGM96 نشان میدهد در صورتیکه فایل \'تصحیح ارتفاع جهان\' (WW15MGH.DAC) را از طریق \'تنظیمات\'->\'مدیریت نقشه ها\' دانلود کنید. (فایل اصلی در http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC وجود دارد.) @@ -585,8 +585,8 @@ نقشه های +OsmAnd و مسیریابی نمایش نقشه های همراه و مسیریابی نقشه های OSM به صورت آنلاین و آفلاین به روز رسانی نقشه های آفلاین - داشتن نقشه های به روز برای دیدن آفلاین نقشه، جستجوی آدرس یا POI و مسیریابی آفلاین الزامی است. OsmAnd یک سیستم مدیریت داده برای دانلود این نقشه ها (و سایر فایلهای داده) و بررسی به روز رسانی های جدید دارد. - \n\nبرای دانلود نقشه ها به \'تنظیمات\'->\'مدیریت داده ها\'->\'دانلود داده های آفلاین\' بروید. + داشتن نقشه های به روز برای مشاهده آفلاین نقشه، جستجوی آدرس یا POI و مسیریابی آفلاین الزامی است. OsmAnd دارای سیستم مدیریت نقشه برای دانلود نقشه های جدید و دریافت روز رسانی های آنها می باشد. + \n\nبرای دانلود نقشه ها به \'تنظیمات\'->\'مدیریت نقشه ها\'->\'دانلود داده های آفلاین\' بروید. \n\nپس از بازیابی لیست نواحی از اینترنت، میتوانید روی هر مورد کلیک کنید تا دانلود یا بروز رسانی شود. دقت کنید که انتخابگر نوع فایل بالای صفحه نوع دانلودی را که میخواهید نشان میدهد (نقشه عادی، لایه های تپه سایه و غیره). \n\nمیتوانید لیست را با نوشتن چند حرف از اسم آن فیلتر کنید و یا با انتخاب \'تنظیمات\'->\'فیلتر دانلود شده ها\' فقط به روز رسانی برای داده هایی که از قبل روی دستگاه شما موجود است را ببینید. \n\n\t* مدخل \'سبز\' رنگ نشاندهنده این است که فایلهای داده بر روی سرور و دستگاه شما یکی هستند. @@ -728,7 +728,7 @@ تنظیم نمایش نقشه نقشه های بُرداری سریعتر نمایش داده میشوند. ممکن است روی یرخی دستگاهها خوب کار نکند. امتحان اعلانهای صوتی - هیچ نقشه بُرداری آفلاینی برای این محل وجود ندارد. میتوانید یکی را از قسمت تنظیمات (مدیریت داده‌ها) دانلود کنید یا اینکه از نقشه‌های آنلاین استفاده کنید. + هیچ نقشه بُرداری آفلاینی برای این محل وجود ندارد. میتوانید نقشه مورد نظر خود را از قسمت تنظیمات (مدیریت نقشه ها) دانلود کنید یا اینکه از نقشه‌های آنلاین استفاده کنید (برای این کار افزونه نقشه های آنلاین را فعال نمایید). بدون اطلاعات در جهت عقربه های ساعت (۱۲ بخشی) نوع جهت گیری @@ -920,7 +920,7 @@ \n\t* رفع اشکال (بهینه سازی مسیریابی) این افزونه، منحنی‌های هم‌تراز را که در نقشه‌های آفلاین OsmAnd نمایش داده میشوند فراهم میکند. داده‌های جهانی (بین 70 درجه شمالی و 70 درجه جنوبی) در این زمینه براساس اندازه گیری‌های SRTM (مأموریت توپوگرافی رادار شاتل) و ASTER (رادیومتر انعکاسی و پرتویی حرارتی هوایی پیشرفته)، یک ابزار تصویربرداری پردازنده ترا و ماهواره فوق پیشرفته سیستم نظارتی زمین ناسا مییباشند. ASTER محصول تلاش مشترک میان ناسا، وزارت اقتصاد ژاپن، صنعت و تجارت (متی)، و سیستم های فضایی ژاپن (جی-اسپیس سیستم) است. - تسهیل دانلود خطوط هم‌تراز و سایه تپه (\'تنظیمات\'->\'مدیریت داده‌ها\'->\'دانلود\'->\'انتخاب نوع نقشه\' مورد نظر). + تسهیل دانلود خطوط هم‌تراز و سایه تپه (\'تنظیمات\'->\'مدیریت نقشه ها\'->\'دانلود\'->\'انتخاب نوع نقشه\' مورد نظر). جی پی ایکس محو کردن همه عوارض زمین روی نقشه مخفی کردن چندضلعی ها @@ -1078,8 +1078,8 @@ برنامه OsmAnd یک برنامه مسیریابی با ویژگیهای متعدد است. \n\nبرای آشنایی مفدماتی، تعدادی فوت و فن کاربردی در صفحه اصلی از طریق \'منو\'->\'ترفندها\' قرار داده شده است - برای دانلود یا به روز رسانی داده های آفلاین اینجا کلیک کنید. \nبر روی هر مورد کلیک کنید تا جرئیات بیشتری ببینید، بزنید و نگه دارید تا غیرفعال کنید یا حذف کنید. داده های موجود روی دستگاه در حال حاضر (%1$s آزاد): - از شما به خاطر استفاده از OsmAnd متشکریم. برای استفاده از ویژگیهای بیشتر برنامه به داده‌های آفلاین منطقه‌ای نیاز است که میتوانید آنها را از طریق \'تنظیمات\'←\'مدیریت داده ها\' دانلود کنید. پس از آن قادر خواهید بود تا نقشه‌ها را نگاه کنید، آدرس را پیدا کنید، در POIها جستجو کنید و یا مسیرهای حمل و نقل عمومی را پیدا کنید. + برای دانلود یا به روز رسانی نقشه های آفلاین اینجا کلیک کنید. \nبر روی هر مورد کلیک کنید تا جرئیات بیشتری ببینید، بزنید و نگه دارید تا غیرفعال کنید یا حذف کنید. داده های موجود روی دستگاه در حال حاضر (%1$s آزاد): + از شما به خاطر استفاده از OsmAnd متشکریم. برای استفاده از ویژگیهای بیشتر برنامه به داده‌های آفلاین منطقه‌ای نیاز است که میتوانید آنها را از طریق \'تنظیمات\'←\'مدیریت نقشه ها\' دانلود کنید. پس از آن قادر خواهید بود تا نقشه‌ها را نگاه کنید، آدرس را پیدا کنید، در POIها جستجو کنید و یا مسیرهای حمل و نقل عمومی را پیدا کنید. حافظه اجرایی کافی برای نشان دادن ناحیه مورد نظر وجود ندارد لایه های فلورسنت POIها/اشکالات ذخیره شده محلی @@ -1461,7 +1461,7 @@ OsmAnd منبع باز است و فعالانه در حال توسعه است. نقاطی که زیاد استفاده میشوند را میتوان به این طریق به عنوان علاقمندی ها ذخیره کرد: \n\nبرای ذخیره یک نقطه به منوی نقشه بروید، مورد \'اضافه کردن به علاقمندیها\' را انتخاب کنید و سپس یک اسم به آن بدهید. - \n\nپس از ذخیره یک علاقمندی، از طریق \'صفحه اصلی\'->\'علاقمندیها\' میتوان به آن دسترسی پیدا کرد. + \n\nپس از ذخیره یک علاقمندی، از طریق \'صفحه اصلی\'->\'مکانهای من\' میتوان به آن دسترسی پیدا کرد. \n\nبرای نشان دادن تمام نقاط مورد علاقه به طور مستقیم بر روی نقشه، در صفحه نمایش نقشه لایه \'علاقمندیها\' را فعال کنید. هدف جغرافیایی \'%s\' قابل تجزیه نیست @@ -1775,6 +1775,9 @@ OsmAnd منبع باز است و فعالانه در حال توسعه است. * محاسبه بین مسیر فایل gpx↵ * تغییر طرح دانلود کشورها (حمایت برای جستجوی نام های محلی)↵ * پشتیبانی از فرمت های GPX/KML(تبدیل از KML به GPX)↵ + * انتقال فایل های GPX به\'اطلاعات من\'↵ + * مشاهده مسیرهای ذخیره شده(GPX) بر اساس بیشترین ، کمترین و متوسط سرعت و ارتفاع↵ + * شروع خودکار مسیریابی بعد از وقفه زمانی مشخص↵ محاسبه مسیر بین دو نقطه راه اندازی مجدد osmo وارد کنید @@ -1831,11 +1834,11 @@ OsmAnd منبع باز است و فعالانه در حال توسعه است. ذخیره به عنوان فایل GPX و یا واردات به مورد علاقه های شما؟ ذخیره GPX مسیر خالی است - مسیر + انتخاب مسیر همه مسیرها علاقه مندی های من - داده های اطلاعات من - داده های اطلاعات من + مکان های من + مکان های من کاربر %1$s تاریخ عضویت %2$s کاربر %1$s گروه چپ %2$s نمایش اطلاعیه های گروه From db3e1d081e738df86af75375d065b2ee657c167b Mon Sep 17 00:00:00 2001 From: Ruzena Zibritova Date: Wed, 11 Jun 2014 20:53:32 -0400 Subject: [PATCH 10/40] Added Belarusian resources --- OsmAnd/res/values-be/bidforfix.xml | 3 +++ plugins/Osmand-ParkingPlugin/res/values-be/strings.xml | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 OsmAnd/res/values-be/bidforfix.xml create mode 100644 plugins/Osmand-ParkingPlugin/res/values-be/strings.xml diff --git a/OsmAnd/res/values-be/bidforfix.xml b/OsmAnd/res/values-be/bidforfix.xml new file mode 100644 index 0000000000..9c5ad89af1 --- /dev/null +++ b/OsmAnd/res/values-be/bidforfix.xml @@ -0,0 +1,3 @@ + + + diff --git a/plugins/Osmand-ParkingPlugin/res/values-be/strings.xml b/plugins/Osmand-ParkingPlugin/res/values-be/strings.xml new file mode 100644 index 0000000000..9c5ad89af1 --- /dev/null +++ b/plugins/Osmand-ParkingPlugin/res/values-be/strings.xml @@ -0,0 +1,3 @@ + + + From 6d9ade8c4248205d6504a136e63afe057470794a Mon Sep 17 00:00:00 2001 From: Marek Marczynski Date: Thu, 12 Jun 2014 05:23:18 +0200 Subject: [PATCH 11/40] Translated using Weblate. --- OsmAnd/res/values-pl/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index a97fed23ef..54753ec937 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -1840,4 +1840,7 @@ Afganistan, Afryka Południowa, Albania, Algieria, Andora, Angola, Anguilla, Ant Ładowanie %1$s … Aktualny czas Punkt trasy + Zapisz jako grupę ulubionych + Wybierz punkty + Etykiety tekstowe From 8144f08e32175521dfe7ed904fc9840da6718f9b Mon Sep 17 00:00:00 2001 From: jan madsen Date: Thu, 12 Jun 2014 06:39:02 +0200 Subject: [PATCH 12/40] Translated using Weblate. --- OsmAnd/res/values-da/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index bdf0713eb9..e7c94bb1da 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -1899,4 +1899,7 @@ Afghanistan, Albanien, Algeriet, Andorra, Angola, Anguilla, Antigua og Barbuda, valgt Vælg opdelingsinterval Indlæser %1$s… + Gem som en gruppe af favoritter + Vælg rutepunkter + Tekstetiketter From c98a39158c7b5909baed276b46a30961f55d9fec Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Thu, 12 Jun 2014 07:47:21 +0200 Subject: [PATCH 13/40] Translated using Weblate. --- OsmAnd/res/values-it/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index a2c6245ad0..1827559915 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -1891,4 +1891,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz \n\nTieni premuto per vederlo sulla mappa Avvia la navigazione con ritardo Orario attuale + Salva come gruppo di preferiti + Scegli le tappe + Etichette di testo From b9ae177bc80c771f806cdb874963016b15474a92 Mon Sep 17 00:00:00 2001 From: josep constanti Date: Thu, 12 Jun 2014 08:05:34 +0200 Subject: [PATCH 14/40] Translated using Weblate. --- OsmAnd/res/values-ca/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index cd53fc7a5f..4fe57ec79d 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -1847,4 +1847,7 @@ La llista de països inclosos (bàsicament tot el món!): Afganistan, Albània, %1$s \nPunts %1$s \nTraça %2$s Traça actual en gravació + Guarda com grup de preferits + Selecciona punts de pas + Etiquetes de text From 0355a936fc7449bc267da0eb947f6512805fdb40 Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Thu, 12 Jun 2014 08:02:24 +0200 Subject: [PATCH 15/40] Translated using Weblate. --- OsmAnd/res/values-it/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 1827559915..fefdb17a99 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -1872,7 +1872,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz Tappe del percorso: $1%s Distanza: %1$s (%2$s punti) Orario di arrivo: %1$tF, %1$tT - Differenza di altitudine: %1$s + Dislivello: %1$s Salite: %1$s Intervallo di tempo: %1$s Tempo in movimento: %1$s From 642b506528fb90ec2be1fd3cb4a0eb51e0f2aad7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Tue, 26 Nov 2013 13:56:31 +0100 Subject: [PATCH 16/40] Translated using Weblate (Czech) Currently translated at 99.5% (1191 of 1196 strings) --- OsmAnd/res/values-cs/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index 82762848ee..dd8a191b65 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -151,15 +151,15 @@ Umožní běh aplikace při vypnutém displeji Natočení mapy - Stahování dokončeno.\n\t\n\tNa vektorové mapy můžete přepnout v menu (Mapová data -> Zdroj map -> Vektorové mapy OSM). + "Stahování dokončeno.\n\t\n\tNa vektorové mapy můžete přepnout v menu (Mapová data -> Zdroj map -> Vektorové mapy OSM). " Denní/noční režim Vylepšování Openstreetmap - \t OsmAnd využívá mapy založené na datech Openstreetmap.org (OSM). Program krom navigace umožňuje také přispívání k projektu Openstreetmap. Několika kliknutími tak můžete snadno vytvářet nové body zájmu (POI) nebo hlášení o chybách OSM.\n\t Pro začátek je pouze potřeba zadat přihlašovací informace v \'Nastavení\'->\'Obecné\'->\'OSM editace\'. + "OsmAnd využívá mapy založené na datech Openstreetmap.org (OSM). Program krom navigace umožňuje také přispívání k projektu Openstreetmap. Několika kliknutími tak můžete snadno vytvářet nové body zájmu (POI) nebo hlášení o chybách OSM.\n\t Pro začátek je pouze potřeba zadat přihlašovací informace v \'Nastavení\'->\'Obecné\'->\'OSM editace\'. \n\t Nové POI zadáte volbou \'Vytvořit POI\' v kontextovém menu mapy. Pak můžete zadat informace o novém POI a stisknutím tlačítka ho odeslat. \n\t Pokud v mapě najdete chybu, můžete ji nahlásit a přispět tak k jejímu rychlejšímu opravení. \n\t OSM chybu nahlásíte pomocí volby \'Otevřít chybu OSM\' v kontextovém menu mapy. Tím se otevře dialog, kde můžete zadat detailní popis problému. Chybu odešlete tlačítkem \'Přidat\'. -\n\t Pro zmíněné funkce je nutné internetové připojení. +\n\t Pro zmíněné funkce je nutné internetové připojení. " Nedostatek místa pro stažení %1$s MB dat (volné: %2$s). Volné místo: {2} MB. Stáhnout {0} soubor(y) ({1} MB)? @@ -406,7 +406,7 @@ Režim aplikace Navigace - \t Pro zapnutí navigace musíte nejprve vybrat cílový bod. Poté vyberte \'Menu\'->\'Navigace\' na mapě a vyberte typ navigování. + "Pro zapnutí navigace musíte nejprve vybrat cílový bod. Poté vyberte \'Menu\'->\'Navigace\' na mapě a vyberte typ navigování. " Vyhledávání \tMůžete vyhledat místo přímo na mapě, podle adresy, umístění, jako bod zájmu (POI), nebo v seznamu oblíbených. \n\t Vyhledávání se otevře stisknutím \'Hledat\'. Nalezené místo pak můžete nechat zobrazit na mapě, nebo ho použít jako cílový bod. From f27630732cd380ee001e5cdfbef227324f9015f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Wed, 27 Nov 2013 15:43:47 +0100 Subject: [PATCH 17/40] Translated using Weblate (Czech) Currently translated at 99.4% (1191 of 1198 strings) --- OsmAnd/res/values-cs/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index dd8a191b65..31ba144ca0 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -291,7 +291,7 @@ Školství Pomoc v nouzi Zábava - Finance + Peníze Geocache Zdravotnictví Historie From b900b2e4fe4ca116b91ddd5b54bcbacb1327d3f4 Mon Sep 17 00:00:00 2001 From: Ferdinand Schwenk Date: Fri, 3 Jan 2014 09:16:38 +0100 Subject: [PATCH 18/40] Translated using Weblate (German) Currently translated at 99.2% (1199 of 1208 strings) --- OsmAnd/res/values-de/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 5eab9acd58..eb72a6258f 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -149,7 +149,7 @@ Höhenlinien anzeigen Erhöht den dargestellten Detailgrad der Karte Mehr Details in Karte - Aktivieren Sie das Online-Karten-Plugin, um andere Kartenquellen nutzen zu können. + Aktivieren Sie das Online-Karten-Plugin, um andere Kartenquellen nutzen zu können Online- und Kachel-Karten Online-Karten verwenden (lädt Kacheln aus dem Internet und speichert diese auf der SD-Karte) Online-Karten @@ -392,7 +392,7 @@ Nie Nachführung nur bei aktiver Navigation Kartennachführung erfolgt nur während Navigation. - Kartennachführung aktiv + Kartennachführung aktiv. Vektor Renderer spezif. Optionen Overlay / Underlay Einstellungen Kartenquelle @@ -793,7 +793,7 @@ Sprachpaket für Navigation auswählen (Sprachcodes siehe ISO 639-1) Sprachansagen Sprachansagen werden initialisiert… - Sprachpaket-Version wird nicht unterstützt. + Sprachpaket-Version wird nicht unterstützt Sprachpaket ist defekt Das aktuelle Sprachpaket ist nicht verfügbar @@ -1431,7 +1431,7 @@ Version : Über Versionsinfo, Lizenz, Projekt Mitglieder - Tips + Tipps Änderungen in 1.6: \n\t* Unterstützung von Full-HD Geräten \n\t* Unterstützung von transparentem Kartenhintergrund From abae241bcd38c8c8d7599d5897d764a443c2cf09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kilian=20K=C3=B6ppchen?= Date: Fri, 10 Jan 2014 15:26:02 +0100 Subject: [PATCH 19/40] Translated using Weblate (German) Currently translated at 99.2% (1199 of 1208 strings) --- OsmAnd/res/values-de/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index eb72a6258f..86bf3ca961 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -839,8 +839,8 @@ Navigationsanwendung OsmAnd POI-Daten wurden erfolgreich aktualisiert ({0} wurden geladen) Fehler beim aktualisieren der Offline-Daten - Fehler beim Herunterladen der Daten vom Server. - Für dieses Gebiet sind keine POI gespeichert. + Fehler beim Herunterladen der Daten vom Server + Für dieses Gebiet sind keine POI gespeichert Aktualisierung von POI ist für kleine Zoomeinstellungen nicht verfügbar POI aktualisieren Wollen Sie die Daten via Internet aktualisieren? @@ -870,7 +870,7 @@ Offline Daten für {0} existieren schon ({1}). Wollen Sie die überschreiben ({2})? Adresse Daten erfolgreich heruntergeladen - I/O Fehler aufgetreten. + I/O Fehler aufgetreten Herunterladen… Die Liste der verfügbaren Regionen wird geladen… From 0fa05a1a0229012bd642c5f3a15343e64e388ed3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Thu, 23 Jan 2014 09:30:13 +0100 Subject: [PATCH 20/40] Translated using Weblate (Basque) Currently translated at 97.0% (1172 of 1208 strings) --- OsmAnd/res/values-eu/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-eu/strings.xml b/OsmAnd/res/values-eu/strings.xml index ab2185ce93..d7e5120df8 100644 --- a/OsmAnd/res/values-eu/strings.xml +++ b/OsmAnd/res/values-eu/strings.xml @@ -266,7 +266,7 @@ ⏎\n⇥⇥OsmAnd (OSM Automated Navigation Directions)⏎\n⏎\n⇥⇥OsmAnd kode irekiko nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) mota askotako munduko mapetara sarbidearekin. Mapa guztiak (bektore edo tesela mapak) telefonoaren memoria txartelean gorde daitezke, lineaz kanpoko erabilpena bermatzeko. OsmAndek ere lineaz kanpoko eta sareko ibilbideak eskaintzen ditu, txandakako ahots gidaritzarekin.⏎\n⏎\n⇥⇥Ezaugarri nagusi batzuk:⏎\n⇥⇥- Lineaz kanpoko erabateko erabilpena (bektore edo tesela mapak gorde ondoren aukeratu daitezken karpetetan)⏎\n⇥⇥- Lineaz kanpoko mundu guztiko mapa konpaktuak eskuragarri⏎\n⇥⇥- Muga gabeko herrialde edo eskualdeetako mapen deskarga, aplikaziotik zuzenean⏎\n⇥⇥- Lineaz kanpoko WIkipediako erabilpena (deskargatu Wikipediako POIak), turismorako erabilgarriak⏎\n⇥⇥- Gain-geruza desberdin asko ikusi daitezke, GPX edo ibilbide bidea, interes puntuak (POI), gogokoenak, sestra-kurbak, garraio publikoaren geltokiak, geruza gardeneko mapa gehigarriak.⏎\n⇥⇥- Lineaz kanpoko helbide eta lekuen bilatzailea (POIak)⏎\n⇥⇥- Lineaz kanpoko ibilbide motzetarako jarraipena (esperimentala)⏎\n⇥⇥- Kotxea, txirrinda eta oinezkoentzat modua:⏎\n⇥⇥- aukerazko egun/gau ikuspegi automatizatua⏎\n⇥⇥- aukerazko abiaduraren araberako maparen zooma⏎\n⇥⇥- aukerazko maparen alineazioa, iparrorratzaren edo norabidearen araberakoa⏎\n⇥⇥- aukerazko errei gidaritza, abiadura muga bistaratzea, grabaketa edo TTS (ahots bihurgailua) motorra⏎\n⏎\n⇥⇥OsmAndeko dohaineko bertsioaren mugak:⏎\n⇥⇥- Mapa kopuruak deskargatzeko muga⏎\n⇥⇥- Wikipediako POIetara lineaz kanpoko sarbiderik ez⏎\n⏎\n⇥⇥OsmAnd aktiboki garatua izaten ari da eta proiektuaren prozesuak dituen garatze, programatze eta funtzionalitate berrien probak egiteko behar den finantziazio laguntzetan ere oinarritzen da. OsmAnd+ erosiz gero, aplikazioa are zirraragarria izatea laguntzen duzu! Ezaugarri berriak finantzatzea edo dohaintza orokor bat egitea posible da osman.net-en ⏎\nOsmAnd (OSM Automated Navigation Directions) mapa eta nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) aske, mundu osoko eta kalitate handiko datuetara sarbidearekin. Mapen datu guztiak zure gailuaren memoria txartelean gorde daiteke lineaz kanpoko erabilpena eduki dezazun. Zure gailuaren GPSaren bitartez, OsmAnd-ek nabigazioa eskaintzen dizu, ikusmenezko edo entzutezko gidaritzarekin, kotxe, txirrinda edo oinezkoentzat. Funtzionalitate guztiak bai sarean bai lineaz kanpo funtzionatzen dute (ez dago interneten beharrik).⏎\n⏎\nEzaugarri nagusi batzuk:⏎\n⏎\nNabigazioa⏎\n- Sarean (azkar) edo lineaz kanpo (atzerrian zaudenean roaming kargarik gabe) funtzionatzen du⏎\n- Txandakako ahozko gidaritza (grabatutako eta sintetizatutako ahotsak)⏎\n- Aukerako bide gidaritza, kaleen izenak, eta estimatutako iritsiera ordua⏎\n- Ibilbidearen erdian geldiuneak jarri daitezke⏎\n- Ibilbidetik desbideratzen bazara, automatikoki birkalkulatuko du ibilbidea⏎\n- Leku bilatzailea helbidearen, motaren (adibidez: jatetxea, hotel, gasolindegia, museoa) edo koordenaden arabera⏎\n⏎\nMapen ikuspena⏎\n- Zure kokapena eta orientazioa agertzen da⏎\n- Aukeraz, mapa iparrorratzarekin edo zure norabidearekin mugituko da⏎\n- Gorde zure leku garrantzitsuenak Gogokoetan⏎\n- Zure inguruko POIak (Interes puntuak) ikustea⏎\n- Tesela bereziak ikusi daitezke sarean⏎\n- Satelite irudiak (Bingetik) ikusi daitezke⏎\n- Gain-geruza desberdinak ikusi daitezke, ibilbidea/nabigazioaren GPX bidea eta mapa garden gehigarriak⏎\n- Leku izenak ingelesez, tokiko hizkuntzan edo fonetikoki idatzia ikusteko aukera dago⏎\n⏎\nOpenStreetMap eta Wikipediako datuen erabilpena:⏎\n- Munduko proiektu kolaboratibo hoberenen kalitate handiko informazioa⏎\n- OpenStreetMapeko munduko mapak, herrialde edo eskualde bakoitza eskuragarri dago⏎\n- Wikipediako POIak, turismorako onak (dohaineko bertsioan ez daude erabilgarri)⏎\n- Muga gabeko dohaineko deskarga, aplikaziotik zuzenean (dohaineko bertsioan 16 mapa fitxategiko muga)⏎\n- Mapa eguneratuak beti (gutxienez eguneraketa bat hilabetean)⏎\n- Lineaz kanpoko bektore mapa konpaktuak⏎\n- Mapa osoa edo errepide sarea bakarrik aukeratu daiteke (Adibidez: Japonia guztia 700 MB dira, edo errepide sarea 200 MB bakarrik)⏎\n- Sareko edo katxeatutako tesela mapak jasaten ditu ere⏎\n⏎\nSegurtasun ezaugarriak⏎\n- Aukerazko eguna/gaua ikuspegi kommutazio automatikoa⏎\n- Aukerazko abiadura mugak agertzea, gainditzerakoan abisatzen dizuna⏎\n- Aukerazko abiaduraren araberako mapa zooma⏎\n- Partekatu zure kokapena, zure lagunek uneoro jakin dezaten non zauden⏎\n⏎\nTxirrinda eta oinezkoen ezaugarriak⏎\n- Mapek oinezko, mendiko eta txirrinda bideak dakartzate, kanpo jardueretako aproposa.⏎\n- Ibilbide eta ikuspegi bereziak txirrinda eta oinezkoentzako⏎\n- Aukerazko garraio publikoaren geltokiak (autobus, tranbia, trena) autobus-linien izenak barne⏎\n- Aukerazko bidaiaren grabaketa GPX fitxategi batera edo sareko zerbitzu batera⏎\n- Abiadura eta altuera azaltzeko aukera⏎\n- Sestra-kurbak eta mendi itzalak (plugin gehigarri batez) erakusteko aukera⏎\n⏎\nOpenStreetMapera zuzeneko laguntza⏎\n- Mapetako akatsak salatu⏎\n- GPX bideak igo aplikaziotik OSMra zuzenean⏎\n- POIak gehitu eta zuzenean OSMra igo (edo geroago lineaz kanpo egon ezkero)⏎\n- Aukerazko bidai grabaketa atzeko planoan bada ere (gailua esekituta dagoen bitartean)⏎\n⏎\nOsmAnd kode irekiko proiektua da, eta aktiboki garatua izaten ari da. Edozeinek lagundu dezake aplikazioarekin, erroreak salatzen, itzulitakoa hobetzen, edo ezaugarri berriak programatzen. Proiektua hobetzeko etengabeko egoeran dago garatzaileen eta erabiltzaileen interakzio modu hauei esker. Era berean, proiektuaren prozesuak dituen garatze, programatze eta funtzionalitate berrien probak egiteko behar den finantziazio laguntzetan ere oinarritzen da. OsmAnd+ erosiz gero, aplikazioa are zirraragarria izatea laguntzen duzu! Ezaugarri berriak finantzatzea edo dohaintza orokor bat egitea posible da osman.net-en.⏎\n⏎\n⏎\nGutxi gorabeherako mapa estaldura eta kalitatea:⏎\n- Mendebaldeko Europa: ****⏎\n- Ekialdeko Europa: ***⏎\n- Errusia: ***⏎\n- Ipar Amerika: ***⏎\n- Hego Amerika: **⏎\n- Asia: **⏎\n- Japonia & Korea: ***⏎\n- Ekialde hurbila: **⏎\n- Afrika: **⏎\n- Antartika: *⏎\n⏎\nJasandako herrialdeen lista (funtsean mundu osoa!):⏎\nAfganistan, Albania, Aljeria, Andorra, Angola, Aingira, Antigua eta Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamak, Bahrein, Bangladesh, Barbados, Bielorrusia, Belgika, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Bosnia eta Herzegovina, Botswana, Brasil, Birjina britainiar uharteak, Brunei, Bulgaria, Burkina Faso, Burundi, Kanbodia, Kamerun, Kanada, Kabo Berde, Afrika Erdiko Errepublika, Txad, Txile, Txina, Kolonbia, Komoreak, Kongo, Kosta Rika, Boli Kosta, Kroazia, Kuba, Curaçao, Txipre, Txekia, Danimarka, Djibuti, Dominika, Errepublika Dominikarra, Ekuador, Egipto, El Salvador, Ekuatorial Ginea, Eritrea, Estonia, Etiopia, Euskal Herria, Fiji, Finlandia, Frantzia, Guyana Frantsesa, Polinesia Frantsesa, Gabon, Gambia, Georgia, Alemania, Ghana, Gibraltar, Grezia, Groenlandia, Grenada, Guadalupe, Guam, Guatemala, Guernesey, Ginea, Ginea-Bissau, Guyana, Haiti, Vatikano, Honduras, Hong Kong, Hungaria, Islandia, India, Indonesia, Iran, Irak, Irlanda, Man, Israel, Italia, Jamaika, Japonia, Jersey, Jordania, Kazakhstan, Kenya, Kiribati, Ipar Korea eta Hego Korea, Kuwait, Kirgizistan, Laos, Letpmoa, Libano, Lesotho, Liberia, Libia, Liechtenstein, Lituania, Luxenburgo, Makao, Mazedonia, Madagaskar, Malawi, Malaysia, Maldivak, Mali, Malta, Martinika, Mauritania, Maurizio, Mayotte, Mexiko, Mikronesia, Moldavia, Monako, Mongolia, Montenegro, Montserrat, Maroko, Mozambike, Myanmar, Namibia, Nauru, Nepal, Herbehereak, Antilla herbeheretarrak, Kaledonia Berria, Zeelanda Berria, Nikaragua, Niger, Nigeria, Norvegia, Oman, Pakistan, Palau, Palestina, Panama, Papua Ginea Berria, Paraguai, Peru, Filipinak, Polonia, Portugal, Puerto Rico, Qatar, Errumania, Errusia, Ruanda, San Bartolome, Santa Elena, Saint Kitts eta Nevis, Santa Lucia, San Martin, Saint Pierre eta Mikelune, Saint Vincent eta Grenadinak, Samoa, San Marino, Saudi Arabia, Senegal, Serbia, Seychelleak, Sierra Leona, Singapur, Eslovakia, Eslovenia, Somalia, Hego Africa, Hego Georgia, Hego Sudan, Espainia, Sri Lanka, Sudan, Surinam, Swazilandia, Suedia, Suitza, Siria, Taiwan, Tadjikistan, Tanzania, Tailandia, Timor-Leste, Togo, Tokelau, Tonga, Trinidad eta Tobago, Tunisia, Turkia, Turkmenistan, Tuvalu, Uganda, Ukraina, Arabiar Emirerri Batuak, Erresuma Batua, Ameriketako Estatu Batuak, Uruguai, Uzbekistan, Vanuatu, Venezuela, Vietnam, Wallis eta Futuna, Sahara, Yemen, Zambia, Zimbabwe.⏎\n⇥ OsmAnd+ Mapak & Nabigazioa - Lineaz Kanpoko eta Sare Bidezko OSM Mapetarako Mapa Ikusle eta Nabigatzaile Mugikor Globala\n + Lineaz Kanpoko eta Sare Bidezko OSM Mapetarako Mapa Ikusle eta Nabigatzaile Mugikor Globala ⏎\n⇥⇥OsmAnd+ (OSM Automated Navigation Directions)⏎\n⏎\n⇥⇥OsmAnd+ kode irekiko nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) mota askotako munduko mapetara sarbidearekin. Mapa guztiak (bektore edo tesela mapak) telefonoaren memoria txartelean gorde daitezke, lineaz kanpoko erabilpena bermatzeko. OsmAndek ere lineaz kanpoko eta sareko ibilbideak eskaintzen ditu, txandakako ahots gidaritzarekin.⏎\n⏎\n⇥⇥OsmAnd+ aplikazioaren ordaindutako bertsioa da, hau erosiz gero proiektua aurrera eramaten laguntzen ari zara, ezaugarri berrien garapena finantzatzen, eta gainera, azken eguneraketak jasoko dituzu.⏎\n⏎\n⇥⇥Ezaugarri nagusi batzuk:⏎\n⇥⇥- Lineaz kanpoko erabateko erabilpena (bektore edo tesela mapak gorde ondoren aukeratu daitezken karpetetan)⏎\n⇥⇥- Lineaz kanpoko mundu guztiko mapa konpaktuak eskuragarri⏎\n⇥⇥- Muga gabeko herrialde edo eskualdeetako mapen deskarga, aplikaziotik zuzenean⏎\n⇥⇥- Lineaz kanpoko WIkipediako erabilpena (deskargatu Wikipediako POIak), turismorako erabilgarriak⏎\n⇥⇥- Gain-geruza desberdin asko ikusi daitezke, GPX edo ibilbide bidea, interes puntuak (POI), gogokoenak, sestra-kurbak, garraio publikoaren geltokiak, geruza gardeneko mapa gehigarriak.⏎\n⇥⇥- Lineaz kanpoko helbide eta lekuen bilatzailea (POIak)⏎\n⇥⇥- Lineaz kanpoko ibilbide motzetarako jarraipena (esperimentala)⏎\n⇥⇥- Kotxea, txirrinda eta oinezkoentzat modua:⏎\n⇥⇥- aukerazko egun/gau ikuspegi automatizatua⏎\n⇥⇥- aukerazko abiaduraren araberako maparen zooma⏎\n⇥⇥- aukerazko maparen alineazioa, iparrorratzaren edo norabidearen araberakoa⏎\n⇥⇥- aukerazko errei gidaritza, abiadura muga bistaratzea, grabaketa edo TTS (ahots bihurgailua) motorra⏎\n⇥ ⏎\nOsmAnd (OSM Automated Navigation Directions) mapa eta nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) aske, mundu osoko eta kalitate handiko datuetara sarbidearekin. Mapen datu guztiak zure gailuaren memoria txartelean gorde daiteke lineaz kanpoko erabilpena eduki dezazun. Zure gailuaren GPSaren bitartez, OsmAnd-ek nabigazioa eskaintzen dizu, ikusmenezko edo entzutezko gidaritzarekin, kotxe, txirrinda edo oinezkoentzat. Funtzionalitate guztiak bai sarean bai lineaz kanpo funtzionatzen dute (ez dago interneten beharrik).⏎\n⏎\nEzaugarri nagusi batzuk:⏎\n⏎\nNabigazioa⏎\n- Sarean (azkar) edo lineaz kanpo (atzerrian zaudenean roaming kargarik gabe) funtzionatzen du⏎\n- Txandakako ahozko gidaritza (grabatutako eta sintetizatutako ahotsak)⏎\n- Aukerako bide gidaritza, kaleen izenak, eta estimatutako iritsiera ordua⏎\n- Ibilbidearen erdian geldiuneak jarri daitezke⏎\n- Ibilbidetik desbideratzen bazara, automatikoki birkalkulatuko du ibilbidea⏎\n- Leku bilatzailea helbidearen, motaren (adibidez: jatetxea, hotel, gasolindegia, museoa) edo koordenaden arabera⏎\n⏎\nMapen ikuspena⏎\n- Zure kokapena eta orientazioa agertzen da⏎\n- Aukeraz, mapa iparrorratzarekin edo zure norabidearekin mugituko da⏎\n- Gorde zure leku garrantzitsuenak Gogokoetan⏎\n- Zure inguruko POIak (Interes puntuak) ikustea⏎\n- Tesela bereziak ikusi daitezke sarean⏎\n- Satelite irudiak (Bingetik) ikusi daitezke⏎\n- Gain-geruza desberdinak ikusi daitezke, ibilbidea/nabigazioaren GPX bidea eta mapa garden gehigarriak⏎\n- Leku izenak ingelesez, tokiko hizkuntzan edo fonetikoki idatzia ikusteko aukera dago⏎\n⏎\nOpenStreetMap eta Wikipediako datuen erabilpena:⏎\n- Munduko proiektu kolaboratibo hoberenen kalitate handiko informazioa⏎\n- OpenStreetMapeko munduko mapak, herrialde edo eskualde bakoitza eskuragarri dago⏎\n- Wikipediako POIak, turismorako onak (dohaineko bertsioan ez daude erabilgarri)⏎\n- Muga gabeko dohaineko deskarga, aplikaziotik zuzenean (dohaineko bertsioan 16 mapa fitxategiko muga)⏎\n- Mapa eguneratuak beti (gutxienez eguneraketa bat hilabetean)⏎\n- Lineaz kanpoko bektore mapa konpaktuak⏎\n- Mapa osoa edo errepide sarea bakarrik aukeratu daiteke (Adibidez: Japonia guztia 700 MB dira, edo errepide sarea 200 MB bakarrik)⏎\n- Sareko edo katxeatutako tesela mapak jasaten ditu ere⏎\n⏎\nSegurtasun ezaugarriak⏎\n- Aukerazko eguna/gaua ikuspegi kommutazio automatikoa⏎\n- Aukerazko abiadura mugak agertzea, gainditzerakoan abisatzen dizuna⏎\n- Aukerazko abiaduraren araberako mapa zooma⏎\n- Partekatu zure kokapena, zure lagunek uneoro jakin dezaten non zauden⏎\n⏎\nTxirrinda eta oinezkoen ezaugarriak⏎\n- Mapek oinezko, mendiko eta txirrinda bideak dakartzate, kanpo jardueretako aproposa.⏎\n- Ibilbide eta ikuspegi bereziak txirrinda eta oinezkoentzako⏎\n- Aukerazko garraio publikoaren geltokiak (autobus, tranbia, trena) autobus-linien izenak barne⏎\n- Aukerazko bidaiaren grabaketa GPX fitxategi batera edo sareko zerbitzu batera⏎\n- Abiadura eta altuera azaltzeko aukera⏎\n- Sestra-kurbak eta mendi itzalak (plugin gehigarri batez) erakusteko aukera⏎\n⏎\nOpenStreetMapera zuzeneko laguntza⏎\n- Mapetako akatsak salatu⏎\n- GPX bideak igo aplikaziotik OSMra zuzenean⏎\n- POIak gehitu eta zuzenean OSMra igo (edo geroago lineaz kanpo egon ezkero)⏎\n- Aukerazko bidai grabaketa atzeko planoan bada ere (gailua lo moduan dagoen bitartean)⏎\n⏎\nOsmAnd kode irekiko proiektua da, eta aktiboki garatua izaten ari da. Edozeinek lagundu dezake aplikazioarekin, erroreak salatzen, itzulitakoa hobetzen, edo ezaugarri berriak programatzen. Proiektua hobetzeko etengabeko egoeran dago garatzaileen eta erabiltzaileen interakzio modu hauei esker. Era berean, proiektuaren prozesuak dituen garatze, programatze eta funtzionalitate berrien probak egiteko behar den finantziazio laguntzetan ere oinarritzen da. OsmAnd+ erosiz gero, aplikazioa are zirraragarria izatea laguntzen duzu! Ezaugarri berriak finantzatzea edo dohaintza orokor bat egitea posible da osman.net-en.⏎\n⏎\n⏎\nGutxi gorabeherako mapa estaldura eta kalitatea:⏎\n- Mendebaldeko Europa: ****⏎\n- Ekialdeko Europa: ***⏎\n- Errusia: ***⏎\n- Ipar Amerika: ***⏎\n- Hego Amerika: **⏎\n- Asia: **⏎\n- Japonia & Korea: ***⏎\n- Ekialde hurbila: **⏎\n- Afrika: **⏎\n- Antartika: *⏎\n⏎\nJasandako herrialdeen lista (funtsean mundu osoa!):⏎\nAfghanistan, Albania, Aljeria, Andorra, Angola, Aingira, Antigua eta Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamak, Bahrein, Bangladesh, Barbados, Bielorrusia, Belgika, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Bosnia eta Herzegovina, Botswana, Brasil, Birjina britainiar uharteak, Brunei, Bulgaria, Burkina Faso, Burundi, Kanbodia, Kamerun, Kanada, Kabo Berde, Afrika Erdiko Errepublika, Txad, Txile, Txina, Kolonbia, Komoreak, Kongo, Kosta Rika, Boli Kosta, Kroazia, Kuba, Curaçao, Txipre, Txekia, Danimarka, Djibuti, Dominika, Errepublika Dominikarra, Ekuador, Egipto, El Salvador, Ecuatorial Ginea, Eritrea, Estonia, Etiopia, Euskal Herria, Fiji, Finlandia, Frantzia, Guyana Frantsesa, Polinesia Frantsesa, Gabon, Ganbia, Georgia, Alemania, Ghana, Gibraltar, Grezia, Groenlandia, Grenada, Guadalupe, Guam, Guatemala, Guernsey, Ginea, Ginea-Bissau, Guyana, Haiti, Vatikano, Honduras, Hong Kong, Hungaria, Island, India, Indonesia, Iran, Irak, Irlanda, Man, Israel, Italia, Jamaica, Japonia, Jersey, Jordania, Kazakhstan, Kenia, Kiribati, Ipar Korea eta Hego Korea, Kuwait, Kirgizstan, Laos, Letpmoa, Libano, Lesotho, Liberia, Libia, Liechtenstein, Lituania, Luxenburgo, Makao, Mazedonia, Madagaskar, Malawi, Malaysia, Maldivak, Mali, Malta, Martinika, Mauritania, Maurizio, Mayotte, Mexico, Micronesia, Moldavia, Monako, Mongolia, Montenegro, Montserrat, Maroko, Mozambike, Myanmar, Namibia, Nauru, Nepal, Herbeherak, Antilla herbeheretarrak, Caledonia Berria, Zelanda Berria, Nikaragua, Niger, Nigeria, Norbegia, Oman, Pakistan, Palau, Palestina, Panama, Papua Ginea Berria, Paraguai, Peru, Filipinak, Polonia, Portugal, Puerto Rico, Qatar, Errumania, Errusia, Ruanda, San Bartolome, Santa Elena, Saint Kitts eta Nevis, Santa Lucia, San Martin, Saint Pierre eta Mikelune, Saint Vincent eta Grenadinak, Samoa, San Marino, Saudi Arabia, Senegal, Serbia, Seychelleak, Sierra Leona, Singapur, Eslovakia, Eslovenia, Somalia, Hego Africa, Hego Georgia, Hego Sudan, Espainia, Sri Lanka, Sudan, Surinam, Swazilandia, Suegia, Suiza, Siria, Taiwan, Tajikistan, Tanzania, Tailandia, Timor-Leste, Togo, Tokelau, Tonga, Trinidad eta Tobago, Tunisia, Turkia, Turkmenistan, Tuvalu, Uganda, Ukraina, Arabiar Emirerri Batuak, Erresuma Batua, Ameriketako Estatu Batuak, Uruguai, Uzbekistan, Vanuatu, Venezuela, Vietnam, Wallis eta Futuna, Sahara, Yemen, Zambia, Zimbabwe.⏎\n⇥ Lineaz kanpoko Datuak Eguneratu @@ -1217,4 +1217,4 @@ Ibilbide laburra Ibilbide laburra erabili - \ No newline at end of file + From 48f9c762dc79634cd7647f4043560778b1dca27e Mon Sep 17 00:00:00 2001 From: "Rilen T. L" Date: Tue, 11 Feb 2014 15:02:49 +0100 Subject: [PATCH 21/40] Translated using Weblate (Portuguese) Currently translated at 98.6% (1192 of 1208 strings) --- OsmAnd/res/values-pt/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml index c6136bc834..86ba608790 100644 --- a/OsmAnd/res/values-pt/strings.xml +++ b/OsmAnd/res/values-pt/strings.xml @@ -1776,4 +1776,4 @@ Afeganistão , Albânia, Argélia , Andorra, Angola , Anguilla, Antígua e Barbu Partilhar Favoritos partilhados via OsmAnd Formato inválido: %s - \ No newline at end of file + From 5eb7872a25a657e73063b0c6a97feb4ad2f6c303 Mon Sep 17 00:00:00 2001 From: "Rilen T. L" Date: Tue, 11 Feb 2014 15:04:14 +0100 Subject: [PATCH 22/40] Translated using Weblate (Turkish) Currently translated at 84.9% (1026 of 1208 strings) --- OsmAnd/res/values-tr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index 147deb7e92..062d01e26c 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -1205,4 +1205,4 @@ \n\t* Yeniden tasarlanmış arayüz↵ →→\n\t* Ashklat düzeltmek ↵ - \ No newline at end of file + From d43f8b3f3b2500e39b761986b1a0496f23afe2bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Fri, 28 Mar 2014 14:36:12 +0100 Subject: [PATCH 23/40] Translated using Weblate (Armenian) Currently translated at 9.8% (122 of 1243 strings) --- OsmAnd/res/values-hy/strings.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-hy/strings.xml b/OsmAnd/res/values-hy/strings.xml index e6daf8c958..433483d2b4 100644 --- a/OsmAnd/res/values-hy/strings.xml +++ b/OsmAnd/res/values-hy/strings.xml @@ -1,4 +1,5 @@ -Տարածքի ռելիեֆ + +Տարածքի ռելիեֆ Տարածքի մգեցված ռելիեֆով քարտեզներ Սկիզբ Ձայնա/Տեսանյութեր @@ -146,4 +147,5 @@ Կշիռ Կշռի սահմանափակման նշում Ստեղծել ուղիներ (կամ օգտագործել/փոփոխել առկա GPX ֆայլերը) կետեռի միջև հեռավորության չափման համար։ Պահպանել որպես GPX, որը կարող է օգտագործվել GPX ուղիների պլանավորման համար։ - \ No newline at end of file + No + From 6dc8bb577b61c45f9ca8c812c6dd3431c1575bb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Fri, 28 Mar 2014 14:36:32 +0100 Subject: [PATCH 24/40] Translated using Weblate (Bosnian) Currently translated at 10.1% (126 of 1243 strings) --- OsmAnd/res/values-bs/strings.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-bs/strings.xml b/OsmAnd/res/values-bs/strings.xml index 17e88ec684..3b2013aa07 100644 --- a/OsmAnd/res/values-bs/strings.xml +++ b/OsmAnd/res/values-bs/strings.xml @@ -1,4 +1,5 @@ -"Promjene u 0.8.1 : " + +"Promjene u 0.8.1 : " Što prije Sačuvajte put kao GPX datoteku Kružni tok : idite %1$d izlaz i idite @@ -124,4 +125,6 @@ OpenMaps EU Spasi\n…trenutnu GPX traku GPS status - \ No newline at end of file + Ne + Da + From e4628dd1bfc30314d5b00703c470771706959374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Fri, 28 Mar 2014 14:36:09 +0100 Subject: [PATCH 25/40] Translated using Weblate (Indonesian) Currently translated at 4.2% (53 of 1243 strings) --- OsmAnd/res/values-id/strings.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-id/strings.xml b/OsmAnd/res/values-id/strings.xml index cf4690b139..46c7e14a91 100644 --- a/OsmAnd/res/values-id/strings.xml +++ b/OsmAnd/res/values-id/strings.xml @@ -1,4 +1,5 @@ -Mencari alamat + +Mencari alamat Koordinat Mencari transportasi Mencari favorit @@ -64,4 +65,6 @@ Info versi, lisensi, anggota Tip Dapat di download: %1$s - \ No newline at end of file + No + Yes + From 75159a3a79d7ee8ac0771785f3b1c4bfda5ca78f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D1=8F=D1=87=D0=B5=D1=81=D0=BB=D0=B0=D0=B2?= Date: Sat, 31 May 2014 07:45:27 +0200 Subject: [PATCH 26/40] Translated using Weblate (Russian) Currently translated at 98.4% (1367 of 1388 strings) --- OsmAnd/res/values-ru/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index f2ad7fbc42..d68986c0d3 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -1601,8 +1601,8 @@ OsmAnd - открытый источник и активно развается. Избранные точки расшаренные через OsmAnd Рассчитать маршрут между точками Имя пользователя - - + Войти в группу + Следить за устройством Устройства Управление OsMo Подключиться к устройству From 7fa1526ab54b42a8bb09ca1abcc254583ebfda90 Mon Sep 17 00:00:00 2001 From: k ks Date: Sat, 7 Jun 2014 01:12:56 +0200 Subject: [PATCH 27/40] Translated using Weblate (Korean) Currently translated at 98.7% (1375 of 1393 strings) --- OsmAnd/res/values-ko/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ko/strings.xml b/OsmAnd/res/values-ko/strings.xml index de35758803..2782d5ece4 100644 --- a/OsmAnd/res/values-ko/strings.xml +++ b/OsmAnd/res/values-ko/strings.xml @@ -2069,4 +2069,4 @@ Vanuatu, Venezuela, Vietnam, Wallis and Futuna, Western Sahara, Yemen, Zambia, Z %1$s\n 포인트 %1$s\n 트랙 %2$s 현재 트랙 기록 - \ No newline at end of file + From 02eb4d957c6a8a293ee1e575a01bf3396e26e3d1 Mon Sep 17 00:00:00 2001 From: ks k Date: Wed, 11 Jun 2014 19:54:28 +0200 Subject: [PATCH 28/40] Translated using Weblate (Korean) Currently translated at 99.9% (1419 of 1420 strings) --- OsmAnd/res/values-ko/strings.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/OsmAnd/res/values-ko/strings.xml b/OsmAnd/res/values-ko/strings.xml index 2782d5ece4..f59268e84e 100644 --- a/OsmAnd/res/values-ko/strings.xml +++ b/OsmAnd/res/values-ko/strings.xml @@ -2069,4 +2069,14 @@ Vanuatu, Venezuela, Vietnam, Wallis and Futuna, Western Sahara, Yemen, Zambia, Z %1$s\n 포인트 %1$s\n 트랙 %2$s 현재 트랙 기록 + %1$s 불러오는 중… + 현재 시간 + 중간 지점 + \n\n지도를 보려면 누르고 계십시요 + 지연 탐색을 시작 + 선택됨 + 분할 간격을 선택 + "중간지점: %1$s " + 하강/상승: %1$s + From fab679df5e1ed63727c48b4b7a139b20e4316059 Mon Sep 17 00:00:00 2001 From: Viktar Palstsiuk Date: Thu, 12 Jun 2014 09:57:27 +0200 Subject: [PATCH 29/40] Translated using Weblate. --- OsmAnd/res/values-be/bidforfix.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-be/bidforfix.xml b/OsmAnd/res/values-be/bidforfix.xml index 9c5ad89af1..32364fd42e 100644 --- a/OsmAnd/res/values-be/bidforfix.xml +++ b/OsmAnd/res/values-be/bidforfix.xml @@ -1,3 +1,5 @@ - +Загрузка + %1$d падтрымала + сабрана: %d%% From 7a35bc5f86fba0bf7b2dc77f5a9ae96c378dfd32 Mon Sep 17 00:00:00 2001 From: Ludek M Date: Thu, 12 Jun 2014 09:07:10 +0200 Subject: [PATCH 30/40] Translated using Weblate. --- OsmAnd/res/values-cs/strings.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index 31ba144ca0..2b966944ce 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -1521,7 +1521,7 @@ s často kladenými otázkami. Relace není k dispozici, prosím zkontrolujte že je zapnuta volba \'Odesílat pozice\'. Sdílet relaci Relace URL k sledování zařízení (%1$s) - Aby bylo možné připojit cílové zařízení %2$s, klikněte na link %3$s nebo určete ID sledovacího zařízení (%1$s) + Aby bylo možné připojit cílové zařízení %2$s, klikněte na link %3$s nebo určete ID sledovaného zařízení (%1$s) Interval logování Vyberte časový interval odesílání polohy dnů @@ -1623,4 +1623,7 @@ s často kladenými otázkami. Právě nahrávaná trasa Bod na trase \n\nStiskněte a podržte pro zobrazení na mapě + Uložit jako skupinu oblíbených + Vybrat body na trase + Textové popisky From 9fb5175e497f70cead97bdad7dfb52012fee0a4a Mon Sep 17 00:00:00 2001 From: Aleksei Polkhirev Date: Thu, 12 Jun 2014 09:31:00 +0200 Subject: [PATCH 31/40] Translated using Weblate. --- OsmAnd/res/values-ru/strings.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index d68986c0d3..c71dfb5b22 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -1710,4 +1710,10 @@ OsmAnd - открытый источник и активно развается. Путевая точка Выбрать интервал разбиения Старт навигации по тайм-ауту - + Сохранить как группу избранных + Выбрать путевые точки + Текстовые метки + \n\nНажать и удерживать для просмотра на карте + выбранные + Путевые точки: %1$s + From bcabab19347639404012f61d42c000df1af15911 Mon Sep 17 00:00:00 2001 From: Ivan Gonzalez Date: Thu, 12 Jun 2014 09:14:45 +0200 Subject: [PATCH 32/40] Translated using Weblate. --- OsmAnd/res/values-es/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index 1c740220e7..b79d1474ff 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -1784,4 +1784,7 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant Descendido/ascendido: %1$s Tiempo actual Punto de ruta + Seleccionar puntos de ruta + Etiquetas de texto + Guardar como grupo de favoritos From 104bf867ba27e14bb8065657089b3279a6728f31 Mon Sep 17 00:00:00 2001 From: Leif Larsson Date: Thu, 12 Jun 2014 09:36:59 +0200 Subject: [PATCH 33/40] Translated using Weblate. --- OsmAnd/res/values-sv/strings.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-sv/strings.xml b/OsmAnd/res/values-sv/strings.xml index eae25def7b..1b152664c5 100644 --- a/OsmAnd/res/values-sv/strings.xml +++ b/OsmAnd/res/values-sv/strings.xml @@ -1560,7 +1560,7 @@ Aktuella data på enheten (%1$s ledigt): Aktuell tid Waypoint \n\nTryck och håll för att se på karta - Start navigering med fördröjning + Starta navigering med fördröjning valda Välj split-intervall Underspår: %1$s @@ -1583,4 +1583,7 @@ Aktuella data på enheten (%1$s ledigt): %1$s \nPunkter %1$s \nSpår %2$s Aktuellt inspelningsspår + Spara som favoritgrupp + Välj waypoints + Textetiketter From b409a0914694aed23ae01dc5e34ac43dfebd6bdc Mon Sep 17 00:00:00 2001 From: Viktar Palstsiuk Date: Thu, 12 Jun 2014 10:01:35 +0200 Subject: [PATCH 34/40] Translated using Weblate. --- OsmAnd/res/values-be/strings.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index f58253e996..68cd2d2e53 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -1853,4 +1853,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві \n\nНацісьніце і ўтрымлівайце, каб убачыць на мапе Пачаць навігацыю з затрымкай Перапад вышынь: %1$s - + Захаваць як групу упадабаных + Абраць кропкі шляху + Тэкставыя пазнакі + From 2c924f35499267fb9d7d79b5a9c867b5d08fdc79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Thu, 12 Jun 2014 10:01:18 +0200 Subject: [PATCH 35/40] Translated using Weblate (Czech) Currently translated at 99.7% (1419 of 1422 strings) --- OsmAnd/res/values-cs/strings.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index 2b966944ce..2c3283eec1 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -139,8 +139,8 @@ Navigace Nastavení způsobu navigace Obecná nastavení - Offline data - Spravovat offline data (mapy, trasy, hlasová data…) + Spravovat mapové soubory + Stáhnout a spravovat offline mapy uložené ve vašem zařízení Obecné Nastavení displeje, jazyka, zvuku a dalších parametrů Jméno uživatele @@ -574,8 +574,7 @@ Jeďte rovně Pokračujte Stáhnout regiony - Děkujeme, že jste si zvolili OsmAnd. -\n Abyste mohli využívat všech možností aplikace, potřebujete soubory s mapami a hlasem, které si můžete stáhnout (Nastavení -> Data) nebo připravit sami. Poté budete moci hledat podle adres, hledat body zájmu (POI) a spojení veřejnou dopravou. + Děkujeme, že jste si zvolili OsmAnd. Abyste mohli využívat všech možností aplikace, potřebujete soubory s mapami a hlasem, které si můžete stáhnout (Nastavení → Spravovat mapové soubory) nebo připravit sami. Poté budete moci hledat podle adres, hledat body zájmu (POI) a spojení veřejnou dopravou. Hledám signál… Hledat poblíž poslední polohy Hledat poblíž @@ -736,7 +735,7 @@ Konec Mapa Nastavení - Oblíbené + Moje místa Hledat Hledat Zvolit POI @@ -827,7 +826,7 @@ Offline navigace v OsmAnd je dočasně nedostupná. Levostranný provoz Zvolte pokud jste v zemi, kde se jezdí vlevo - Klikněte zde pro stažení nebo aktualizaci offline dat.\nKlikněte na položku pro zobrazení více detailů, dlouze stiskněte pro deaktivaci nebo smazání.\nMnožství offline dat v zařízení (%1$s volného místa): + Klikněte zde pro stažení nebo aktualizaci offline map.\nKlikněte na položku pro zobrazení více detailů, dlouze stiskněte pro deaktivaci nebo smazání.\nMnožství offline dat v zařízení (%1$s volného místa): Startovní bod navigace ještě není zvolen Chcete přerušit stahování souboru? Pro správnou funkci aplikace je třeba základní mapa. Proto byla automaticky vybrána ke stažení. @@ -863,7 +862,7 @@ Všeobecná nastavení Jméno Kategorie - Správce offline dat + Správce mapových souborů SSS.SSSSS SSS MM.MMMMM SSS MM ss.sssss @@ -1103,7 +1102,7 @@ Modul zvukové/video poznámky - Tento modul umožňuje stáhnout mapy vrstevnic (Stáhnout mapy -> Menu -> Ostatní mapy) pro určitou oblast a použít je s offline mapami. + Tento modul umožňuje stáhnout mapy vrstevnic (Nastavení → Správce mapových souborů → Vyberte požadovaný typ map). Modul vrstevnice Vrstevnice GPS pozice pro záznam zvukové poznámky ještě není známa. Pokud chcete použít specifickou lokaci použijte \"Možnosti bodu\" @@ -1571,7 +1570,7 @@ s často kladenými otázkami. Uložit Sdílet Oblíbené sdílené přes OsmAnd - Neplatný formát : %s + Neplatný formát: %s Sledovat Přihlásit se Aby bylo možné vytvořit skupiny musíte být registrovaným uživatelem OsMo. @@ -1626,4 +1625,5 @@ s často kladenými otázkami. Uložit jako skupinu oblíbených Vybrat body na trase Textové popisky - + Online OSM mapová klasifikace s obrázky + From 5cada5f2889351fdf8a2afeff1654d1f5d8fd4af Mon Sep 17 00:00:00 2001 From: Viktar Palstsiuk Date: Thu, 12 Jun 2014 10:02:09 +0200 Subject: [PATCH 36/40] Translated using Weblate. --- plugins/Osmand-ParkingPlugin/res/values-be/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/Osmand-ParkingPlugin/res/values-be/strings.xml b/plugins/Osmand-ParkingPlugin/res/values-be/strings.xml index 9c5ad89af1..ba9e431786 100644 --- a/plugins/Osmand-ParkingPlugin/res/values-be/strings.xml +++ b/plugins/Osmand-ParkingPlugin/res/values-be/strings.xml @@ -1,3 +1,4 @@ - - +Так + Не + From 7ff2e49a017c124164956ce024888808149281a7 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Thu, 12 Jun 2014 10:18:12 +0200 Subject: [PATCH 37/40] Fix osmo settings --- OsmAnd/src/net/osmand/plus/osmo/SettingsOsMoActivity.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/osmo/SettingsOsMoActivity.java b/OsmAnd/src/net/osmand/plus/osmo/SettingsOsMoActivity.java index 2eb1c676da..7eb2f3938a 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/SettingsOsMoActivity.java +++ b/OsmAnd/src/net/osmand/plus/osmo/SettingsOsMoActivity.java @@ -57,9 +57,9 @@ public class SettingsOsMoActivity extends SettingsBaseActivity { MINUTES, 1000, R.string.osmo_track_interval, R.string.osmo_track_interval_descr)); CheckBoxPreference showGroupNotifiations = createCheckBoxPreference(settings.OSMO_SHOW_GROUP_NOTIFICATIONS); - sendLocationsref.setTitle(R.string.osmo_show_group_notifications); - sendLocationsref.setSummary(R.string.osmo_show_group_notifications_descr); - grp.addPreference(sendLocationsref); + showGroupNotifiations.setTitle(R.string.osmo_show_group_notifications); + showGroupNotifiations.setSummary(R.string.osmo_show_group_notifications_descr); + grp.addPreference(showGroupNotifiations); if (OsmandPlugin.isDevelopment()) { debugPref = new Preference(this); From db76ecd3557857329b8d9765479568dc96070149 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Thu, 12 Jun 2014 11:52:27 +0200 Subject: [PATCH 38/40] Translated using Weblate. --- OsmAnd/res/values-da/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index e7c94bb1da..0311c9f1a5 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -1879,9 +1879,9 @@ Afghanistan, Albanien, Algeriet, Andorra, Angola, Anguilla, Antigua og Barbuda, Gennemsnitshastighed: %1$s Maks hastighed: %1$s Gennemsnitshøjde: %1$s - Højdeforskel: %1$s - Højdestigninger: %1$s - Periode: %1$s + Højdeinterval: %1$s + Op/ned: %1$s + Tidsrum: %1$s Tid i bevægelse: %1$s Segment %1$s punkter @@ -1890,7 +1890,7 @@ Afghanistan, Albanien, Algeriet, Andorra, Angola, Anguilla, Antigua og Barbuda, %1$s \nRutepunkter %2$s %1$s\nPunkter %1$s\nSpor %2$s - Aktuel optager spor + Aktuelt optagelsesspor Underspor: %1$s Aktuel tid Rutepunkt From 8d88dd6d4404d8f83619d0ba28de0ed52c385ed0 Mon Sep 17 00:00:00 2001 From: Leif Larsson Date: Thu, 12 Jun 2014 11:45:21 +0200 Subject: [PATCH 39/40] Translated using Weblate. --- OsmAnd/res/values-sv/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-sv/strings.xml b/OsmAnd/res/values-sv/strings.xml index 1b152664c5..02b3d54b3f 100644 --- a/OsmAnd/res/values-sv/strings.xml +++ b/OsmAnd/res/values-sv/strings.xml @@ -1583,7 +1583,7 @@ Aktuella data på enheten (%1$s ledigt): %1$s \nPunkter %1$s \nSpår %2$s Aktuellt inspelningsspår - Spara som favoritgrupp + Spara som grupp med favoriter Välj waypoints Textetiketter From b9c2ac610ac2b6df700f1697ed0866b8ec3f106f Mon Sep 17 00:00:00 2001 From: ezjerry liao Date: Thu, 12 Jun 2014 11:26:55 +0200 Subject: [PATCH 40/40] Translated using Weblate. --- OsmAnd/res/values-zh-rTW/strings.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index b0fb9c156c..1565a52214 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -1875,4 +1875,7 @@ OsmAnd 是開放原始碼,而且正在積極的開發。應用程式從報告 海拔高度範圍:%1$s 中途點 中途點:%1$s - + 另存為我的最愛群組 + 選擇中途點 + 文字標籤 +