From 6664733139c958fc306b1715afb814ae246ee8a8 Mon Sep 17 00:00:00 2001 From: PavelRatushny Date: Tue, 21 Nov 2017 11:35:28 +0200 Subject: [PATCH 01/17] Fix NPE --- OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java index b0ee0f0ae3..789275e3a1 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java @@ -315,7 +315,9 @@ public class OsmEditsFragment extends OsmAndListFragment implements SendPoiDialo private void enableSelectionMode(boolean selectionMode) { listAdapter.setSelectionMode(selectionMode); //noinspection ConstantConditions - getView().findViewById(R.id.check_box).setVisibility(selectionMode ? View.VISIBLE : View.GONE); + if (headerView != null) { + headerView.findViewById(R.id.check_box).setVisibility(selectionMode ? View.VISIBLE : View.GONE); + } ((FavoritesActivity) getActivity()).setToolbarVisibility(!selectionMode && AndroidUiHelper.isOrientationPortrait(getActivity())); ((FavoritesActivity) getActivity()).updateListViewFooter(footerView); } From b84652b003d5de5d18db69161d33797228740ef7 Mon Sep 17 00:00:00 2001 From: Ali Zangeneh Date: Tue, 21 Nov 2017 09:04:42 +0000 Subject: [PATCH 02/17] Translated using Weblate (Persian) Currently translated at 99.4% (2501 of 2515 strings) --- OsmAnd/res/values-fa/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml index 8827d60f70..0356bebd11 100644 --- a/OsmAnd/res/values-fa/strings.xml +++ b/OsmAnd/res/values-fa/strings.xml @@ -2787,7 +2787,7 @@ \nراهبر دیداری و شنیداری، مشاهدهٔ مکان‌های محبوب (POIها یا Points of interest)، ایجاد و مدیریت ردهای GPX، استفاده از تصویرسازی منحنی‌های تراز و اطلاعات ارتفاع (با استفاده از افزونه)، انتخاب حالت‌های پیاده، دوچرخه، خودرو، امکان ویرایش مکان‌ها و... چیزهایی هستند که تجربهٔ مؤثر و لذت‌بخشی در کار با نقشه را برایتان به ارمغان می‌آورند. راهبری با GPS • امکان انتخاب بین حالت آنلاین و آفلاین دارید؛ در حالت آفلاین هزینهٔ دیگری بابت اینترنت نمی‌پردازید و در حالت آنلاین عملکرد سریع‌تری را تجربه می‌کنید • راهنمای گام‌به‌گام صوتی که در پیمودن مسیر راهنمایی‌تان می‌کند (با پیام‌های صوتی انسانی و ماشینی) • اگر از مسیر منحرف شوید، مسیر جدیدی برایتان پیدا می‌کند • راهنمای خطوط عبوری، نام خیابان‌ها و زمان تخمینی رسیدن را دریافت می‌کنید که در طول مسیر راهنمای شماست • برای داشتن سفری ایمن‌تر، حالات شب/روز به‌صورت خودکار انتخاب می‌شود • اعلام محدودیت‌های سرعت را فعال کنید تا در صورت تجاوز از سرعت مجاز به شما هشدار دهد • بزرگ‌نمایی نقشه متناسب با سرعتتان تنظیم می‌شود • با استفاده از نشانی، نوع مکان (مثلاً پارکینگ، رستوران، هتل، پمپ گاز، موزه) یا مختصات جغرافیایی به جست‌وجو بپردازید • نقاط بین‌راهی مسیرتان را مشخص کنید • رد خودتان را ثبت کنید یا یک رد GPX را بارگیری و آن را دنبال کنید مسافت اصلاح‌شده - جست‌وجوی موروثی + جستجو دنباله نمایش جست‌وجوی موروثی جست‌وجوی موروثی را به منو اضافه می‌کند. نقشه • نقاط محبوب (POI یا Points of interest) اطرافتان را نشان می‌دهد • نقشه را در راستای حرکتتان (یا قطب‌نما) تنظیم می‌کند • موقعیتتان یا جایی را که جست‌وجو کرده‌اید، نشانتان می‌دهد • موقعیتتان را با دوستانتان به‌اشتراک بگذارید تا شما را پیدا کنند • جاهایی را که دوست دارید در قسمت نقاط برگزیده ذخیره کنید • شیوهٔ نمایش نام‌های روی نقشه را انتخاب کنید: انگلیسی، محلی یا نویسه‌گردانی‌شده • نمایش نقشه‌های تخصصی آنلاین، تصاویر ماهواره‌ای (بینگ) و رولایه‌های مختلف مانند مسیرهای گردشگردی یا راهبری GPX با امکان تنظیم شفافیت From c05e5395b38dbd967e0705577ee6c860854e0944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ja=C5=ADhien?= Date: Tue, 21 Nov 2017 09:15:12 +0000 Subject: [PATCH 03/17] Translated using Weblate (Belarusian) Currently translated at 99.7% (2509 of 2515 strings) --- OsmAnd/res/values-be/strings.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index 85416e8a2b..f160abc7e4 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -2971,4 +2971,11 @@ Налева Больш Пошук слядоў з шляхавымі кропкамі + Стварыць або зьмяніць OSM аб’екты + Выдалены + Адрэдагаваны + Маркер %s актываваны. + Нататкі па даце + Па даце + Па тыпу From 33b1c8b8ecee25ab7bf0fa632def20834a0aca77 Mon Sep 17 00:00:00 2001 From: josep constanti Date: Tue, 21 Nov 2017 09:14:17 +0000 Subject: [PATCH 04/17] Translated using Weblate (Catalan) Currently translated at 99.5% (2504 of 2515 strings) --- OsmAnd/res/values-ca/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index 8e3b933da1..3ff78b63da 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -2724,4 +2724,6 @@ Abasta l\'àrea: %1$s x %2$s Trieu quants indicadors de direcció es mostren. Més Recerca de traces amb fites + Crea o modifica objectes OSM + Crea o modifica PDIs OSM, inicia o comenta Notes OSM i aporta traces GPX enregistrades. From 6c90b015283d0ec1c4b2293cfd9f5f51e511d827 Mon Sep 17 00:00:00 2001 From: elPresidento Date: Tue, 21 Nov 2017 10:15:33 +0000 Subject: [PATCH 05/17] Translated using Weblate (Czech) Currently translated at 98.8% (2485 of 2515 strings) --- OsmAnd/res/values-cs/strings.xml | 437 +++++++++++++++++-------------- 1 file changed, 235 insertions(+), 202 deletions(-) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index 576340b0e2..7f6de3b1e5 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -14,7 +14,7 @@ Zpět na zobrazení pozice Nápověda Režim usnadnění - Aktivuje funkce usnadnění + Aktivuje funkce usnadnění. Zapnuto Vypnuto Podle systémového nastavení @@ -54,18 +54,18 @@ Podle stran (8 sektorů) Podle hodin (12 sektorů) Styl interpretace směrů - Vyberte způsob vyjádření relativního směru pohybu + Vyberte způsob vyjádření relativního směru pohybu. Spustit automatické ohlašování Zastavit automatické ohlašování Jsem zde - Měnit zvětšení vodorovnými pohyby trackballu + Měnit zvětšení vodorovnými pohyby trackballu. Ovládat zvětšení pomocí trackballu - Konfigurace usnadnění pro uživatele s omezením zraku + Konfigurace usnadnění pro uživatele s omezením zraku. Usnadnění Fluorescentní barvy - Použít fluorescentní barvy pro zobrazení cest a tras + Použít fluorescentní barvy pro zobrazení cest a tras. Off-line editace - Vždy používat off-line editaci + Vždy používat off-line editaci. Změny POI bodů v aplikaci nemají vliv na zobrazení stažených map, změny se ukládají do lokálního souboru. Odesílám … {0} POI/Poznámek bylo odesláno @@ -74,16 +74,16 @@ Smazat změnu Off-line editace OSM: Lokálně uložené POI body/poznámky Openstreetmap - Zobrazit a spravovat lokální POI body/poznámkyOpenstreetmap uložené v databázi - Zadejte interval nahrávání pozice na server + Zobrazit a spravovat lokální POI body/poznámkyOpenstreetmap uložené v databázi. + Zadejte interval nahrávání pozice na server. Interval přímého přenosu - Zadejte webovou adresu serveru pro přímý přenos pozice. Parametry: lat={0}, lon={1}, timestamp={2}, hdop={3}, altitude={4}, speed={5}, bearing={6} + Zadejte webovou adresu serveru pro přímý přenos pozice. Parametry: lat={0}, lon={1}, timestamp={2}, hdop={3}, altitude={4}, speed={5}, bearing={6}. Server pro přímý přenos Ukládat trasu pomocí GPX widgetu nebo s nastavením \'Nahrávat výlet\'. Zobrazit aktuální trasu - Tato bezplatná verze OsmAnd je omezena na %1$s downloady a nepodporuje off-line data z Wikipedie. + Tato bezplatná verze OsmAnd je omezena na %1$s stáhnutí (přidání nebo aktualizace map) a nepodporuje off-line data z Wikipedie. Bezplatná verze - Zobrazit popis POI + Zobrazit popis POI. Severní Amerika Severní Amerika - Spojené státy Střední Amerika @@ -106,18 +106,18 @@ Uživatelský profil Vyberte uživatelský profil. V každém profilu je možno upravit vzhled mapy a způsob navigace. Navigace - Určit možnosti navigace + Určit možnosti navigace. Obecná nastavení Spravovat mapové soubory - Stáhnout a spravovat off-line mapy uložené ve vašem zařízení + Stáhnout a spravovat off-line mapy uložené ve vašem zařízení. Obecné - Nastavení displeje, jazyka, zvuku a dalších parametrů - Jméno uživatele - Vaše uživatelské jméno na openstreetmap.org + Nastavení displeje, jazyka, zvuku a dalších parametrů. + Vaše OSM uživatelské jméno + Vaše uživatelské jméno na openstreetmap.org. Heslo Služba na pozadí - Umožní běh aplikace při vypnutém displeji + OsmAnd poběží na pozadí i při vypnuté obrazovce. Nedostatek místa pro stažení %1$s MB dat (volné: %2$s). Stáhnout {0} soubor(ů)? V úložišti je zapotřebí {1} MB. @@ -126,7 +126,7 @@ Android native library není podporovaná na tomto zařízení. Inicializuji Android native library… Automatické centrování - Zadejte interval pro automatický návrat mapy na vaši pozici + Zadejte interval pro automatický návrat mapy na vaši pozici. Automatické sledování pozice Zapnout automatické sledování pozice pouze v režimu navigace. @@ -173,7 +173,7 @@ %1$d z %2$d položek byla úspěšně nahrána. Přispět do OSM Více mapových detailů - Zobrazit některé detaily vektorové mapy (silnice, atd.) již při menším zvětšení + Zobrazit některé detaily vektorové mapy (silnice, atd.) již při menším zvětšení. Oblíbené body úspěšně smazány. Chcete smazat %1$d oblíbených a %2$d skupin oblíbených. Opravdu? Doma @@ -256,7 +256,7 @@ Vyberte jeden z balíčků OsmAnd k nainstalování Speciální aktivita pro vývojovou verzi Nové hledání - Zvolte velikost písma ve jménech na mapě + Zvolte velikost písma ve jménech na mapě. Velikost písma Rozbaluji nová data… On-line navigaci nelze použít, protože připojení k Internetu není k dispozici. @@ -271,38 +271,38 @@ \t \t Pro zobrazení zvolte Menu → Nastavení mapy → Zdroj map… → Vektorové off-line mapy. Kanál pro navádění - Zvolte kanál poskytující hlasové navádění + Zvolte kanál poskytující hlasové navádění. Zvuk telefonního hovoru (také přeruší Bluetooth autorádio) Upozornění Hudba Data pro mapovou vrstvu %1$s nelze stáhnout, zkuste je prosím znovu nainstalovat. - Upravit průhlednost překryvné mapy + Upravit průhlednost překryvné mapy. Průhlednost překryvu - Upravit průhlednost základní mapy + Upravit průhlednost základní mapy. Průhlednost základní mapy Upravit průhlednost Podkres mapy… Podkresová mapa - Vyberte podkladovou mapu + Vyberte podkladovou mapu. Překryvná mapa… Žádná Překryvná mapa - Vyberte překryvnou mapu - Mapa je již nainstalovaná, aktualizuji nastavení - Vyberte mapy k instalaci nebo aktualizaci - Pro tuto akci je potřebné internetové připojení, ale není dostupné + Vyberte překryvnou mapu. + Mapa je již nainstalovaná, aktualizuji nastavení. + Vyberte mapy k instalaci nebo aktualizaci. + Pro tuto akci je potřebné internetové připojení, ale není dostupné. Instalovat další… - Zobrazovat vektorové mapy od minimálního zvětšení + Zobrazovat vektorové mapy od minimálního zvětšení. Zvětšení vektorové mapy - Při off-line hledání došlo k chybě - Nemohu rozpoznat geo intent:\'%s\' + Při off-line hledání došlo k chybě. + Nemohu rozpoznat geo intent:\'%s\'. Hledat umístění ve stažených mapách Podle systému - Volba jazyka (po změně je nutné restartovat OsmAnd) + Volba jazyka (po změně je nutné restartovat OsmAnd). Jazyk Další Předchozí - Zvolte jednotku vzdálenosti + Zvolte jednotku vzdálenosti. Jednotky vzdálenosti Míle/stopy Míle/yardy @@ -329,13 +329,13 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Aplikace pro zobrazení stavu GPS není nainstalovaná. Hledat v Obchodě? Hlasové navádění není dostupné, jděte prosím do \'Nastavení\' → \'Obecné\' → \'Hlasové pokyny\' a vyberte, nebo stáhněte balíček s hlasovými pokyny. Žádná hlasová data nejsou zvolena - Zaškrtněte pro zobrazení statistik o vykreslování mapy + Zaškrtněte pro zobrazení statistik o vykreslování mapy. Sledovat vykreslování Den Noc Východ/západ slunce Senzor osvětlení - Vyberte pravidlo pro přepínání denního a nočního režimu + Vyberte pravidlo pro přepínání denního/nočního režimu. Denní/noční režim Stáhnout {0} souborů ({1} MB)? vybráno {0} položek @@ -343,27 +343,27 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Vybrat vše Načíst znovu Nejrychlejší trasa - Zapněte pro výpočet nejrychlejší trasy nebo vypněte pro ekonomickou trasu + Zapněte pro výpočet nejrychlejší trasy nebo vypněte pro ekonomickou trasu. Pro zvětšení {0} je třeba stáhnout {1} mapových dlaždic, celkem {2} MB Stáhnout mapu Vyberte maximální zvětšení stahovaných map Tuto mapu nelze stáhnout Průběžné vykreslování - Při zaškrtnuté volbě se mapa bude vykreslovat postupně + Při zaškrtnuté volbě se mapa bude vykreslovat postupně. Nastala chyba při vykreslování vybrané oblasti Nedostatek paměti pro zobrazení vybrané oblasti Možnosti bodu… Vykreslovač byl úspěšně načten Nastala výjimka: vykreslovač nebyl načten Vektorový vykreslovač - Vybrat styl vektorového vykreslování + Vyberte styl vektorového vykreslování. Zobrazit webovou stránku bodu Zobrazit telefonní číslo bodu webová stránka telefon vyhledat Vysoké rozlišení - Použít mapu s vysokým rozlišením pro jemné displeje + Použít mapu s vysokým rozlišením pro jemné displeje. Pozice ještě není známa Hledat veřejnou dopravu Hledání dopravy (žádný cíl): @@ -383,7 +383,7 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Podle kompasu Ve směru pohybu Neotáčet (sever nahoře) - Zvolte směr natočení mapy + Zvolte směr natočení mapy. Natočení mapy Ukázat cestu Oblíbená místa úspěšně importována @@ -403,13 +403,13 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Oblíbené OSM Poznámky (on-line) - POI… + Vrstva POI… Zdroj map… Mapová data Hledat POI - Použít trackball k posouvání mapy + Použít trackball k posouvání mapy. Použít trackball - Vyberte čekací dobu pro určení polohy + Vyberte čekací dobu pro určení polohy. Čekací doba Kde jsem? Navigační služba OsmAnd @@ -417,11 +417,11 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. GPS sekund min. - Vyberte interval pro zaměřování polohy pro službu na pozadí + Vyberte interval pro zaměřování polohy pro službu na pozadí. Interval zaměřování GPS - Vybrat poskytovatele polohy pro službu na pozadí + Vyberte poskytovatele polohy pro službu na pozadí. Poskytovatel polohy - Spustí OsmAnd na pozadí, aby bylo možno zaznamenávat pozici i při vypnuté obrazovce + Spustí OsmAnd na pozadí, aby bylo možno zaznamenávat pozici i při vypnuté obrazovce. Sledování polohy na pozadí Služba pro navigaci na pozadí vyžaduje zapnutý zdroj polohy. Skrýt filtr @@ -429,7 +429,7 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Filtr Zvuk je zapnut Zvuk je vypnut - Vybrat hlasová data pro navigaci + Vybrat hlasová data pro navigaci. Hlasová data Inicializuji hlasová data… Nepodporovaná verze hlasových dat @@ -456,7 +456,7 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Na výšku Na šířku Orientace obrazovky - Orientace obrazovky: na výšku, na šířku, podle zařízení + Orientace obrazovky: na výšku, na šířku, podle zařízení. Upravování tohoto formátu otvírací doby není podporováno Přidat nové pravidlo Cesty @@ -472,7 +472,7 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Vzdálenost trasy Doprava OK - Zobrazit v mapě zastávky veřejné dopravy + Zobrazit v mapě zastávky veřejné dopravy. Zobrazit zastávky Navigační aplikace OsmAnd Data POI byla úspěšně aktualizována ({0} načteno) @@ -499,9 +499,9 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Hledání off-line Hledat on-line Maximální zvětšení - Jaké nejvyšší zvětšení mapy stahovat + Zadejte nejvyšší úroveň přiblížení mapy, kdy budou stahované dlaždice. Celková vzdálenost %1$s, doba cesty %2$d h %3$d min. - Vyberte navigační službu + Vyberte online nebo offline navigační službu. Navigace Úložný datový adresář na SD kartě není dostupný! Stáhnout {0} - {1} ? @@ -546,27 +546,27 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Aplikace při minulém běhu spadla. Soubor s hlášením je v {0}. Prosím ohlaste problém vývojářům a přiložte hlášení o chybě. Ukládám GPX trasy na SD… Hotovo - Použít internet k výpočtu trasy + Použít Internet k výpočtu trasy. Použít on-line navigaci - Nastavení OSM: přihlašovací údaje - Volba jazyka, stažení a aktualizace dat + Určete nastavení OpenStreetMap.org (OSM) potřebné pro přispívání. + Volba jazyka, stažení a aktualizace dat. Data Editace OSM - Automaticky měnit zvětšení podle rychlosti pohybu + Automaticky měnit zvětšení podle rychlosti pohybu. Automatické zvětšení mapy Další volby Nastavení - Uloží aktuální trasu na SD kartu + Uloží aktuální trasu na SD kartu. Uložit aktuální trasu GPX - Vyberte interval pro ukládání trasy během navigace + Vyberte interval pro ukládání trasy během navigace. Interval ukládání trasy během navigace - Během navigace budou GPX trasy automaticky ukládány do adresáře s trasami + Během navigace budou GPX trasy automaticky ukládány do adresáře s trasami. Automaticky zaznamenat trasu během navigace Aktualizovat mapu Načíst znovu dlaždici Cíl Přidat mezi oblíbené - Přepíná mezi místními a anglickými názvy + Přepíná mezi místními a anglickými názvy. Používat anglická jména v mapách Nastavení aplikace Hledat adresu @@ -575,11 +575,11 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Zvolte město nebo PSČ Zvolte zemi Zorné pole - Zapnout 3D pohled na mapu + Zapnout 3D pohled na mapu. 3D Mapa - Zobrazit POI na mapě (použít poslední vybraný filtr) - Zobrazit POI - Zvolte zdroj on-line dlaždic nebo dlaždic v mezipaměti + Zobrazit naposledy vybrané POI jako vrstvu na mapě. + Zobrazit vrstvu POI + Zvolte zdroj on-line dlaždic nebo dlaždic v mezipaměti. Zdroj rastrových map Zdroj map Používat internet @@ -672,15 +672,15 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Filtr {0} byl vytvořen Off-line navigace OsmAnd je dočasně nedostupná. Levostranný provoz - Zvolte pokud jste v zemi, kde se jezdí vlevo + Zvolte pokud jste v zemi, kde se jezdí vlevo. 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í. Pro výběr různých zdrojů map povolte modul „On-line mapy“ On-line mapy a dlaždice - Používat on-line mapy (ukládat dlaždice do mezipaměti na SD kartě) + Používat on-line mapy (ukládat dlaždice do mezipaměti na SD kartě). On-line mapy - Nastavení rastrových překryvných nebo podkresových map + Nastavení rastrových překryvných nebo podkresových map. S tímto modulem můžete použít mnoho druhů on-line map (tzv. dlaždicové nebo rastrové mapy), od předdefinovaných OpenStreetMap dlaždic (jako Mapnik) až po satelitní snímky a speciální vrstvy jako mapy počasí, klimatické mapy, geologické mapy, stínované vrstvy, atd. \n \nVšechny tyto mapy mohou být použity jako hlavní (základní) mapa na obrazovce OsmAnd nebo jako překryvná popř. podkladová mapa k jiné základní mapě (např. standardní OsmAnd off-line mapě). Pro zlepšení viditelnosti podkladových map je možné vypnout některé objekty z vektorových map OsmAnd, přes menu \'Nastavení mapy\'. @@ -690,7 +690,7 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Tento modul zobrazí nastavení pro speciální funkce ulehčení přístupu přímo v OsmAnd. Například je možné měnit rychlost TTS hlasu, použít trackball na přibližování nebo například použít hlasové předčítání pro oznamování polohy. Tento modul zobrazí nastavení vývojových a ladících funkcí, jako jsou simulace navigace, informace o rychlosti vykreslování nebo hlasová oznámení. Tato nastavení jsou určené pro vývojáře a nejsou potřebné pro běžné použití. Správce modulů - Moduly umožňují zapnout pokročilé nastavení a přídavné funkce + Moduly umožňují zapnout pokročilé nastavení a přídavné funkce. Moduly Pomocí tohoto modulu může být OsmAnd použit na přispívání do OSM, například vytvářením nebo úpravami POI, vytvářením nebo komentováním OSM poznámek a přispíváním zaznamenanými GPX soubory. OSM je celosvětový komunitní projekt mapování. Pro více detailů se podívejte na https://openstreetmap.org. Aktivní účast je vítaná a příspěvky mohou být vytvářené přímo v OsmAnd, jestliže zadáte své osobní přihlašovací údaje do OSM. Akcelerace vykreslování pomocí \'Android native\' knihovny. Vektorové mapy se zpravidla vykreslují rychleji, pokud je tato možnost zaškrtnuta. Avšak na některých zařízeních tato funkce nemusí fungovat. @@ -701,7 +701,7 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Všeobecná nastavení Jméno Kategorie - Správce mapových souborů + Správce mapových souborů. DDD.DDDDD DDD MM.MMMMM DDD MM SS.SSSSS @@ -712,13 +712,13 @@ Navigační služba je dočasně přepnuta na on-line CloudMade. Souřadnice Hledat veřejnou dopravu Hledat oblíbené místo - Zobrazit všechny typy půdy průhledně + Zobrazit všechny typy půdy průhledně. Polygony Režim vykreslování Optimalizace mapy pro příslušný uživatelský profil Minimální zvětšení, od kterého se budou zobrazovat vrstevnice (vyžaduje soubor \'SRTM\'): Zobrazit vrstevnice - Zvýšit počet detailů vyobrazených v mapě + Zvýšit počet detailů vyobrazených v mapě. Více mapových detailů hned Kruhový objezd: vyjeďte %1$d. výjezdem a pokračujte @@ -762,7 +762,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).hodin minut Auto je zaparkováno v - Použít kompas při navigaci, když nelze zjistit směr + Použít kompas při navigaci, když nelze zjistit směr. Použít kompas Trasa bude přepočítána, jakmile bude zjištěna aktuální pozice Předchozí trasa nebyla dokončena. Chcete pokračovat? (%1$s sekund) @@ -796,9 +796,9 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Vyhnout se nezpevněným cestám Vyhnout se trajektům Vyhnout se… - Vyhnout se trajektům, placeným a nezpevněným cestám + Vyhnout se trajektům, placeným a nezpevněným cestám. Zobrazit upozornění… - Zobrazit omezení rychlosti, rychlostní radary, retardéry a řazení do pruhů + Zobrazit omezení rychlosti, rychlostní radary, retardéry a řazení do pruhů. Měřítko Průhledné nástroje E-mail @@ -817,7 +817,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Vektorový vykreslovač Vyhnout se dálnicím - Zachytí kurzor na nejbližší silnici/cestu během navigace + Zachytí kurzor na nejbližší silnici/cestu během navigace. Vlastnosti vykreslování Parkoviště Veřejná doprava @@ -896,7 +896,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Rychlostní omezení Hranice oblastí - Potlačit zobrazení správních hranic ( administrativní úrovně 5-9) + Potlačit zobrazení správních hranic ( administrativní úrovně 5-9). GPX Vrstevnice Ostatní mapy @@ -922,13 +922,13 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).části Nahrát video Nahrát zvuk - Zvolte výchozí funkci + Zvolte výchozí funkci. Výchozí funkce - Zvolte formát videozáznamu + Zvolte formát videozáznamu. Formát videozáznamu - Použít systémový záznamník videa + Použít systémový záznamník videa. Použít externí záznamník - Nastavit možnosti zvuku a videa + Nastavit možnosti zvuku a videa. Nastavení zvuku a videa Při nahrávání došlo k chybě Kamera není dostupná @@ -957,15 +957,15 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Zvuková a video data Umožní výpočet přesné cesty pro navigaci. Omezené vzdáleností a pomalé. Přesná navigace (alfa) - Prosím sponzorujte vývoj nových funkcí v aplikaci - Použít externí aplikaci pro fotografování + Prosím sponzorujte vývoj nových funkcí v aplikaci. + Použít systémovou aplikaci pro fotografie. Externí foto aplikace Upřednostňovat dálnice Upřednostňovat… žádná OpenMaps EU Stínování kopců - Upřednostňovat dálnice + Upřednostňovat dálnice. Vybrat při použití Čas příjezdu Stínování @@ -976,7 +976,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).zvoleno nezvoleno Vzhled aplikace - Vybrat téma aplikace + Vybrat téma aplikace. Název ulice číslo domu Momentálně nejste připojeni přes WiFi. Chcete pokračovat ve stahování se současným internetovým připojením? @@ -988,14 +988,14 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Vybrat oblíbené Editace OSM Další akce - Konfigurace záznamů vašich cest + Konfigurace záznamů vašich cest. Instalovat plnou verzi Zastavit navigaci - Sníží šum v hodnotách z kompasu, ale zpomalí změny směru + Sníží šum v hodnotách z kompasu, ale zpomalí změny směru. Použít Kalmanův filtr Používat magnetický senzor Čekejte prosím na dokončení úlohy - K určení směru použít magnetický senzor místo senzoru natočení + K určení směru použít magnetický senzor místo senzoru natočení. Zrušit trasu Smazat cíl Vrstevnice @@ -1042,7 +1042,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Dopravní varování Heslo OSM (volitelné) Typ ostření fotoaparátu - Zvolte způsob ostření vestavěného fotoaparátu + Zvolte způsob ostření vestavěného fotoaparátu. Automatické ostření Fix-focus Fix-focus @@ -1050,13 +1050,13 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Makro Kamera ostří souvisle Přehrát zvuk závěrky - Zvolte zda při vyfotografování snímku má být přehrán zvuk závěrky + Zvolte zda při vyfotografování snímku má být přehrán zvuk závěrky. Mezicíle jsou již nastaveny. Navigovat sem Navigovat odsud GPX body Hlásit… - Konfigurace hlášení názvů ulic, dopravních upozornění, radarů, rychlostních omezení + Konfigurace hlášení názvů ulic, dopravních upozornění, radarů, rychlostních omezení. Názvy ulic (TTS) Japonsko Spojené státy @@ -1075,7 +1075,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Ke stažení: %1$s Vytvořit/Upravit… Doba platnosti (min) - Vyberte dopravní oblast: USA, Evropa, Británie, Asie a další + Vyberte dopravní oblast: USA, Evropa, Británie, Asie a další. Dopravní oblast Doba platnosti (minut): %1$s Snímků za sekundu (ladění) @@ -1103,7 +1103,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Loď Letadlo Vykreslování mapy - Vyberte v aplikaci dostupné profily + Vyberte v aplikaci dostupné profily. Profily aplikace Mořská značka Přidat jako další cíl @@ -1115,19 +1115,19 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Předvolby trasy Informace o trase Upřednostňovat dálnice - Upřednostňovat dálnice + Upřednostňovat dálnice. Vyhnout se placeným silnicím - Vyhnout se placeným silnicím + Vyhnout se placeným silnicím. Vyhnout se nezpevněným cestám - Vyhnout se nezpevněným cestám + Vyhnout se nezpevněným cestám. Vyhnout se trajektům - Vyhnout se trajektům + Vyhnout se trajektům. Vyhnout se dálnicím - Vyhnout se dálnicím + Vyhnout se dálnicím. Hmotnostní limit - Zadejte hmotnost vozidla, která musí být povolená na cestách + Zadejte hmotnost vozidla, která musí být povolená na cestách. Od verze Androidu 4.4 (KitKat) není možné stahovat a aktualizovat mapy v předchozím úložišti (%s). Chcete ho změnit na vhodné nové úložiště a zkopírovat do něj všechny soubory?\n Poznámka 1: Původní soubory zůstanou nedotčeny a mohou být smazány ručně. \n Poznámka 2: V novém úložišti nebude možné sdílet soubory mezi OsmAnd a OsmAnd+. Kopírování souboru (%s) do nového umístění… @@ -1137,10 +1137,10 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Kamion Nastavení navigace Nastavení výpočtu trasy - Zadejte rychlost řeči TTS + Zadejte rychlost řeči TTS. Rychlost řeči Rychlý přepočet trasy selhal (%s), návrat k úplnému výpočtu. - Vypnout dvojfázovou navigaci pro profil auta + Vypnout dvojfázovou navigaci pro profil auta. Vypnout komplexní navigaci Vypočítat trasu bez připojení k Internetu Vypočítat OsmAnd trasu pro první a poslední úsek @@ -1201,7 +1201,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Zobrazit pozici vždy uprostřed OpenStreetMap monitorování OsMo - Konfigurovat sledování a nastavit osobní monitorovací kanál + Konfigurovat sledování a nastavit osobní monitorovací kanál. Informace ladění Restartovat OsMo relaci Zastavit OsMo relaci @@ -1231,7 +1231,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Relace URL k sledování zařízení (%1$s) Aby bylo možné připojit cílové zařízení %2$s, stiskněte link %3$s nebo určete ID sledovaného zařízení (%1$s) Interval logování - Vyberte časový interval odesílání polohy + Vyberte časový interval odesílání dat o poloze. dnů Připojit Vyprší za @@ -1254,24 +1254,24 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).sekund dozadu Připojená zařízení OsMo skupiny - Automaticky spustit cestu a odesílat polohu po spuštění aplikace + Automaticky spustit cestu a odesílat polohu po spuštění aplikace. Automaticky spustit cestu ID sledovaného zařízení - Stiskněte pro zobrazení ID sledovaného zařízení + Stiskněte pro zobrazení ID sledovaného zařízení. Token relace: %1$s Čekání na autorizaci… Odeslané polohy %1$d (v zásobníku %2$d) Vytvořená spojení: %1$s Problém s připojením OsMo: Jedinečné ID zařízení - Hlasové pokyny nesníží jen hlasitost, ale pozastaví hudbu + Hlasové pokyny nesníží jen hlasitost, ale pozastaví hudbu. Pozastavit hudbu Sdílet trasu jako GPX soubor Trasa sdílena pomocí OsmAnd Oznámení příjezdu Jak brzo oznamovat příjezd do cíle? Pouze manuálně (ťuknout na šipku) - Znovu opakovat navigační pokyny v pravidelných intervalech + Znovu opakovat navigační pokyny v pravidelných intervalech. Opakovat navigační pokyny Uložit data jako GPX soubor nebo importovat body do oblíbených? Sdílet @@ -1294,7 +1294,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Moje oblíbené Moje místa Zobrazovat upozornění skupin - Zobrazovat informační zprávu o připojení nebo odpojení uživatele ke skupině + Zobrazovat informační zprávu o připojení nebo odpojení uživatele ke skupině. Zrušit pohyblivý cíl Zarovnat na střed obrazovky Nastavit jako pohyblivý cíl @@ -1327,16 +1327,16 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB). Uložit jako skupinu oblíbených Vybrat cíle - Popisky bodů - On-line OSM klasifikace map s obrázky - Zobrazit tlačítka lupy během navigace + Překryvné popisky bodů + On-line OSM klasifikace map s obrázky. + Zobrazit tlačítka lupy během navigace. Zobrazit tlačítka lupy Třídit podle vzdálenosti Třídit podle jména Vybrat k zobrazení Selhání autentizace OsMo OsMo body %1$s stažené. - Připojit ke službě automaticky po spuštění aplikace + Připojit ke službě automaticky po spuštění aplikace. Automatické připojení OsMo služba OsMo trasa %1$s stažena. @@ -1365,7 +1365,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Zapnout GPS v režimu na pozadí Interval probouzení GPS Zastavit GPS běžící na pozadí? - Preferovaný jazyk pro nápisy na mapě (pokud není dostupný budou použité anglické nebo lokální názvy) + Preferovaný jazyk pro nápisy na mapě (pokud není dostupný budou použité anglické nebo lokální názvy). Preferovaný jazyk mapy Lokální názvy Pokud je zapnutý záznam GPX trasy, odesílat data trasování určené webové službě. @@ -1400,15 +1400,15 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Čínština (zjednodušená) Čínština (tradiční) Vysokohorská turistika - Vykreslovat cesty podle stupnice SAC + Vykreslovat cesty podle stupnice SAC. Turistické trasy a značky - Vykreslovat cesty podle OSMC značení + Vykreslovat cesty podle OSMC značení. Brzy Normální Později V posledních metrech Velikost fotografie - Vyberte velikost obrázku interního fotoaparátu + Vyberte velikost obrázku interního fotoaparátu. Více… Standardní Automobil @@ -1432,9 +1432,9 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Dopravní varování Blízké oblíbené body Blízké body zájmu POI - Záznam do GPX souboru může být zapnut nebo vypnut pomocí widgetu Záznam trasy na mapové obrazovce + Záznam do GPX souboru může být zapnut nebo vypnut pomocí widgetu Záznam trasy na mapové obrazovce. Vždy se zeptat - Vybrat interval ukládání pro globální záznam trasy (aktivovaný přes widget Záznam trasy na mapové obrazovce) + Vybrat interval ukládání pro globální záznam trasy (aktivovaný přes widget Záznam trasy na mapové obrazovce). Globální interval záznamu Rychlostní limit Hraniční kontrola @@ -1484,7 +1484,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Vyhnout se cestám… Skrýt Zapnout obrazovku - Zapnout obrazovku zařízení (pokud je vypnuta) když se blíží odbočka + Zapnout obrazovku zařízení (pokud je vypnuta) když se blíží odbočka. " OsmAnd (OSM Automated Navigation Directions - Automatizované navigační pokyny) je mapová a navigační aplikace s přístupem ke kvalitním celosvětovým údajům z OpenStreetMap (OSM). Všechny údaje map mohou být uloženy na paměťové kartě ve vašem zařízení pro použití bez přístupu k Internetu (off-line). Pomocí GPS ve vašem zařízení může OsmAnd nabídnout navigování vizuálními a hlasovými pokyny pro automobil, kolo a chodce. Všechny hlavní funkce pracují on-line i off-line (bez nutnosti přístupu k Internetu). @@ -1568,7 +1568,7 @@ Seznam obsažených zemí (prakticky celý svět!): Afghánistán, Albánie, Al Zavřít Všechny soubory jsou aktuální Použít OpenGL - Použít hardwarově akcelerované renderování pomocí OpenGL (nemusí fungovat na všech zařízeních) + Použít hardwarově akcelerované renderování pomocí OpenGL (nemusí fungovat na všech zařízeních). Žádná objížďka nenalezena Stahování není možné. Prosím zkontrolujte internetové připojení. Jazyk map @@ -1594,14 +1594,14 @@ Seznam obsažených zemí (prakticky celý svět!): Afghánistán, Albánie, Al Přechody pro chodce Americký Atlas cest Nepoužívat routovací pravidla v1.9 - Nepoužívat pravidla výpočtu trasy zavedené ve verzi 1.9 + Nepoužívat pravidla výpočtu trasy zavedené ve verzi 1.9. Přechody pro chodce GPS stav - Stáhnout vývojové verze + Stáhnout vývojové verze. Vývojové verze Pouliční osvětlení Proxy - Nastavit internetové proxy připojení + Zadejte Internet proxy. Soukromí Body Moje poloha @@ -1609,11 +1609,11 @@ Seznam obsažených zemí (prakticky celý svět!): Afghánistán, Albánie, Al Můžete vynutit náhradní trasu označením cest, kterým je nutné se vyhnout Záznam tras na vyžádání Povolit HTTP proxy - Nastavit HTTP proxy pro veškeré síťové požadavky + Nastavit HTTP proxy pro veškeré síťové požadavky. Host proxy - Nastavit hostname proxy (např. 127.0.0.1) + Nastavit hostname proxy (např. 127.0.0.1). Port proxy - Nastavit číslo portu proxy (např. 8118) + Nastavit číslo portu proxy (např. 8118). Parkovací místo ODSTRANIT ZNAČKU Zakázán @@ -1661,10 +1661,10 @@ Délka %2$s Video Foto Seznam - Často pokládané dotazy, nedávné změny a další + Často pokládané dotazy, nedávné změny a další. dnů novější Vydáno - Zadejte dobu setrvání na obrazovce plánování trasy + Zadejte dobu setrvání na obrazovce plánování trasy. Spustit navigaci krok za krokem za… Start Vytvořit akci @@ -1694,7 +1694,7 @@ Délka %2$s Pro správné zobrazení dopravních značek a předpisů, vyberte prosím svoji dopravní oblast: OsmAnd poskytuje celosvětové prohlížení map a celosvětovou off-line navigaci! V mnoha zemích (Německo, Francie, Itálie a dalších) je použití varování před rychlostními kamerami zakázané zákonem. OsmAnd nepřebírá žádnou zodpovědnost pokud porušíte zákon. Prosím označte Ano pouze v případě, pokud máte oprávnění používat tuto vlastnost. - Zobrazit popis + Zobrazit popis. Nepoužívat Adresa Místa @@ -1739,11 +1739,11 @@ Délka %2$s Kopírovat Popisná čísla domů - Nepřekračovat hranice do jiné země + Nepřekračovat hranice do jiné země. Výškové omezení - Zadejte výšku vozidla, jaká má být povolena na cestách + Zadejte výšku vozidla, jaká má být povolena na cestách. Inteligentní přepočítávání trasy - Pro dlouhé cesty přepočítat pouze počáteční úsek trasy + Pro dlouhé cesty přepočítat pouze počáteční úsek trasy. Odeslat polohu Odhlásit Importovat do OsmAnd @@ -1805,7 +1805,7 @@ Délka %2$s Přeskočit OsmAnd Moduly - GPX soubor s poznámkou umístění + GPX soubor s poznámkou umístění. Umístění Vyhnout se kyvadlovému vlaku Nepoužít kyvadlový vlak @@ -1868,7 +1868,7 @@ Délka %2$s Vrstevnice vypnuty Přidat nový Zvolte kategorii - Zvolte jednotku rychlosti + Zvolte jednotku rychlosti. Jednotka rychlosti nmi Námořní míle @@ -1886,8 +1886,8 @@ Délka %2$s Navigace Běh na pozadí Informace o oblíbeném bodu - Ukončit simulaci vaší polohy - Simulovat mou polohu pomocí zaznamenané GPX nebo vypočítané trasy + Ukončit simulaci vaší polohy. + Simulovat mou polohu pomocí zaznamenané GPX nebo vypočítané trasy. Přidat oblíbený bod %1$s stahování zbývá Cesty @@ -1909,22 +1909,22 @@ Délka %2$s %.1f MB Aktualizovat vše (%1$s MB) Použito volných stáhnutí - Zobrazuje počet využitých volných stáhnutí + Zobrazuje počet využitých volných stáhnutí. Simulovat první spuštění aplikace geo: Sdílet polohu Odeslat - Nastavit příznak označující první spuštění aplikace, ostatní nastavení ponechat nezměněná + Nastavit příznak označující první spuštění aplikace, ostatní nastavení ponechat nezměněná. Opravdu chcete stáhnout silniční mapu, když už máte standardní podrobnou mapu? Zvolte, kam chcete uložit mapové a ostatní datové soubory. - „Vypnout“ spouští přímo obrazovku s mapou + „Vypnout“ spouští přímo obrazovku s mapou. Základní mapa světa (pokrývající celý svět při malých detailech) chybí nebo je zastaralá. Prosím zvažte její stažení pro celkový přehled. QR kód Mapa stažena Mapa %1$s byla stažena, můžete ji začít využívat. Zobrazit mapu Zobrazit banner volné verze - I když používáte placenou verzi, můžete vidět banner volné verze + I když používáte placenou verzi, můžete vidět banner volné verze. Vložte název země Nová verze První kroky s OsmAnd @@ -1933,8 +1933,8 @@ Délka %2$s Další Moduly První použití - Jak stahovat mapy, provést základní nastavení - Nastavení navigace + Jak stahovat mapy, provést základní nastavení. + Nastavení navigace. Často kladené dotazy Často kladené otázky Prohlížení mapy @@ -1960,8 +1960,8 @@ Délka %2$s Toskičtina Číst více Opravdu chcete uložit bod POI bez uvedení typu? - Prosím zadejte správný typ POI, nebo zadání přeskočte - Tlačítko menu zobrazí domovskou obrazovku místo menu + Prosím zadejte správný typ POI, nebo zadání přeskočte. + Tlačítko menu zobrazí domovskou obrazovku místo menu. Přístup z mapy Zkopírováno do schránky • nové kontextově závislé rozhraní pro označení umístění na mapě a ostatních obrazovkách @@ -2013,7 +2013,7 @@ Délka %2$s Domovská obrazovka nebo menu Je zde nová možnost výběru ovládání aplikace přes flexibilní domovskou obrazovku nebo statické menu. Svůj výběr můžete kdykoliv změnit v nastavení domovské obrazovky. Vyhnout se schodům - Vyhnout se schodům + Vyhnout se schodům. Vyhnout se hraničním přechodům Nedaleko @@ -2021,11 +2021,11 @@ Délka %2$s Nejnižší kvalita Nejvyšší kvalita Kvalita video výstupu - Vybrat kvalitu video výstupu + Zvolte kvalitu videa. Formát audio výstupu - Vybrat formát audio výstupu + Zvolte formát audio výstupu. Bitrate zvuku - Vybrat bitrate zvuku + Zvolte bitrate zvuku. Adresa nezjištěna Vyhledávání adres Vzdálenost: @@ -2047,16 +2047,16 @@ Délka %2$s Nevybrané Rozdělení nahrávky Použít rozdělení nahrávání - Přepisovat staré záznamy, když použité místo přesáhne velikost úložiště + Přepisovat staré záznamy, když použité místo přesáhne velikost úložiště. Délka záznamu - Délka každého záznamu nebude větší než zadaný interval + Horní hranice délky nahraného záznamu. Velikost úložiště - Velikost prostoru, který může být zabráno nahranými záznamy + Velikost prostoru, který může být použit nahranými záznamy. Okamžité aktualizace Dostupné mapy Zvolte hlasové pokyny - Vyberte nebo stáhněte hlasové pokyny pro svůj jazyk - Vyberte cesty, kterým se chcete vyhnout + Vyberte nebo stáhněte hlasové pokyny pro svůj jazyk. + Vyberte cesty, kterým se chcete vyhnout. Zvuk Poslední aktualizace: %s Čas aktualizace @@ -2112,18 +2112,18 @@ Délka %2$s Pořadí OSM editorů Předplatné OsmAnd Live Předplatit - Potřebujeme jej, abychm vám mohli poskytovat informace o příspěvcích + Potřebné pro poskytnutí informací o příspěvcích. Veřejné jméno Nezobrazovat mé jméno v hlášeních Oblast podpory Měsíční cena - Měsíční platba + Měsíční platba. Aktivní Neaktivní Prosím zadejte platnou e-mailovou adresu Prosím zadejte veřejné jméno Děkujeme za registraci do okamžitých aktualizací! - Část vašeho příspěvku bude zaslána uživatelům OSM, kteří upravují mapu ve zvolené oblasti + Část vašeho příspěvku bude zaslána uživatelům OSM, kteří upravují mapu ve zvolené oblasti. Nastavení předplatného Prosím nejprve zakupte předplatné OsmAnd Live @@ -2142,7 +2142,7 @@ Pokud máte rádi OsmAnd a OSM a chcete je podpořit, toto je výborný způsob, Přidat do mapových značek Zvolit mapové značky Otočit pořadí - Aktivovat funkci mapových značek + Aktivovat funkci mapových značek. Chcete odebrat všechny aktivní značky? Chcete vymazat historii mapových značek? Aktivní značky @@ -2156,18 +2156,18 @@ Pokud máte rádi OsmAnd a OSM a chcete je podpořit, toto je výborný způsob, Magnetické směrování Relativní směrování Nepřepočítávat trasu při jejím odchýlení - Nepřepočítávat trasu automaticky, pokud se vzdálíte od naplánované cesty + Nepřepočítávat trasu automaticky, pokud se vzdálíte od naplánované cesty. Nepřepočítávat trasu při opačném směru - Nepřepočítávat trasu automaticky, když se pohybujete opačným směrem + Nepřepočítávat trasu automaticky, když se pohybujete opačným směrem. Chytré oznamování - Oznamovat, pouze když se změní směr k cíli + Oznamovat, pouze když se změní směr k cíli. Interval oznamování - Minimální čas mezi oznámeními + Minimální čas mezi oznámeními. Výchozí barva Vyberte kategorii Zadejte název Zadejte kategorii - Zadejte popis + Zadejte popis. Mapa je propojená na pozici Sbalený seznam Rozbalený seznam @@ -2185,14 +2185,14 @@ Pokud máte rádi OsmAnd a OSM a chcete je podpořit, toto je výborný způsob, Prosím přidejte mapové značky pomocí mapy Žádné body cesty nenalezeny Sledujte nás - Indikovat směr cílového bodu zvukem + Indikovat směr cílového bodu zvukem. Hmatová indikace směru - Indikovat směr cílového bodu vibracemi + Indikovat směr cílového bodu vibracemi. OsmAnd Live navigace Stav baterie Zvuková zpětná vazba směru - Povolit navigaci pro OsmAnd Live changes + Povolit navigaci pro OsmAnd Live changes. Změnit umístění značky Posuňte mapu pro změnu umístění značky Maďarština (formální) @@ -2205,7 +2205,7 @@ Pokud máte rádi OsmAnd a OSM a chcete je podpořit, toto je výborný způsob, Vlak Asturština Formát souřadnic - Formát pro zeměpisné souřadnice + Formát pro zeměpisné souřadnice. od Okres Okolí @@ -2238,12 +2238,12 @@ Pokud máte rádi OsmAnd a OSM a chcete je podpořit, toto je výborný způsob, Povolit přístup k poloze Získejte pokyny a objevte nová místa bez připojení k Internetu Najít mou polohu - Nekontrolovat aktualizace nových verzí a slevy související s OsmAnd + Nekontrolovat aktualizace nových verzí a slevy související s OsmAnd. Nezobrazovat aktualizace Chcete aktualizovat všechny mapy ihned? Vymazat všechny dlaždice Ekonomická trasa - Použít ekonomickou trasu (obvykle kratší) + Použít ekonomickou trasu (obvykle kratší). Opravdu chcete nahradit oblíbené místo „%1$s“? Nadzemní objekty Změnit @@ -2280,7 +2280,7 @@ Pokud máte rádi OsmAnd a OSM a chcete je podpořit, toto je výborný způsob, Pozastavit Služba OsMo běží Povolit rychlý start zánamu - Zobrazit systémové oznámení, které umožňuje spustit nahrávání + Zobrazit systémové oznámení, které umožňuje spustit nahrávání. Oznámení Pokračovat Pozastavit @@ -2290,11 +2290,11 @@ Pokud máte rádi OsmAnd a OSM a chcete je podpořit, toto je výborný způsob, Žádná data Barevné schéma pro vrstevnice Minimální rychlost pro záznam - Filtr: Nastavte minimální rychlost, při které se zaznamená bod + Filtr: Nastavte minimální rychlost, při které se zaznamená bod. Minimální změna polohy pro záznam - Filtr: Nastavte minimální vzdálenost od posledního záznamu, při které se zaznamená nový bod + Filtr: Nastavte minimální vzdálenost od posledního záznamu, při které se zaznamená nový bod. Minimální přesnost záznamu - Filtr: Nastavte minimální přesnost, při které se zaznamená bod + Filtr: Nastavte minimální přesnost, při které se zaznamená bod. Vánoční POI Před Vánoci a Novým rokem můžete zobrazit POI spojené s Vánoci: vánoční stromky, trhy atd. Zobrazit vánoční POI? @@ -2325,10 +2325,10 @@ Pokud máte rádi OsmAnd a OSM a chcete je podpořit, toto je výborný způsob, Starší vyhledávání Zobrazit starší způsob vyhledávání Povolit dálnice - Povolit jízdu po dálnicích + Povolit jízdu po dálnicích. Články Wikipedie v okolí Hledat město nebo oblast - Přidat starší hledání do úvodního panelu + Přidat starší hledání do úvodního panelu. \\022 Klikatelné ikony na mapě \n \n • Podrobné filtrování POI: Například hledání restaurace dle kuchyně, kempy se speciálními službami, apod. @@ -2413,11 +2413,11 @@ Pokud máte rádi OsmAnd a OSM a chcete je podpořit, toto je výborný způsob, Vytvořit položky Konfigurace mapy Navigace - Ponecháte-li prázdné, bude automaticky použita adresa nebo název místa + Ponecháte-li prázdné, bude automaticky použita adresa nebo název místa. Tato zpráva bude automaticky dokončena v poli komentáře. Zpráva - Vyberte kategorii, kterou chcete uložit do oblíbených - Vyberte volitelnou kategorii + Vyberte kategorii, kterou chcete uložit do oblíbených. + Vyberte volitelnou kategorii. Seznam POI Můžete přidat jednu nebo více kategorií POI pro zobrazení na mapě. Přidat styl mapy @@ -2434,7 +2434,7 @@ Pokud máte rádi OsmAnd a OSM a chcete je podpořit, toto je výborný způsob, Přidat zdroj mapy Zdroj mapy se změnil na \"%s\". Změnit polohu tlačítka - Dlouze stiskněte a přetáhněte tlačítko pro změnu jeho umístění na obrazovce + Dlouze stiskněte a přetáhněte tlačítko pro změnu jeho umístění na obrazovce. Název akce Neplatný OLC @@ -2449,7 +2449,7 @@ Zobrazená oblast: %1$s x %2$s Začít nový úsek po 6minutové pauze, novou trasu po 2hodinové pauze nebo nový soubor po delší pauze, pokud se změnilo datum. Zobrazit dočasné okno Aktivace tlačítka akce posune seznam na další stranu. - Zobrazit hloubkové úrovně a body + Zobrazit hloubkové úrovně a body. Námořní hloubkové vrstevnice • Nová funkce: Tlačítko rychlé akce \n @@ -2483,7 +2483,7 @@ Zobrazená oblast: %1$s x %2$s Víc rovin nebo víc kopců Použít údaje o nadmořské výšce - Použít údaje o nadmořské výšce terénu od SRTM, ASTER a EU-DEM + Použít údaje o nadmořské výšce terénu od SRTM, ASTER a EU-DEM. Styl jízdy @@ -2558,13 +2558,13 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu Kratší trasy Vyvážený Preferovat vedlejší silnice - Priorita terénu: rovinatý nebo kopcovitý + Priorita terénu: rovinatý nebo kopcovitý. Svah Berbersky Neposílat anonymní statistiky používání aplikace OsmAnd sbírá informace o tom, které části aplikace otevíráte. Nikdy se neodesílá poloha, nic co je zapisováno do aplikace nebo detaily prohlížených oblastí, hledání nebo stahování. Nezobrazovat zprávy při spuštění - Zakáže zobrazení slev aplikace a mimořádné zprávy lokálních událostí + Zakáže zobrazení slev aplikace a mimořádné zprávy lokálních událostí. Možnosti parkování Děkujeme vám za zakoupení plné verze OsmAnd! Zvolte kolísání výšky @@ -2599,17 +2599,17 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu Barevné schéma Zobrazit od úrovně přiblížení Povolit soukromý přístup - Umožnit přístup k soukromým oblastem + Umožnit přístup k soukromým oblastem. Zobrazit úrovně přiblížení: %1$s Název skupiny Změnit barvu Upravit název Animovat moji polohu - Povolit animaci mojí polohy při navigaci + Povolit animaci mojí polohy při navigaci. Přehled Vyberte ulici v %1$s - Tlačítko akce přidá cíl do středu obrazovky. Z předchozího nastaveného cíle se stává poslední mezilehlý bod. + Tlačítko akce přidá cíl do středu obrazovky. Z předchozího nastaveného cíle se stává poslední mezilehlý cíl. Tlačítko akce nahradí cíl bodem ve středu obrazovky. Tlačítko akce přidá první mezilehlý bod do středu obrazovky. Bez překryvné vrstvy @@ -2633,7 +2633,7 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu Spustit hledání znovu Zvětšit okruh hledání Nic nalezeno :( - Změňte vyhledávací dotaz nebo zvyšte okruh hledání + Změňte vyhledávací dotaz nebo zvyšte okruh hledání. Zobrazit/skrýt poznámky OSM Oprávnění OsmAnd nemůže naimportovat soubor. Prosím zkontrolujte, že má oprávnění číst soubor z tohoto umístění. @@ -2647,9 +2647,9 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu \nK tomu budete muset nainstalovat aplikaci Mapillary z obchodu Google Play. On-line fotografie Přidat fotografie - Nemáme fotografie pro toto umístění + Nemáme fotografie pro toto umístění. Přispějte vlastními pohledy na toto místo přes Mapillary z úrovně ulice. - Umožňuje rychle přispět do Mapillary + Umožňuje rychle přispět do Mapillary. On-line fotografie z ulic pro každého. Objevte místa, spolupracujte, zachyťte svět. Fotografie z ulic pro každého. Objevte místa, spolupracujte, zachyťte svět. Nástroj Mapillary @@ -2662,10 +2662,10 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu Nesprávné uživatelské jméno! Do Od - Zobrazit obrázky přidané v určitém období. - Datumy + Zobrazit pouze přidané obrázky + Datum Zadejte uživatelské jméno - Zobrazit obrázky přidané určitým uživatelem. + Zobrazit pouze obrázky přidané Uživatelské jméno Můžete filtrovat snímky podle odesílatele nebo podle datumu. Filtry se použijí pouze pro detailní přiblížení. Ukládat zaznamenané trasy v adresářích po měsících @@ -2699,7 +2699,7 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu Měřit vzdálenost Časový zásobník pro online sledování Zadejte čas pro podržení pozic k odeslání, pokud není připojení - Pro zobrazení fotografií z Mapillary potřebujete Internet + Pro zobrazení fotografií z Mapillary potřebujete Internet. Zkusit znovu Přidat bod trasy Přidat trasový bod @@ -2723,9 +2723,9 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu Přidat body trasy Přidat čáru Přidat a zaznamenat trasy - Zaznamenat nebo importovat trasy na zobrazení + Zaznamenat nebo importovat trasy na zobrazení. Přidat oblíbené - Přidat oblíbené na mapě, nebo je importovat ze souboru + Přidat oblíbené na mapě, nebo je importovat ze souboru. Import trasy Soubor %$1s neobsahuje body trasy, importovat jako trasu? Přesunout bod @@ -2736,17 +2736,17 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu Seřadit podle Možnosti značek Nepoužívat animace - Zakáže animace v aplikaci + Zakáže animace v aplikaci. Stále zobrazovat na mapě Ukončit bez uložení? Práh změny orientace mapy - Zvolte rychlost při které se orientace mapy změní z \"Ve směru pohybu\" na \"Podle kompasu\" + Zvolte rychlost při které se orientace mapy změní z \"Ve směru pohybu\" na \"Podle kompasu\". Všechny mapové značky přesunuty do historie Mapová značka přesunuta do historie Mapová značka přesunuta do aktivních Seznam Skupiny - Prošlé: %1$s + Naposledy použité: %1$s Aktivovat Dnes Včera @@ -2765,8 +2765,8 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu Exportovat vaše značky do souboru, který můžete určit zde: Uložit jako trasu Přesunout do historie - Skupina bude odstraněna po restartu - Zobrazit vodítko + Skupina bude odstraněna po příštím restartu aplikace. + Zobrazit vodítka Zobrazit šipky na mapě Odebrat z mapových značek sestupně @@ -2779,7 +2779,7 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu Zvolte formát souřadnicového vstupu. Můžete ho kdykoli změnit klepnutím na Možnosti. Rychlé vložení souřadnic Vyhnout se ledovým cestám, brodům - Vyhnout se ledovým cestám a brodům + Vyhnout se ledovým cestám a brodům. Zobrazit prošlé Skrýt prošlé Vyberte, jak ukazovat vzdálenost a směr k mapovým značkám na obrazovce mapy: @@ -2804,12 +2804,45 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu Trasa je vypočítaná Okružní trasa Pro použití této funkce musíte přidat alespoň jednu značku . - \\022 Zcela přepracované mapové značky s pokyny a plánováním trasy -\n -\n• Nástroj měření vzdálenosti nabízí funkci přichycení k cestě a uložení bodů jako trasu -\n + \\022 Zcela přepracované mapové značky s vodítky a plánováním trasy +\n +\n• Nástroj měření vzdálenosti nabízí funkci přichycení k cestě a uložení bodů jako trasu +\n \n• OsmAnd Live: opravy chyb, nová data na serveru každých 30 minut, aktualizace začleněné do navigace \n \n Tmavě žlutá + Vytvořit nebo upravit OSM objekty + Hledání tras s trasovými body + Více + Vzhled na mapě + Zvolte trasy, jejichž trasové body má OsmAnd přidat jako značky. (Zobrazují sa jen stopy s trasovými body.) + Vyberte kategorii oblíbených, kterou chcete přidat k značkám. + Body trasy + Kategorie oblíbených + Přidat skupinu + Můžete importovat skupinu z oblíbených nebo body trasy. + Vytvořit mapové značky! + Importovat skupiny + Můžete importovat skupiny oblíbených nebo body trasy jako značky. + Značky označené jako prošlé se objeví na této obrazovce. + Dvě + Jedna + Zobrazit vodicí čáry od vaší polohy k aktivním značkám. + Zobrazit jednu nebo dvě šipky označující směr k aktivním značkám. + Zvolte způsob zobrazení vzdálenosti k aktivním značkám. + Vyberte kolik ukazatelů směru bude zobrazeno. + Počet desetinných míst + Vpravo + Vlevo + Zobrazit numerickou klávesnici + Vložit + Automaticky přepnout na další pole po zadání %1$d desetinných míst. + %1$d číslic + Přejít na další pole + Přejmenovat značku + Klepnutí na mapu přepíná ovládací tlačítka a nástroje. + Režim celé obrazovky + Zobrazit na horní liště + Značka prošlá From 2ca37fd5aa38cd876f96cd80e74c024a19d9e5b5 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Tue, 21 Nov 2017 09:54:36 +0000 Subject: [PATCH 06/17] Translated using Weblate (Danish) Currently translated at 99.9% (2514 of 2515 strings) --- OsmAnd/res/values-da/strings.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index a27f071f41..d853158300 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -2971,4 +2971,17 @@ Repræsenterer område: %1$s x %2$s Udseende på kortet Find spor med rutepunkter Mere + Opret eller rediger OSM objekter + Opret eller ændre OSM interessepunkter, åbne eller kommentere OSM noter, og bidrag med GPX-filer. + Slettet + Redigeret + Tilføjet + Markør %s er aktiveret. + Tryk på markør på kortet, flyt den til det første sted i aktive markører, uden at åbne kontekstmenuen. + Et tryk aktiv + Tag noter! + Tilføj lyd-, video- eller fotobesked til hvert punkt på kortet ved hjælp af modul- eller kontekstmenu. + Noter efter dato + Efter dato + Efter type From 3cc55dd68e65c407872744470913c5e720046d85 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Tue, 21 Nov 2017 08:58:02 +0000 Subject: [PATCH 07/17] Translated using Weblate (French) Currently translated at 99.5% (2503 of 2515 strings) --- OsmAnd/res/values-fr/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index ab6d2c6153..f4c1fe3890 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3022,4 +3022,5 @@ représentant la zone : %1$s x %2$s Indiquez le nombre d\'indicateurs de direction à afficher. Plus Rechercher des traces avec points de passage + Créer et modifier des éléments OSM From 92382fb353989f965e15bfcfa82ebc3bdb62c0e1 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Tue, 21 Nov 2017 09:47:27 +0000 Subject: [PATCH 08/17] Translated using Weblate (Hebrew) Currently translated at 71.2% (1792 of 2515 strings) --- OsmAnd/res/values-he/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-he/strings.xml b/OsmAnd/res/values-he/strings.xml index dd5653a167..489dee1fae 100644 --- a/OsmAnd/res/values-he/strings.xml +++ b/OsmAnd/res/values-he/strings.xml @@ -2177,4 +2177,7 @@ הכרזת הגעה אירופה - הולנד ידני בלבד (נגיעה בחץ) + יצירה או שינוי של עצמים ב־OSM + נמחקה + נערכה From abdb488f9d7cab671de03f8134f76b48ee67ac9d Mon Sep 17 00:00:00 2001 From: Evgenii Martynenko Date: Tue, 21 Nov 2017 10:21:33 +0000 Subject: [PATCH 09/17] Translated using Weblate (Russian) Currently translated at 99.6% (2507 of 2515 strings) --- OsmAnd/res/values-ru/strings.xml | 73 +++++++++++++++++++------------- 1 file changed, 43 insertions(+), 30 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 30a64b3511..4e8a19d4e5 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -122,10 +122,10 @@ Показать/скрыть избранные Добавить категорию Действия - Если оставить это поле пустым, то оно будет автоматически заполнено адресом или названием места + Если оставить это поле пустым, то оно будет автоматически заполнено адресом или названием места. Это сообщение будет отправлено как комментарий. - Выберите категорию для сохранения точки избранного - Выберите категорию (опционально) + Выберите категорию для сохранения в ней точки избранного. + Выберите категорию (опционально). Список категорий Вы можете добавить одну или несколько категорий POI для отображения на карте. Нажатие на кнопку быстрого действия позволит циклически переключать элементы данного списка. @@ -142,7 +142,7 @@ Источники карты Добавить источник карты Источник карты изменён на \"%s\". - Долгое нажатие и перетаскивание позволит переместить кнопку + Долгое нажатие и перетаскивание позволит переместить кнопку. Показывать контуры и точки глубины. Контуры морских глубин @@ -633,7 +633,7 @@ Общие Управление картами Фоновый режим - Запустить OsmAnd в фоновом режиме для записи трека и навигации + Оставить OsmAnd работать в фоновом режиме при выключении экрана. Скоростной маршрут Расчёт скоростного маршрута вместо кратчайшего. На масштабе {0} загрузить {1} тайлов ({2} Mb ) @@ -698,18 +698,18 @@ Искать POI Использовать трекбол, чтобы перемещать карту. Использовать трекбол - Выберите максимальное время поиска позиции сервиса + Задать максимальное время ожидания для каждого фонового определения позиции. Время ожидания Где я? Сеть GPS секунд мин. - Выберите интервал пробуждения для фоновой службы + Выберите интервал пробуждения для фоновой службы. Интервал пробуждения GPS - Выберите источник позиционирования для фоновой службы + Выберите источник позиционирования для фоновой службы. Источник позиционирования - Запускает OsmAnd в фоновом режиме для отслеживания местоположения при выключенном экране + Запускает OsmAnd в фоновом режиме для отслеживания вашей позиции при выключенном экране. Запуск приложения в фоновом режиме Сервис маршрутизации OsmAnd включён, если отключить позиционирование, он перестанет вести по маршруту. Укажите настройки для навигации. @@ -747,7 +747,7 @@ Портрет Ландшафт Ориентация экрана - Выберите ориентацию экрана + Выберите ориентацию экрана. Формат времени работы не поддерживается для редактирования Новое правило Маршруты @@ -763,7 +763,7 @@ Длина пути Транспорт ОК - Показывать остановки общественного транспорта на карте + Показывать остановки общественного транспорта на карте. Показать остановки транспорта Навигационное приложение OsmAnd Данные POI были успешно обновлены ({0} объектов загружено) @@ -788,9 +788,9 @@ Офлайн поиск Онлайн поиск Уровень детализации - Выберите максимальный уровень для загрузки из Интернета + Выберите максимальный масштаб для загрузки тайлов карт из интеренета. Общая протяженность = %1$s, время в пути = %2$d ч %3$d мин. - Выберите онлайн или оффлайн сервис для прокладки маршрута + Выберите онлайн или оффлайн сервис для прокладки маршрута. Прокладка маршрута Каталог для хранения данных на SD-карте не доступна! Вы хотите загрузить {0} - {1} ? @@ -834,11 +834,11 @@ Приложение завершилось некорректно. Лог-файл в {0}. Сообщите разработчику об ошибке и приложите лог-файл. Сохранение треков GPX на SD-карту… Окончен - Использовать Интернет-сервис для прокладки маршрута + Использовать Интернет-сервис для прокладки маршрута. Онлайн маршрутизация Пароль - Установка логина/пароля OpenStreetMap + Укажите настройки для загрузки данных в Openstreetmap.org (OSM). Настройка данных: язык, обновление данных Данные Редактирование OSM @@ -865,11 +865,11 @@ Выберите город или почтовый индекс Выберите регион Угол обзора - Включить 3D вид для карты + Включить 3D вид для карты. 3D вид Показывать слой POI Отображать POI - Выберите источник онлайн карт или кэшированных частей карты + Выберите источник онлайн или кэшированных тайлов карты. Растровые карты Источник карты Использовать Интернет @@ -936,7 +936,7 @@ Автор Редактирование POI Добавление POI - POI не является точкой или не найдена + Узел не найден или удобство (amenity) состоит из нескольких узлов, что не поддерживается. Вы действительно хотите удалить {0}? Удаление POI POI успешно удалена @@ -1039,7 +1039,7 @@ Оптимизация карты для соответствующего профиля Выберите минимальный уровень масштаба для отображения горизонталей (необходимо предварительно загрузить соответствующий SRTM-файл): Показывать горизонтали - На карте отображается больше подробностей + Отображать больше деталей на карте. Больше деталей Круговое движение, %1$d съезд Держитесь левее @@ -1183,7 +1183,7 @@ Карты SRTM Настройки аудио и видео Изменить порядок - Отобразить + Просмотр Сделать фото Сделать фото Плагин Dropbox позволяет синхронизировать треки и видео/аудио заметки с вашим аккаунтом Dropbox. @@ -1215,7 +1215,7 @@ Номер дома В настоящее время нет соединения по Wi-Fi. Хотите использовать текущее интернет-соединение для загрузки? Запись поездок - Настройки записи поездок + Настройки записи поездок. Выбор темы приложения. Тема приложения Настройка специальных возможностей @@ -1268,7 +1268,7 @@ Сначала выберите город или улицу Пункт назначения %1$s Режим фокусировки камеры - Режим фокусировки для встроенного приложения фотографирования + Выберите режим фокусировки встроенной камеры. Автоматический фокус Гиперфокальная фокусировка Увеличенная глубина резкозти (EDOF) @@ -1276,9 +1276,9 @@ Макро-режим Постоянная фокусировка Звук затвора - Проигрывать звук при фотографировании + Воспроизводить звук при фотографировании. Размер фото - Размер изображения для встроенного приложения фотографирования + Выберите размер фотографии со встроенной камеры. Ограничение скорости Камеры контроля скорости Дорожные предупреждения @@ -1915,7 +1915,7 @@ Ограничение высоты Укажите высоту автомобиля для учёта при построении маршрута. Умный перерасчет маршрута - Перерасчет только начальной части маршрута для длительных поездок + Перерасчет только начальной части маршрута для длительных поездок. Удалить правки OSM Отключено Раскраска по сетевой принадлежности @@ -2072,13 +2072,13 @@ Полная версия Загрузки Показывать баннер бесплатной версии - Даже если у вас купленная версия вы также можете видеть баннер для бесплатной версии + Показывать баннер бесплатной версии даже в платной версии. Вы уверены, что хотите скачать карту автодорог, хотя у вас уже есть стандартная (полная) карта? %1$.1f из %2$.1f Мб %.1f МБ Обновить все (%1$s МБ) Использовано бесплатных загрузок - Отображать сколько бесплатных загрузок использовано + Отображать сколько бесплатных загрузок использовано. гео: Поделиться местоположением Отправить @@ -2101,8 +2101,8 @@ Часто задаваемые вопросы Вопросы и ответы Первый запуск - Как загрузить карты, установить основные настройки - Настройка навигации + Как загрузить карты, установить основные настройки. + Настройка навигации. Планирование поездки Введите название страны Новая версия @@ -2601,7 +2601,7 @@ Нажатие на кнопку действия выключит или включит голосовые подсказки во время навигации. Нажатие на кнопку действия добавит место парковки по центру экрана. Показывать промежуточный диалог - Вам нужен Интернет для просмотра фотографий с Mapillary + Вам нужен Интернет для просмотра фотографий с Mapillary. Неправильный формат Введите новое имя Назад @@ -2764,4 +2764,17 @@ \n• Добавление точек интереса (POI) и непосредственная загрузка их в OSM (или позже, если в автономном режиме) \n• Возможность записи путешествие в фоновом режиме (в то время, как устройство находится в спящем режиме) \nOsmAnd - открытое программное обеспечение в активной разработке. Каждый может внести вклад сообщая об ошибках, улучшая перевод или разрабатывая новые возможности. Проект находится в состоянии постоянного совершенствования форм взаимодействия разработчиков и пользователей. Ход проекта зависит также от финансовых взносов для обеспечения продолжения кодирования и тестирования новой функциональности. + Создать или изменить OSM объекты + Создавайте или изменяйте OSM POI, открывайте или комментируйте заметки OSM и вносите записанные файлы GPX. + Удалено + Отредактировано + Добавлено + Маркер %s активирован. + Нажатие на маркер на карте переместит его на первое место в списке активных маркерах, не открывая контекстное меню. + Активация одним нажатием + Делайте заметки! + Добавьте аудио, видео или фото заметку в любую точку на карте, используя виджет или контекстное меню. + Заметки по дате + По дате + По типу From 2aa354dab2d8ad6ddc92993cbe6b12784f9f9a1c Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Tue, 21 Nov 2017 12:35:57 +0000 Subject: [PATCH 10/17] Translated using Weblate (French) Currently translated at 100.0% (2515 of 2515 strings) --- OsmAnd/res/values-fr/strings.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index f4c1fe3890..1a5e9d5a25 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3023,4 +3023,16 @@ représentant la zone : %1$s x %2$s Plus Rechercher des traces avec points de passage Créer et modifier des éléments OSM + Créer ou modifier les PI OSM, ouvrir ou commenter des Notes OSM et contribuer aux traces GPX enregistrées. + Supprimé + Modifié + Ajouté + Marque %s activée. + Appuyez sur une marque présente sur la carte, déplacez-la en première position des marques actives sans ouvrir le menu contextuel. + Un appui activé + Prenez des notes ! + Ajoutez des notes sonores, vidéos ou photo à tout point de la carte en utilisant le gadget ou le menu contextuel. + Notes par date + Par date + Par type From 8b523ea9c213e5fa3aaa5a034dc0580923a34456 Mon Sep 17 00:00:00 2001 From: Alexander Sytnyk Date: Tue, 21 Nov 2017 14:48:47 +0200 Subject: [PATCH 11/17] Change landscape layout --- OsmAnd/res/layout/list_item_header.xml | 5 +- .../osmand/plus/audionotes/NotesFragment.java | 6 +- .../audionotes/adapters/NotesAdapter.java | 305 ++++++++++++------ 3 files changed, 208 insertions(+), 108 deletions(-) diff --git a/OsmAnd/res/layout/list_item_header.xml b/OsmAnd/res/layout/list_item_header.xml index 24ab6fb14f..7a880dc640 100644 --- a/OsmAnd/res/layout/list_item_header.xml +++ b/OsmAnd/res/layout/list_item_header.xml @@ -7,9 +7,12 @@ android:descendantFocusability="blocksDescendants" android:orientation="vertical"> - + diff --git a/OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java b/OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java index 435478137d..38fc79a8cf 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java @@ -117,11 +117,12 @@ public class NotesFragment extends OsmAndListFragment { @Override public void onResume() { super.onResume(); + boolean portrait = AndroidUiHelper.isOrientationPortrait(getActivity()); List items = createItemsList(); ListView listView = getListView(); listView.setDivider(null); listView.setEmptyView(emptyView); - if (items.size() > 0 && footerView == null) { + if (items.size() > 0 && footerView == null && portrait) { footerView = getActivity().getLayoutInflater().inflate(R.layout.list_shadow_footer, null, false); listView.addFooterView(footerView); listView.setHeaderDividersEnabled(false); @@ -131,6 +132,7 @@ public class NotesFragment extends OsmAndListFragment { listAdapter.setSelectionMode(selectionMode); listAdapter.setSelected(selected); listAdapter.setListener(createAdapterListener()); + listAdapter.setPortrait(portrait); listView.setAdapter(listAdapter); } @@ -294,7 +296,7 @@ public class NotesFragment extends OsmAndListFragment { private void selectAll(int type) { if (type == NotesAdapter.TYPE_DATE_HEADER) { - for (int i = 0; i < listAdapter.getCount(); i++) { + for (int i = 0; i < listAdapter.getItemsCount(); i++) { Object item = listAdapter.getItem(i); if (item instanceof Recording) { selected.add((Recording) item); diff --git a/OsmAnd/src/net/osmand/plus/audionotes/adapters/NotesAdapter.java b/OsmAnd/src/net/osmand/plus/audionotes/adapters/NotesAdapter.java index 4ab488d049..b1f8e06c7a 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/adapters/NotesAdapter.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/adapters/NotesAdapter.java @@ -2,13 +2,16 @@ package net.osmand.plus.audionotes.adapters; import android.content.Context; import android.support.annotation.NonNull; +import android.support.v4.content.ContextCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CheckBox; +import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; import net.osmand.plus.OsmandApplication; @@ -30,10 +33,13 @@ public class NotesAdapter extends ArrayAdapter { private OsmandApplication app; private NotesAdapterListener listener; + private List items; private boolean selectionMode; private Set selected; + private boolean portrait; + public void setListener(NotesAdapterListener listener) { this.listener = listener; } @@ -46,127 +52,88 @@ public class NotesAdapter extends ArrayAdapter { this.selected = selected; } + public void setPortrait(boolean portrait) { + this.portrait = portrait; + } + public NotesAdapter(OsmandApplication app, List items) { super(app, R.layout.note, items); this.app = app; + this.items = items; } @NonNull @Override public View getView(final int position, View row, @NonNull ViewGroup parent) { - final int type = getItemViewType(position); - boolean header = type == TYPE_DATE_HEADER - || type == TYPE_AUDIO_HEADER - || type == TYPE_PHOTO_HEADER - || type == TYPE_VIDEO_HEADER; + if (portrait) { + final int type = getItemViewType(position); + boolean header = type == TYPE_DATE_HEADER + || type == TYPE_AUDIO_HEADER + || type == TYPE_PHOTO_HEADER + || type == TYPE_VIDEO_HEADER; + + if (row == null) { + LayoutInflater inflater = (LayoutInflater) app.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + if (header) { + row = inflater.inflate(R.layout.list_item_header, parent, false); + HeaderViewHolder hHolder = new HeaderViewHolder(row); + row.setTag(hHolder); + } else { + row = inflater.inflate(R.layout.note_list_item, parent, false); + ItemViewHolder iHolder = new ItemViewHolder(row); + row.setTag(iHolder); + } + } - if (row == null) { - LayoutInflater inflater = (LayoutInflater) app.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (header) { - row = inflater.inflate(R.layout.list_item_header, parent, false); - HeaderViewHolder hHolder = new HeaderViewHolder(row); - row.setTag(hHolder); + setupHeader(type, (HeaderViewHolder) row.getTag()); } else { - row = inflater.inflate(R.layout.note_list_item, parent, false); - ItemViewHolder iHolder = new ItemViewHolder(row); - row.setTag(iHolder); + final Object item = getItem(position); + if (item instanceof Recording) { + setupItem(position, (Recording) item, (ItemViewHolder) row.getTag()); + } } - } - if (header) { - final HeaderViewHolder holder = (HeaderViewHolder) row.getTag(); - holder.checkBox.setVisibility(selectionMode ? View.VISIBLE : View.GONE); - holder.headerRow.setEnabled(selectionMode); - if (selectionMode) { - holder.checkBox.setChecked(isSelectAllChecked(type)); - holder.checkBox.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (listener != null) { - listener.onHeaderClick(type, holder.checkBox.isChecked()); - } - } - }); - holder.headerRow.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - holder.checkBox.performClick(); - } - }); - } else { - holder.view.setOnClickListener(null); - } - int titleId; - if (type == TYPE_DATE_HEADER) { - titleId = R.string.notes_by_date; - } else if (type == TYPE_AUDIO_HEADER) { - titleId = R.string.shared_string_audio; - } else if (type == TYPE_PHOTO_HEADER) { - titleId = R.string.shared_string_photo; - } else { - titleId = R.string.shared_string_video; - } - holder.title.setText(titleId); + return row; } else { - final Object item = getItem(position); - if (item instanceof Recording) { - final Recording recording = (Recording) item; - final ItemViewHolder holder = (ItemViewHolder) row.getTag(); + LayoutInflater inflater = (LayoutInflater) app.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + boolean lastCard = getHeadersCount() == position + 1; + int margin = app.getResources().getDimensionPixelSize(R.dimen.content_padding); + int sideMargin = app.getResources().getDisplayMetrics().widthPixels / 10; - if (recording == NotesFragment.SHARE_LOCATION_FILE) { - holder.title.setText(R.string.av_locations); - holder.description.setText(R.string.av_locations_descr); + FrameLayout fl = new FrameLayout(getContext()); + LinearLayout ll = new LinearLayout(getContext()); + fl.addView(ll); + ll.setOrientation(LinearLayout.VERTICAL); + ll.setBackgroundResource(app.getSettings().isLightContent() ? R.drawable.bg_card_light : R.drawable.bg_card_dark); + ((FrameLayout.LayoutParams) ll.getLayoutParams()).setMargins(sideMargin, margin, sideMargin, lastCard ? margin : 0); + + int headerInd = getHeaderIndex(position); + HeaderViewHolder headerVH = new HeaderViewHolder(inflater.inflate(R.layout.list_item_header, parent, false)); + setupHeader((int) items.get(headerInd), headerVH); + ll.addView(headerVH.view); + + for (int i = headerInd + 1; i < items.size(); i++) { + Object item = items.get(i); + if (item instanceof Recording) { + ItemViewHolder itemVH = new ItemViewHolder(inflater.inflate(R.layout.note_list_item, parent, false)); + setupItem(i, (Recording) item, itemVH); + ll.addView(itemVH.view); } else { - holder.title.setText(recording.getName(app, true)); - holder.description.setText(recording.getNewSmallDescription(app)); - int iconRes = recording.isAudio() ? R.drawable.ic_type_audio - : (recording.isVideo() ? R.drawable.ic_type_video : R.drawable.ic_type_img); - int colorRes = app.getSettings().isLightContent() ? R.color.icon_color : R.color.ctx_menu_info_text_dark; - holder.icon.setImageDrawable(app.getIconsCache().getIcon(iconRes, colorRes)); + break; } - - holder.bottomDivider.setVisibility(hideBottomDivider(position) ? View.GONE : View.VISIBLE); - holder.icon.setVisibility(selectionMode ? View.GONE : View.VISIBLE); - holder.checkBox.setVisibility(selectionMode ? View.VISIBLE : View.GONE); - holder.options.setVisibility(selectionMode ? View.GONE : View.VISIBLE); - if (selectionMode) { - holder.checkBox.setChecked(selected.contains(recording)); - holder.checkBox.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (listener != null) { - listener.onCheckBoxClick(recording, holder.checkBox.isChecked()); - } - } - }); - } else { - holder.options.setImageDrawable(app.getIconsCache().getThemedIcon(R.drawable.ic_overflow_menu_white)); - holder.options.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (listener != null) { - listener.onOptionsClick(recording); - } - } - }); - } - - holder.view.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (selectionMode) { - holder.checkBox.performClick(); - } else { - if (listener != null) { - listener.onItemClick(recording); - } - } - } - }); } - } - return row; + return fl; + } + } + + @Override + public int getCount() { + if (portrait) { + return super.getCount(); + } + return getHeadersCount(); } @Override @@ -183,13 +150,137 @@ public class NotesAdapter extends ArrayAdapter { return TYPE_COUNT; } + private void setupHeader(final int type, final HeaderViewHolder holder) { + setupBackground(holder.backgroundView); + holder.topDivider.setVisibility(portrait ? View.VISIBLE : View.GONE); + holder.checkBox.setVisibility(selectionMode ? View.VISIBLE : View.GONE); + holder.headerRow.setEnabled(selectionMode); + if (selectionMode) { + holder.checkBox.setChecked(isSelectAllChecked(type)); + holder.checkBox.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (listener != null) { + listener.onHeaderClick(type, holder.checkBox.isChecked()); + } + } + }); + holder.headerRow.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + holder.checkBox.performClick(); + } + }); + } else { + holder.view.setOnClickListener(null); + } + holder.title.setText(getHeaderTitleRes(type)); + } + + private int getHeaderTitleRes(int type) { + if (type == TYPE_DATE_HEADER) { + return R.string.notes_by_date; + } else if (type == TYPE_AUDIO_HEADER) { + return R.string.shared_string_audio; + } else if (type == TYPE_PHOTO_HEADER) { + return R.string.shared_string_photo; + } + return R.string.shared_string_video; + } + + private void setupItem(int position, final Recording recording, final ItemViewHolder holder) { + setupBackground(holder.view); + if (recording == NotesFragment.SHARE_LOCATION_FILE) { + holder.title.setText(R.string.av_locations); + holder.description.setText(R.string.av_locations_descr); + } else { + holder.title.setText(recording.getName(app, true)); + holder.description.setText(recording.getNewSmallDescription(app)); + int iconRes = recording.isAudio() ? R.drawable.ic_type_audio + : (recording.isVideo() ? R.drawable.ic_type_video : R.drawable.ic_type_img); + int colorRes = app.getSettings().isLightContent() ? R.color.icon_color : R.color.ctx_menu_info_text_dark; + holder.icon.setImageDrawable(app.getIconsCache().getIcon(iconRes, colorRes)); + } + + holder.bottomDivider.setVisibility(hideBottomDivider(position) ? View.GONE : View.VISIBLE); + holder.icon.setVisibility(selectionMode ? View.GONE : View.VISIBLE); + holder.checkBox.setVisibility(selectionMode ? View.VISIBLE : View.GONE); + holder.options.setVisibility(selectionMode ? View.GONE : View.VISIBLE); + if (selectionMode) { + holder.checkBox.setChecked(selected.contains(recording)); + holder.checkBox.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (listener != null) { + listener.onCheckBoxClick(recording, holder.checkBox.isChecked()); + } + } + }); + } else { + holder.options.setImageDrawable(app.getIconsCache().getThemedIcon(R.drawable.ic_overflow_menu_white)); + holder.options.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (listener != null) { + listener.onOptionsClick(recording); + } + } + }); + } + + holder.view.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (selectionMode) { + holder.checkBox.performClick(); + } else { + if (listener != null) { + listener.onItemClick(recording); + } + } + } + }); + } + + private void setupBackground(View view) { + if (!portrait) { + view.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.color_transparent)); + } + } + + public int getItemsCount() { + return items.size(); + } + + private int getHeadersCount() { + int res = 0; + for (Object item : items) { + if (item instanceof Integer) { + res++; + } + } + return res; + } + + private int getHeaderIndex(int position) { + int count = 0; + for (int i = 0; i < items.size(); i++) { + if (items.get(i) instanceof Integer) { + if (count == position) { + return i; + } + count++; + } + } + return -1; + } + private boolean hideBottomDivider(int pos) { - return pos == getCount() - 1 || !(getItem(pos + 1) instanceof Recording); + return pos == items.size() - 1 || !(getItem(pos + 1) instanceof Recording); } private boolean isSelectAllChecked(int type) { - for (int i = 0; i < getCount(); i++) { - Object item = getItem(i); + for (Object item : items) { if (item instanceof Recording) { if (type != TYPE_DATE_HEADER && !isAppropriate((Recording) item, type)) { continue; @@ -214,12 +305,16 @@ public class NotesAdapter extends ArrayAdapter { private class HeaderViewHolder { final View view; + final View topDivider; + final View backgroundView; final View headerRow; final CheckBox checkBox; final TextView title; HeaderViewHolder(View view) { this.view = view; + topDivider = view.findViewById(R.id.top_divider); + backgroundView = view.findViewById(R.id.background_view); headerRow = view.findViewById(R.id.header_row); checkBox = (CheckBox) view.findViewById(R.id.check_box); title = (TextView) view.findViewById(R.id.title_text_view); From f76caea09410b216adb534884db91e0bf8d481ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Szerszon?= Date: Tue, 21 Nov 2017 13:28:42 +0000 Subject: [PATCH 12/17] Translated using Weblate (Polish) Currently translated at 100.0% (3315 of 3315 strings) --- OsmAnd/res/values-pl/phrases.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-pl/phrases.xml b/OsmAnd/res/values-pl/phrases.xml index 9957adf071..0ffa3e6968 100644 --- a/OsmAnd/res/values-pl/phrases.xml +++ b/OsmAnd/res/values-pl/phrases.xml @@ -3036,7 +3036,7 @@ Zastój - Rodzaj + Rodzaj paliwa Metoda płatności Dodatkowy Sklep z materiałami dla rzemieślników @@ -3044,7 +3044,7 @@ Ładowanie: tak Ładowanie: nie -Rodzaj +Rodzaj paliwa (avia) Karty paliwowe Dostęp do Internetu Sprzedaż From fdd361ac58d257773a6f8ffc1b0c6957fa7cbdbe Mon Sep 17 00:00:00 2001 From: Alexander Sytnyk Date: Tue, 21 Nov 2017 16:22:17 +0200 Subject: [PATCH 13/17] Replace MapMarkersMode setting with MARKERS_DISTANCE_INDICATION_ENABLED --- .../plus/mapmarkers/adapters/MapMarkersActiveAdapter.java | 3 +-- .../plus/mapmarkers/adapters/MapMarkersGroupsAdapter.java | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/mapmarkers/adapters/MapMarkersActiveAdapter.java b/OsmAnd/src/net/osmand/plus/mapmarkers/adapters/MapMarkersActiveAdapter.java index 09073a656b..5fa0a247fe 100644 --- a/OsmAnd/src/net/osmand/plus/mapmarkers/adapters/MapMarkersActiveAdapter.java +++ b/OsmAnd/src/net/osmand/plus/mapmarkers/adapters/MapMarkersActiveAdapter.java @@ -15,7 +15,6 @@ import net.osmand.data.LatLon; import net.osmand.plus.IconsCache; import net.osmand.plus.MapMarkersHelper; import net.osmand.plus.MapMarkersHelper.MapMarker; -import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.dashboard.DashLocationFragment; @@ -46,7 +45,7 @@ public class MapMarkersActiveAdapter extends RecyclerView.Adapter mapMarkers = app.getMapMarkersHelper().getMapMarkers(); int markersCount = mapMarkers.size(); showDirectionMarkers = new ArrayList<>(mapMarkers.subList(0, getToIndex(markersCount))); From 8b14f2e4ea28fed5559ede04694c9f738adbd957 Mon Sep 17 00:00:00 2001 From: Alexander Sytnyk Date: Tue, 21 Nov 2017 17:37:03 +0200 Subject: [PATCH 14/17] Do not add round brackets --- .../plus/audionotes/AudioVideoNotesPlugin.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index ae599d4142..ddc0cc2f41 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -444,7 +444,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { return ctx.getString(R.string.recording_photo_description, "", time).trim(); } updateInternalDescription(); - return ctx.getString(R.string.recording_description, "", getDuration(ctx), time) + return ctx.getString(R.string.recording_description, "", getDuration(ctx, true), time) .trim(); } @@ -454,7 +454,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { return time; } updateInternalDescription(); - return time + " " + getDuration(ctx); + return time + " " + getDuration(ctx, true); } @@ -478,7 +478,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { return date + " • " + sz; } updateInternalDescription(); - return date + " • " + sz + " • " + getDuration(ctx); + return date + " • " + sz + " • " + getDuration(ctx, false); } public String getPlainDuration(boolean accessibilityEnabled) { @@ -491,16 +491,18 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { } } - private String getDuration(Context ctx) { - String additional = ""; + private String getDuration(Context ctx, boolean addRoundBrackets) { + StringBuilder additional = new StringBuilder(""); if (duration > 0) { int d = (int) (duration / 1000); - additional += "(" + Algorithms.formatDuration(d, ((OsmandApplication)ctx.getApplicationContext()).accessibilityEnabled()) + ")"; + additional.append(addRoundBrackets ? "(" : ""); + additional.append(Algorithms.formatDuration(d, ((OsmandApplication) ctx.getApplicationContext()).accessibilityEnabled())); + additional.append(addRoundBrackets ? ")" : ""); } if (!available) { - additional += "[" + ctx.getString(R.string.recording_unavailable) + "]"; + additional.append("[").append(ctx.getString(R.string.recording_unavailable)).append("]"); } - return additional; + return additional.toString(); } } From a9b0a81aa57196b988c13378fc5599f0e54a1e02 Mon Sep 17 00:00:00 2001 From: Alexander Sytnyk Date: Tue, 21 Nov 2017 17:39:01 +0200 Subject: [PATCH 15/17] Add "Share Locations" item only in portrait --- OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java b/OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java index 38fc79a8cf..978b6c8a4b 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java @@ -356,7 +356,7 @@ public class NotesFragment extends OsmAndListFragment { @Override public boolean onCreateActionMode(final ActionMode mode, Menu menu) { LOG.debug("onCreateActionMode"); - if (type == MODE_SHARE) { + if (type == MODE_SHARE && AndroidUiHelper.isOrientationPortrait(getActivity())) { listAdapter.insert(SHARE_LOCATION_FILE, 0); } switchSelectionMode(true); From 67a6ccb0a2a9a05d7740919983fdab2d5af39323 Mon Sep 17 00:00:00 2001 From: PavelRatushny Date: Tue, 21 Nov 2017 18:15:27 +0200 Subject: [PATCH 16/17] Change dashboard animations --- OsmAnd/src/net/osmand/AndroidUtils.java | 6 ++ .../net/osmand/plus/ContextMenuAdapter.java | 7 +- .../osmand/plus/activities/HelpActivity.java | 7 +- .../plus/activities/MapActivityActions.java | 45 +++++----- .../plus/activities/MapActivityLayers.java | 4 +- .../audionotes/AudioVideoNotesPlugin.java | 8 +- .../plus/dashboard/DashWaypointsFragment.java | 3 +- .../osmand/plus/dashboard/DashboardOnMap.java | 90 +++++++++++-------- .../development/OsmandDevelopmentPlugin.java | 2 +- .../osmand/plus/dialogs/ConfigureMapMenu.java | 28 +++--- .../osmand/plus/dialogs/RasterMapMenu.java | 2 +- .../DistanceCalculatorPlugin.java | 2 +- .../download/ui/LocalIndexesFragment.java | 8 +- .../plus/mapillary/MapillaryPlugin.java | 5 +- .../plus/myplaces/AvailableGPXFragment.java | 4 +- .../osmand/plus/osmedit/OsmEditingPlugin.java | 8 +- .../src/net/osmand/plus/osmo/OsMoPlugin.java | 2 +- .../parkingpoint/ParkingPositionPlugin.java | 2 +- .../rastermaps/OsmandRasterMapsPlugin.java | 10 ++- .../RoutePointsLayer.java | 2 +- .../plus/srtmplugin/ContourLinesMenu.java | 4 +- .../osmand/plus/srtmplugin/HillshadeMenu.java | 4 +- .../osmand/plus/srtmplugin/SRTMPlugin.java | 9 +- .../osmand/plus/views/ContextMenuLayer.java | 4 +- .../plus/views/ImpassableRoadsLayer.java | 2 +- .../osmand/plus/views/MapControlsLayer.java | 4 +- .../mapwidgets/MapInfoWidgetsFactory.java | 3 +- .../views/mapwidgets/MapWidgetRegistry.java | 8 +- 28 files changed, 158 insertions(+), 125 deletions(-) diff --git a/OsmAnd/src/net/osmand/AndroidUtils.java b/OsmAnd/src/net/osmand/AndroidUtils.java index 6e1eb94c98..a46f98e7c1 100644 --- a/OsmAnd/src/net/osmand/AndroidUtils.java +++ b/OsmAnd/src/net/osmand/AndroidUtils.java @@ -284,6 +284,12 @@ public class AndroidUtils { decorView.setSystemUiVisibility(uiOptions); } + public static int[] getViewLocation(View view) { + int[] coordinates = new int[2]; + view.getLocationOnScreen(coordinates); + return coordinates; + } + public static void enterToFullScreen(Activity activity) { if (Build.VERSION.SDK_INT >= 21) { activity.getWindow().getDecorView() diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java index fae8f03a3b..b011f05e68 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java @@ -252,7 +252,7 @@ public class ContextMenuAdapter { ItemClickListener ca = item.getItemClickListener(); item.setSelected(isChecked); if (ca != null) { - ca.onContextMenuClick(la, item.getTitleId(), position, isChecked); + ca.onContextMenuClick(la, item.getTitleId(), position, isChecked, null); } } }; @@ -348,7 +348,8 @@ public class ContextMenuAdapter { boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, - boolean isChecked); + boolean isChecked, + int[] viewCoordinates); } public interface ProgressListener { @@ -372,7 +373,7 @@ public class ContextMenuAdapter { btn.setChecked(!btn.isChecked()); return false; } else { - return onContextMenuClick(adapter, itemId, position, false); + return onContextMenuClick(adapter, itemId, position, false, null); } } } diff --git a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java index 4cb50d9832..961c14e01b 100644 --- a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java @@ -74,7 +74,7 @@ public class HelpActivity extends OsmandActionBarActivity implements AdapterView ContextMenuAdapter.ItemClickListener listener = mAdapter.getItem(position).getItemClickListener(); if (listener != null) { - listener.onContextMenuClick(mAdapter, position, position, false); + listener.onContextMenuClick(mAdapter, position, position, false, null); } } @@ -200,7 +200,8 @@ public class HelpActivity extends OsmandActionBarActivity implements AdapterView public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, - boolean isChecked) { + boolean isChecked, + int[] viewCoordinates) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); return false; @@ -227,7 +228,7 @@ public class HelpActivity extends OsmandActionBarActivity implements AdapterView } @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked, int[] viewCoordinates) { String title = mTitle == null ? adapter.getItem(position).getTitle() : mTitle; HelpArticleDialogFragment.instantiateWithAsset(filename, title) .show(ctx.getSupportFragmentManager(), "DIALOG_HELP_ARTICLE"); diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index 08c96f6330..ab55d0f5e5 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -18,6 +18,7 @@ import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; +import net.osmand.AndroidUtils; import net.osmand.IndexConstants; import net.osmand.Location; import net.osmand.PlatformUtil; @@ -282,7 +283,7 @@ public class MapActivityActions implements DialogProvider { ContextMenuAdapter.ItemClickListener listener = new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int resId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int resId, int pos, boolean isChecked, int[] viewCoordinates) { if (resId == R.string.context_menu_item_add_waypoint) { mapActivity.getContextMenu().addWptPt(); } else if (resId == R.string.context_menu_item_edit_waypoint) { @@ -322,7 +323,7 @@ public class MapActivityActions implements DialogProvider { int standardId = item.getTitleId(); ItemClickListener click = item.getItemClickListener(); if (click != null) { - click.onContextMenuClick(listAdapter, standardId, which, false); + click.onContextMenuClick(listAdapter, standardId, which, false, null); } else if (standardId == R.string.context_menu_item_last_intermediate_point) { mapActivity.getContextMenu().addAsLastIntermediate(); } else if (standardId == R.string.context_menu_item_search) { @@ -612,11 +613,11 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.map_dashboard) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_dashboard_open"); MapActivity.clearPrevActivityIntent(); mapActivity.closeDrawer(); - mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.DASHBOARD); + mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.DASHBOARD, viewCoordinates); return true; } }).createItem()); @@ -625,7 +626,7 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_action_flag_dark) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_markers_open"); MapActivity.clearPrevActivityIntent(); MapMarkersDialogFragment.showInstance(mapActivity); @@ -637,10 +638,10 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_action_intermediate) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_waypoints_open"); MapActivity.clearPrevActivityIntent(); - mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.WAYPOINTS); + mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.WAYPOINTS, viewCoordinates); return false; } }).createItem()); @@ -650,7 +651,7 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_action_fav_dark) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_myplaces_open"); Intent newIntent = new Intent(mapActivity, mapActivity.getMyApplication().getAppCustomization() .getFavoritesActivity()); @@ -664,7 +665,7 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_action_search_dark) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_search_open"); mapActivity.showQuickSearch(MapActivity.ShowQuickSearchMode.NEW_IF_EXPIRED, false); return true; @@ -676,7 +677,7 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_action_search_dark) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_legacy_search_open"); Intent newIntent = new Intent(mapActivity, mapActivity.getMyApplication().getAppCustomization() .getSearchActivity()); @@ -697,7 +698,7 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_action_gdirections_dark) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_directions_open"); MapControlsLayer mapControlsLayer = mapActivity.getMapLayers().getMapControlsLayer(); if (mapControlsLayer != null) { @@ -724,10 +725,10 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_action_layers_dark) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_config_map_open"); MapActivity.clearPrevActivityIntent(); - mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.CONFIGURE_MAP); + mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.CONFIGURE_MAP, viewCoordinates); return false; } }).createItem()); @@ -743,7 +744,7 @@ public class MapActivityActions implements DialogProvider { .setTitle(d).setIcon(R.drawable.ic_type_archive) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_download_maps_open"); Intent newIntent = new Intent(mapActivity, mapActivity.getMyApplication().getAppCustomization() .getDownloadActivity()); @@ -758,7 +759,7 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_action_osm_live) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_osm_live_open"); Intent intent = new Intent(mapActivity, OsmLiveActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); @@ -772,7 +773,7 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_action_ruler) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked, int[] viewCoordinates) { MeasurementToolFragment.showInstance(mapActivity.getSupportFragmentManager()); return true; } @@ -782,10 +783,10 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_configure_screen_dark) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_config_screen_open"); MapActivity.clearPrevActivityIntent(); - mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.CONFIGURE_SCREEN); + mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.CONFIGURE_SCREEN, viewCoordinates); return false; } }).createItem()); @@ -794,7 +795,7 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_extension_dark) .setListener(new ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_plugins_open"); Intent newIntent = new Intent(mapActivity, mapActivity.getMyApplication().getAppCustomization() .getPluginsActivity()); @@ -808,7 +809,7 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_action_settings) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_settings_open"); final Intent settings = new Intent(mapActivity, getMyApplication().getAppCustomization() .getSettingsActivity()); @@ -835,7 +836,7 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_action_help) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { app.logEvent(mapActivity, "drawer_help_open"); Intent intent = new Intent(mapActivity, HelpActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); @@ -946,7 +947,7 @@ public class MapActivityActions implements DialogProvider { ContextMenuItem item = contextMenuAdapter.getItem(position); ContextMenuAdapter.ItemClickListener click = item.getItemClickListener(); if (click != null && click.onContextMenuClick(simpleListAdapter, item.getTitleId(), - position, false)) { + position, false, AndroidUtils.getViewLocation(view))) { mapActivity.closeDrawer(); } } diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java index 37b8949691..3a44bbaf61 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java @@ -293,7 +293,7 @@ public class MapActivityLayers { public void onItemClick(AdapterView parent, View view, int position, long id) { ContextMenuItem item = listAdapter.getItem(position); item.setSelected(!item.getSelected()); - item.getItemClickListener().onContextMenuClick(listAdapter, position, position, item.getSelected()); + item.getItemClickListener().onContextMenuClick(listAdapter, position, position, item.getSelected(), null); listAdapter.notifyDataSetChanged(); } }); @@ -416,7 +416,7 @@ public class MapActivityLayers { builder.setListener(new ContextMenuAdapter.ItemClickListener() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, - int itemId, int position, boolean isChecked) { + int itemId, int position, boolean isChecked, int[] viewCoordinates) { ContextMenuItem item = adapter.getItem(position); item.setSelected(isChecked); return false; diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index ae599d4142..55ccbd0e60 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -623,7 +623,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { public void registerLayerContextMenuActions(final OsmandMapTileView mapView, ContextMenuAdapter adapter, final MapActivity mapActivity) { ItemClickListener listener = new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { if (itemId == R.string.layer_recordings) { SHOW_RECORDINGS.set(!SHOW_RECORDINGS.get()); adapter.getItem(pos).setColorRes(SHOW_RECORDINGS.get() ? @@ -653,7 +653,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { recordAudio(latitude, longitude, mapActivity); return true; } @@ -664,7 +664,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { .setListener(new ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { recordVideo(latitude, longitude, mapActivity, false); return true; } @@ -674,7 +674,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { .setIcon(R.drawable.ic_action_photo_dark) .setListener(new ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { takePhoto(latitude, longitude, mapActivity, false, false); return true; } diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashWaypointsFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashWaypointsFragment.java index de22aa7425..9ffa04673a 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashWaypointsFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashWaypointsFragment.java @@ -15,6 +15,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import net.osmand.AndroidUtils; import net.osmand.data.LatLon; import net.osmand.data.PointDescription; import net.osmand.plus.R; @@ -85,7 +86,7 @@ public class DashWaypointsFragment extends DashLocationFragment { @Override public void onClick(View v) { - dashboard.setDashboardVisibility(true, DashboardType.WAYPOINTS); + dashboard.setDashboardVisibility(true, DashboardType.WAYPOINTS, AndroidUtils.getViewLocation(v)); } }); LinearLayout favorites = (LinearLayout) mainView.findViewById(R.id.items); diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java index 13c5472ca6..68b05c9ebb 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java @@ -1,5 +1,9 @@ package net.osmand.plus.dashboard; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; @@ -19,9 +23,6 @@ import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.view.ViewTreeObserver; -import android.view.animation.Animation; -import android.view.animation.Animation.AnimationListener; -import android.view.animation.TranslateAnimation; import android.view.inputmethod.InputMethodManager; import android.widget.AbsListView; import android.widget.AdapterView; @@ -510,7 +511,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis @Override public void onClick(View v) { setDashboardVisibility(true, flatNow ? DashboardType.WAYPOINTS : DashboardType.WAYPOINTS_FLAT, - previousVisibleType, false); + previousVisibleType, false, AndroidUtils.getViewLocation(v)); } }); } @@ -661,7 +662,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis markersSelectionButton.onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { - setDashboardVisibility(true, DashboardType.MAP_MARKERS_SELECTION); + setDashboardVisibility(true, DashboardType.MAP_MARKERS_SELECTION, AndroidUtils.getViewLocation(v)); } }; @@ -759,12 +760,20 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis } public void setDashboardVisibility(boolean visible, DashboardType type) { + setDashboardVisibility(visible, type, null); + } + + public void setDashboardVisibility(boolean visible, DashboardType type, int[] animationCoordinates) { boolean animate = !getMyApplication().getSettings().DO_NOT_USE_ANIMATIONS.get(); - setDashboardVisibility(visible, type, this.visible ? visibleType : null, animate); + setDashboardVisibility(visible, type, this.visible ? visibleType : null, animate, animationCoordinates); } public void setDashboardVisibility(boolean visible, DashboardType type, boolean animation) { - setDashboardVisibility(visible, type, this.visible ? visibleType : null, animation); + setDashboardVisibility(visible, type, animation, null); + } + + public void setDashboardVisibility(boolean visible, DashboardType type, boolean animation, int[] animationCoordinates) { + setDashboardVisibility(visible, type, this.visible ? visibleType : null, animation, animationCoordinates); } public void refreshDashboardFragments() { @@ -776,7 +785,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis return R.color.status_bar_transparent_gradient; } - public void setDashboardVisibility(boolean visible, DashboardType type, DashboardType prevItem, boolean animation) { + public void setDashboardVisibility(boolean visible, DashboardType type, DashboardType prevItem, boolean animation, int[] animationCoordinates) { if (visible == this.visible && type == visibleType) { return; } @@ -868,7 +877,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis updateToolbarActions(); //fabButton.showFloatingActionButton(); - open(dashboardView.findViewById(R.id.animateContent), animation); + open(dashboardView.findViewById(R.id.animateContent), animation, animationCoordinates); updateLocation(true, true, false); // addOrUpdateDashboardFragments(); mapActivity.getRoutingHelper().addListener(this); @@ -1121,7 +1130,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis if (btn != null && btn.getVisibility() == View.VISIBLE) { btn.setChecked(!btn.isChecked()); } else { - if (click.onContextMenuClick(listAdapter, item.getTitleId(), which, false)) { + if (click.onContextMenuClick(listAdapter, item.getTitleId(), which, false, null)) { hideDashboard(); } } @@ -1202,51 +1211,58 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis // To animate view slide out from right to left - private void open(View view, boolean animation) { + private void open(final View view, boolean animation, int[] animationCoordinates) { if (animation) { - TranslateAnimation animate = new TranslateAnimation(-mapActivity.findViewById(R.id.MapHudButtonsOverlay) - .getWidth(), 0, 0, 0); - animate.setDuration(500); - animate.setFillAfter(true); - view.startAnimation(animate); - view.setVisibility(View.VISIBLE); + AnimatorSet set = new AnimatorSet(); + List animators = new ArrayList<>(); + if (animationCoordinates != null) { + int screenHeight = mapActivity.getResources().getDisplayMetrics().heightPixels; + int screenWidth = mapActivity.getResources().getDisplayMetrics().widthPixels; + animators.add(ObjectAnimator.ofFloat(view, View.TRANSLATION_X, animationCoordinates[0] - screenWidth / 2, 0)); + animators.add(ObjectAnimator.ofFloat(view, View.TRANSLATION_Y, animationCoordinates[1] - screenHeight / 2, 0)); + } + animators.add(ObjectAnimator.ofFloat(view, View.ALPHA, 0f, 1f)); + animators.add(ObjectAnimator.ofFloat(view, View.SCALE_X, 0.2f, 1f)); + animators.add(ObjectAnimator.ofFloat(view, View.SCALE_Y, 0.2f, 1f)); + set.setDuration(300).playTogether(animators); + set.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + super.onAnimationStart(animation); + view.setVisibility(View.VISIBLE); + } + }); + set.start(); } else { view.setVisibility(View.VISIBLE); } } - private void hide(View view, boolean animation) { + private void hide(final View view, boolean animation) { if (compassButton != null) { mapActivity.getMapLayers().getMapControlsLayer().restoreCompassButton(nightMode); compassButton = null; } if (!animation) { dashboardView.setVisibility(View.GONE); + view.setVisibility(View.GONE); } else { - TranslateAnimation animate = new TranslateAnimation(0, -mapActivity.findViewById(R.id.MapHudButtonsOverlay) - .getWidth(), 0, 0); - animate.setDuration(500); - animate.setFillAfter(true); - animate.setAnimationListener(new AnimationListener() { - + AnimatorSet set = new AnimatorSet(); + set.setDuration(300).playTogether( + ObjectAnimator.ofFloat(view, View.ALPHA, 1f, 0f), + ObjectAnimator.ofFloat(view, View.TRANSLATION_Y, 0, view.getHeight()) + ); + set.addListener(new AnimatorListenerAdapter() { @Override - public void onAnimationStart(Animation animation) { - - } - - @Override - public void onAnimationRepeat(Animation animation) { - - } - - @Override - public void onAnimationEnd(Animation animation) { + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); dashboardView.setVisibility(View.GONE); + view.setVisibility(View.GONE); + view.setTranslationY(0); } }); - view.startAnimation(animate); + set.start(); } - view.setVisibility(View.GONE); } diff --git a/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java b/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java index 55b6cf6d1a..3113e2cf09 100644 --- a/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java +++ b/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java @@ -61,7 +61,7 @@ public class OsmandDevelopmentPlugin extends OsmandPlugin { .setIcon(R.drawable.ic_action_gabout_dark) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { final Intent mapIntent = new Intent(mapActivity, ContributionVersionActivity.class); mapActivity.startActivityForResult(mapIntent, 0); return true; diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index 9bf8c5d691..95d1d8e61b 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -157,13 +157,13 @@ public class ConfigureMapMenu { adapter.notifyDataSetChanged(); return false; } else { - return onContextMenuClick(adapter, itemId, pos, false); + return onContextMenuClick(adapter, itemId, pos, false, null); } } } @Override - public boolean onContextMenuClick(final ArrayAdapter adapter, int itemId, final int pos, boolean isChecked) { + public boolean onContextMenuClick(final ArrayAdapter adapter, int itemId, final int pos, boolean isChecked, int[] viewCoordinates) { final OsmandSettings settings = ma.getMyApplication().getSettings(); final PoiFiltersHelper poiFiltersHelper = ma.getMyApplication().getPoiFilters(); final ContextMenuItem item = cm.getItem(pos); @@ -331,14 +331,14 @@ public class ConfigureMapMenu { adapter.notifyDataSetChanged(); return false; } else { - return onContextMenuClick(adapter, itemId, position, false); + return onContextMenuClick(adapter, itemId, position, false, null); } } } @Override public boolean onContextMenuClick(final ArrayAdapter ad, int itemId, - final int pos, boolean isChecked) { + final int pos, boolean isChecked, int[] viewCoordinates) { if (transportSelectedInner) { for (int i = 0; i < transportPrefs.size(); i++) { transportPrefs.get(i).set(false); @@ -499,7 +499,7 @@ public class ConfigureMapMenu { .setIcon(R.drawable.ic_map).setListener(new ContextMenuAdapter.ItemClickListener() { @Override public boolean onContextMenuClick(final ArrayAdapter ad, int itemId, - final int pos, boolean isChecked) { + final int pos, boolean isChecked, int[] viewCoordinates) { AlertDialog.Builder bld = new AlertDialog.Builder(activity); bld.setTitle(R.string.renderers); final OsmandApplication app = activity.getMyApplication(); @@ -552,7 +552,7 @@ public class ConfigureMapMenu { .setIcon(getDayNightIcon(activity)).setListener(new ItemClickListener() { @Override public boolean onContextMenuClick(final ArrayAdapter ad, int itemId, - final int pos, boolean isChecked) { + final int pos, boolean isChecked, int[] viewCoordinates) { final OsmandMapTileView view = activity.getMapView(); AlertDialog.Builder bld = new AlertDialog.Builder(view.getContext()); bld.setTitle(R.string.daynight); @@ -588,7 +588,7 @@ public class ConfigureMapMenu { .setIcon(R.drawable.ic_action_map_magnifier).setListener(new ContextMenuAdapter.ItemClickListener() { @Override public boolean onContextMenuClick(final ArrayAdapter ad, int itemId, - final int pos, boolean isChecked) { + final int pos, boolean isChecked, int[] viewCoordinates) { final OsmandMapTileView view = activity.getMapView(); final OsmandSettings.OsmandPreference mapDensity = view.getSettings().MAP_DENSITY; final AlertDialog.Builder bld = new AlertDialog.Builder(view.getContext()); @@ -651,7 +651,7 @@ public class ConfigureMapMenu { .setIcon(R.drawable.ic_action_map_text_size).setListener(new ContextMenuAdapter.ItemClickListener() { @Override public boolean onContextMenuClick(final ArrayAdapter ad, int itemId, - final int pos, boolean isChecked) { + final int pos, boolean isChecked, int[] viewCoordinates) { final OsmandMapTileView view = activity.getMapView(); AlertDialog.Builder b = new AlertDialog.Builder(view.getContext()); // test old descr as title @@ -690,7 +690,7 @@ public class ConfigureMapMenu { .setListener(new ContextMenuAdapter.ItemClickListener() { @Override public boolean onContextMenuClick(final ArrayAdapter ad, int itemId, - final int pos, boolean isChecked) { + final int pos, boolean isChecked, int[] viewCoordinates) { final OsmandMapTileView view = activity.getMapView(); final AlertDialog.Builder b = new AlertDialog.Builder(view.getContext()); @@ -889,7 +889,7 @@ public class ConfigureMapMenu { final ItemClickListener clickListener = new ContextMenuAdapter.ItemClickListener() { @Override public boolean onContextMenuClick(ArrayAdapter a, int itemId, int pos, - boolean isChecked) { + boolean isChecked, int[] viewCoordinates) { if (!isChecked && !useDescription) { if (defaultSettings != null) { defaultSettings.set(""); @@ -939,8 +939,8 @@ public class ConfigureMapMenu { } else { builder.setListener(new OnRowItemClick() { @Override - public boolean onContextMenuClick(ArrayAdapter a, int itemId, int pos, boolean isChecked) { - return clickListener.onContextMenuClick(a, itemId, pos, isChecked); + public boolean onContextMenuClick(ArrayAdapter a, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { + return clickListener.onContextMenuClick(a, itemId, pos, isChecked, null); } @Override @@ -1210,7 +1210,7 @@ public class ConfigureMapMenu { .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { pref.set(!pref.get()); refreshMapComplete(activity); return false; @@ -1233,7 +1233,7 @@ public class ConfigureMapMenu { @Override public boolean onContextMenuClick(final ArrayAdapter ad, - final int itemId, final int pos, boolean isChecked) { + final int itemId, final int pos, boolean isChecked, int[] viewCoordinates) { AlertDialog.Builder b = new AlertDialog.Builder(view.getContext()); // test old descr as title b.setTitle(propertyDescr); diff --git a/OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java index 411f0a140c..92e154210c 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java @@ -99,7 +99,7 @@ public class RasterMapMenu { @Override public boolean onContextMenuClick(final ArrayAdapter adapter, - final int itemId, final int pos, final boolean isChecked) { + final int itemId, final int pos, final boolean isChecked, int[] viewCoordinates) { if (itemId == toggleActionStringId) { app.runInUIThread(new Runnable() { @Override diff --git a/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java b/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java index f346b95d0c..c4d2b65033 100644 --- a/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java +++ b/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java @@ -658,7 +658,7 @@ public class DistanceCalculatorPlugin extends OsmandPlugin { ContextMenuAdapter.ItemClickListener listener = new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { if (itemId == R.string.delete_point) { for (int i = 0; i < measurementPoints.size(); i++) { Iterator it = measurementPoints.get(i).iterator(); diff --git a/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java b/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java index 577fa38c67..8dae91467b 100644 --- a/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java @@ -166,7 +166,7 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment implement ContextMenuItem item = adapter.getItem(which); if (item.getItemClickListener() != null) { item.getItemClickListener().onContextMenuClick(null, - item.getTitleId(), which, false); + item.getTitleId(), which, false, null); } } @@ -178,7 +178,7 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment implement private void basicFileOperation(final LocalIndexInfo info, ContextMenuAdapter adapter) { ItemClickListener listener = new ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int resId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int resId, int pos, boolean isChecked, int[] viewCoordinates) { return performBasicOperation(resId, info); } }; @@ -619,7 +619,7 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment implement ItemClickListener listener = new ContextMenuAdapter.ItemClickListener() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, - int itemId, int pos, boolean isChecked) { + int itemId, int pos, boolean isChecked, int[] viewCoordinates) { localOptionsMenu(itemId); return true; } @@ -681,7 +681,7 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment implement for (int i = 0; i < optionsMenuAdapter.length(); i++) { ContextMenuItem contextMenuItem = optionsMenuAdapter.getItem(i); if (itemId == contextMenuItem.getTitleId()) { - contextMenuItem.getItemClickListener().onContextMenuClick(null, itemId, i, false); + contextMenuItem.getItemClickListener().onContextMenuClick(null, itemId, i, false, null); return true; } } diff --git a/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java b/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java index fc2c8a977e..04424812f3 100644 --- a/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java +++ b/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java @@ -14,6 +14,7 @@ import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CompoundButton; +import net.osmand.AndroidUtils; import net.osmand.map.ITileSource; import net.osmand.map.TileSourceManager; import net.osmand.plus.ApplicationMode; @@ -150,14 +151,14 @@ public class MapillaryPlugin extends OsmandPlugin { @Override public boolean onRowItemClick(ArrayAdapter adapter, View view, int itemId, int position) { if (itemId == R.string.mapillary) { - mapActivity.getDashboard().setDashboardVisibility(true, DashboardOnMap.DashboardType.MAPILLARY); + mapActivity.getDashboard().setDashboardVisibility(true, DashboardOnMap.DashboardType.MAPILLARY, AndroidUtils.getViewLocation(view)); return false; } return true; } @Override - public boolean onContextMenuClick(final ArrayAdapter adapter, int itemId, final int pos, boolean isChecked) { + public boolean onContextMenuClick(final ArrayAdapter adapter, int itemId, final int pos, boolean isChecked, int[] viewCoordinates) { final OsmandSettings settings = mapActivity.getMyApplication().getSettings(); if (itemId == R.string.mapillary) { OsmandMapTileView mapView = mapActivity.getMapView(); diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index f2f09c3519..d50a6983ca 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -450,7 +450,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { optionsMenuAdapter = new ContextMenuAdapter(); ItemClickListener listener = new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, final int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, final int itemId, int pos, boolean isChecked, int[] viewCoordinates) { if (itemId == R.string.local_index_mi_reload) { reloadTracks(); } else if (itemId == R.string.shared_string_show_on_map) { @@ -521,7 +521,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { for (int i = 0; i < optionsMenuAdapter.length(); i++) { ContextMenuItem contextMenuItem = optionsMenuAdapter.getItem(i); if (itemId == contextMenuItem.getTitleId()) { - contextMenuItem.getItemClickListener().onContextMenuClick(null, itemId, i, false); + contextMenuItem.getItemClickListener().onContextMenuClick(null, itemId, i, false, null); return true; } } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java index f2ac87d344..7c3aa390ab 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java @@ -173,7 +173,7 @@ public class OsmEditingPlugin extends OsmandPlugin { final Object selectedObj) { ContextMenuAdapter.ItemClickListener listener = new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int resId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int resId, int pos, boolean isChecked, int[] viewCoordinates) { if (resId == R.string.context_menu_item_create_poi) { //getPoiActions(mapActivity).showCreateDialog(latitude, longitude); EditPoiDialogFragment editPoiDialogFragment = @@ -273,7 +273,7 @@ public class OsmEditingPlugin extends OsmandPlugin { .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { if (itemId == R.string.layer_osm_bugs) { OsmandSettings.OsmandPreference showOsmBugs = settings.SHOW_OSM_BUGS; showOsmBugs.set(isChecked); @@ -303,7 +303,7 @@ public class OsmEditingPlugin extends OsmandPlugin { .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { sendGPXFiles(la, (AvailableGPXFragment) fragment, (GpxInfo) info); return true; } @@ -321,7 +321,7 @@ public class OsmEditingPlugin extends OsmandPlugin { .setListener(new ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { f.openSelectionMode(R.string.local_index_mi_upload_gpx, R.drawable.ic_action_export, R.drawable.ic_action_export, new OnClickListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java b/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java index f1975651ee..aefb249d3c 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java +++ b/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java @@ -282,7 +282,7 @@ public class OsMoPlugin extends OsmandPlugin implements OsMoReactor { .setIcon(R.drawable.ic_osmo_dark) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { Intent intent = new Intent(mapActivity, OsMoGroupsActivity.class); mapActivity.startActivity(intent); return true; diff --git a/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java b/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java index 1079cf1980..65017e4121 100644 --- a/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java +++ b/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java @@ -220,7 +220,7 @@ public class ParkingPositionPlugin extends OsmandPlugin { ItemClickListener addListener = new ItemClickListener() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int resId, - int pos, boolean isChecked) { + int pos, boolean isChecked, int[] viewCoordinates) { if (resId == R.string.context_menu_item_add_parking_point) { showAddParkingDialog(mapActivity, latitude, longitude); } diff --git a/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java b/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java index 59b321ac4b..cd868a8e67 100644 --- a/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java +++ b/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java @@ -15,6 +15,7 @@ import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast; +import net.osmand.AndroidUtils; import net.osmand.IndexConstants; import net.osmand.ResultMatcher; import net.osmand.StateChangedListener; @@ -241,18 +242,19 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin { ContextMenuAdapter.ItemClickListener listener = new ContextMenuAdapter.OnRowItemClick() { @Override public boolean onRowItemClick(ArrayAdapter adapter, View view, int itemId, int position) { + int[] viewCoordinates = AndroidUtils.getViewLocation(view); if (itemId == R.string.layer_overlay) { - mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.OVERLAY_MAP); + mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.OVERLAY_MAP, viewCoordinates); return false; } else if (itemId == R.string.layer_underlay) { - mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.UNDERLAY_MAP); + mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.UNDERLAY_MAP, viewCoordinates); return false; } return true; } @Override - public boolean onContextMenuClick(final ArrayAdapter adapter, int itemId, final int pos, boolean isChecked) { + public boolean onContextMenuClick(final ArrayAdapter adapter, int itemId, final int pos, boolean isChecked, int[] viewCoordinates) { final OsmandSettings settings = mapActivity.getMyApplication().getSettings(); switch (itemId) { case R.string.layer_overlay: @@ -346,7 +348,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin { if (mapView.getMainLayer() instanceof MapTileLayer) { ItemClickListener listener = new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int resId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int resId, int pos, boolean isChecked, int[] viewCoordinates) { if (resId == R.string.context_menu_item_update_map) { mapActivity.getMapActions().reloadTile(mapView.getZoom(), latitude, longitude); } else if (resId == R.string.shared_string_download_map) { diff --git a/OsmAnd/src/net/osmand/plus/routepointsnavigation/RoutePointsLayer.java b/OsmAnd/src/net/osmand/plus/routepointsnavigation/RoutePointsLayer.java index c8ac99da18..13b8620a13 100644 --- a/OsmAnd/src/net/osmand/plus/routepointsnavigation/RoutePointsLayer.java +++ b/OsmAnd/src/net/osmand/plus/routepointsnavigation/RoutePointsLayer.java @@ -88,7 +88,7 @@ public class RoutePointsLayer extends OsmandMapLayer implements ContextMenuLaye final GPXUtilities.WptPt point = (GPXUtilities.WptPt) o; ContextMenuAdapter.ItemClickListener listener = new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { if (itemId == R.string.mark_as_not_visited){ plugin.getCurrentRoute().markPoint(point,false); plugin.saveCurrentRoute(); diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/ContourLinesMenu.java b/OsmAnd/src/net/osmand/plus/srtmplugin/ContourLinesMenu.java index d09832bb7a..f7e5099b9f 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/ContourLinesMenu.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/ContourLinesMenu.java @@ -96,7 +96,7 @@ public class ContourLinesMenu { @Override public boolean onContextMenuClick(final ArrayAdapter adapter, - final int itemId, final int pos, final boolean isChecked) { + final int itemId, final int pos, final boolean isChecked, int[] viewCoordinates) { if (itemId == toggleActionStringId) { app.runInUIThread(new Runnable() { @Override @@ -268,7 +268,7 @@ public class ContourLinesMenu { .setIcon(DownloadActivityType.SRTM_COUNTRY_FILE.getIconResource()) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked, int[] viewCoordinates) { ContextMenuItem item = adapter.getItem(position); if (downloadThread.isDownloading(indexItem)) { downloadThread.cancelDownload(indexItem); diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/HillshadeMenu.java b/OsmAnd/src/net/osmand/plus/srtmplugin/HillshadeMenu.java index 8935f5d161..2a1979fefc 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/HillshadeMenu.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/HillshadeMenu.java @@ -56,7 +56,7 @@ public class HillshadeMenu { @Override public boolean onContextMenuClick(final ArrayAdapter adapter, - final int itemId, final int pos, final boolean isChecked) { + final int itemId, final int pos, final boolean isChecked, int[] viewCoordinates) { if (itemId == toggleActionStringId) { app.runInUIThread(new Runnable() { @Override @@ -146,7 +146,7 @@ public class HillshadeMenu { .setIcon(DownloadActivityType.HILLSHADE_FILE.getIconResource()) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked, int[] viewCoordinates) { ContextMenuItem item = adapter.getItem(position); if (downloadThread.isDownloading(indexItem)) { downloadThread.cancelDownload(indexItem); diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java index d6e24a5c4b..832be4c298 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java @@ -7,6 +7,7 @@ import android.support.v7.app.AlertDialog; import android.view.View; import android.widget.ArrayAdapter; +import net.osmand.AndroidUtils; import net.osmand.plus.ApplicationMode; import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.ContextMenuItem; @@ -129,11 +130,12 @@ public class SRTMPlugin extends OsmandPlugin { @Override public boolean onRowItemClick(ArrayAdapter adapter, View view, int itemId, int position) { + int[] viewCoordinates = AndroidUtils.getViewLocation(view); if (itemId == R.string.srtm_plugin_name) { - mapActivity.getDashboard().setDashboardVisibility(true, DashboardOnMap.DashboardType.CONTOUR_LINES); + mapActivity.getDashboard().setDashboardVisibility(true, DashboardOnMap.DashboardType.CONTOUR_LINES, viewCoordinates); return false; } else if (itemId == R.string.layer_hillshade) { - mapActivity.getDashboard().setDashboardVisibility(true, DashboardOnMap.DashboardType.HILLSHADE); + mapActivity.getDashboard().setDashboardVisibility(true, DashboardOnMap.DashboardType.HILLSHADE, viewCoordinates); return false; } return true; @@ -143,7 +145,8 @@ public class SRTMPlugin extends OsmandPlugin { public boolean onContextMenuClick(final ArrayAdapter adapter, final int itemId, final int position, - final boolean isChecked) { + final boolean isChecked, + final int[] viewCoordinates) { if (itemId == R.string.srtm_plugin_name) { toggleContourLines(mapActivity, isChecked, new Runnable() { @Override diff --git a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java index ac4aae0893..87aa4c7bd9 100644 --- a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java @@ -242,7 +242,7 @@ public class ContextMenuLayer extends OsmandMapLayer { if (menu.hasHiddenBottomInfo()) { ContextMenuAdapter.ItemClickListener listener = new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { menu.openMenuFullScreen(); return true; } @@ -256,7 +256,7 @@ public class ContextMenuLayer extends OsmandMapLayer { if (isObjectMoveable(o)) { ContextMenuAdapter.ItemClickListener listener = new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { RotatedTileBox tileBox = activity.getMapView().getCurrentRotatedTileBox(); enterMovingMode(tileBox); return true; diff --git a/OsmAnd/src/net/osmand/plus/views/ImpassableRoadsLayer.java b/OsmAnd/src/net/osmand/plus/views/ImpassableRoadsLayer.java index 9fd7c62e70..452fbf5181 100644 --- a/OsmAnd/src/net/osmand/plus/views/ImpassableRoadsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/ImpassableRoadsLayer.java @@ -218,7 +218,7 @@ public class ImpassableRoadsLayer extends OsmandMapLayer implements ContextMenuAdapter.ItemClickListener listener = new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { if (itemId == R.string.avoid_road) { activity.getMyApplication().getAvoidSpecificRoads().addImpassableRoad( activity, latLon, false, null, false); diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java index cbc21d5c21..7eb6ad64e1 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java @@ -249,7 +249,7 @@ public class MapControlsLayer extends OsmandMapLayer { @Override public void onClick(View v) { MapActivity.clearPrevActivityIntent(); - mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.CONFIGURE_MAP); + mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.CONFIGURE_MAP, AndroidUtils.getViewLocation(v)); } }); @@ -410,7 +410,7 @@ public class MapControlsLayer extends OsmandMapLayer { public void onClick(View v) { MapActivity.clearPrevActivityIntent(); if (dash) { - mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.DASHBOARD); + mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.DASHBOARD, AndroidUtils.getViewLocation(v)); } else { mapActivity.openDrawer(); } diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java index 831714dc50..18bc20a05a 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java @@ -10,6 +10,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import net.osmand.AndroidUtils; import net.osmand.Location; import net.osmand.binary.RouteDataObject; import net.osmand.data.LatLon; @@ -881,7 +882,7 @@ public class MapInfoWidgetsFactory { all.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { - map.getDashboard().setDashboardVisibility(true, DashboardType.WAYPOINTS); + map.getDashboard().setDashboardVisibility(true, DashboardType.WAYPOINTS, AndroidUtils.getViewLocation(view)); } }); remove.setOnClickListener(new OnClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java index dc22e5394c..d3e66e0994 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java @@ -326,7 +326,7 @@ public class MapWidgetRegistry { .setDescription(settings.MAP_MARKERS_MODE.get().toHumanString(map)) .setListener(new ContextMenuAdapter.ItemClickListener() { @Override - public boolean onContextMenuClick(final ArrayAdapter adapter, int itemId, final int position, boolean isChecked) { + public boolean onContextMenuClick(final ArrayAdapter adapter, int itemId, final int position, boolean isChecked, int[] viewCoordinates) { DirectionIndicationDialogFragment fragment = new DirectionIndicationDialogFragment(); fragment.setListener(new DirectionIndicationDialogFragment.DirectionIndicationFragmentListener() { @Override @@ -418,7 +418,7 @@ public class MapWidgetRegistry { .setSecondaryIcon( R.drawable.ic_action_additional_option) .setListener(new ContextMenuAdapter.OnRowItemClick() { @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked) { + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked, int[] viewCoordinates) { setVisibility(adapter, position, isChecked); return false; } @@ -557,7 +557,7 @@ public class MapWidgetRegistry { @Override public boolean onContextMenuClick(ArrayAdapter a, - int itemId, int pos, boolean isChecked) { + int itemId, int pos, boolean isChecked, int[] viewCoordinates) { setVisibility(a, pos, isChecked, false); return false; } @@ -780,7 +780,7 @@ public class MapWidgetRegistry { @Override public boolean onContextMenuClick(ArrayAdapter a, - int itemId, int pos, boolean isChecked) { + int itemId, int pos, boolean isChecked, int[] viewCoordinates) { pref.set(!pref.get()); map.updateApplicationModeSettings(); a.notifyDataSetChanged(); From 1ee989c3bec0d296ba168df5a0da7a239c11bc8b Mon Sep 17 00:00:00 2001 From: Alexander Sytnyk Date: Tue, 21 Nov 2017 18:28:06 +0200 Subject: [PATCH 17/17] Rename method --- .../src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java | 2 +- .../src/net/osmand/plus/audionotes/adapters/NotesAdapter.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index 116fa8cd2b..76e31beaf6 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -458,7 +458,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { } - public String getNewSmallDescription(Context ctx) { + public String getExtendedDescription(Context ctx) { DateFormat dateFormat = android.text.format.DateFormat.getMediumDateFormat(ctx); String date = dateFormat.format(file.lastModified()); int size = (int) ((file.length() + 512) >> 10); diff --git a/OsmAnd/src/net/osmand/plus/audionotes/adapters/NotesAdapter.java b/OsmAnd/src/net/osmand/plus/audionotes/adapters/NotesAdapter.java index b1f8e06c7a..9fdd5a307c 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/adapters/NotesAdapter.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/adapters/NotesAdapter.java @@ -195,7 +195,7 @@ public class NotesAdapter extends ArrayAdapter { holder.description.setText(R.string.av_locations_descr); } else { holder.title.setText(recording.getName(app, true)); - holder.description.setText(recording.getNewSmallDescription(app)); + holder.description.setText(recording.getExtendedDescription(app)); int iconRes = recording.isAudio() ? R.drawable.ic_type_audio : (recording.isVideo() ? R.drawable.ic_type_video : R.drawable.ic_type_img); int colorRes = app.getSettings().isLightContent() ? R.color.icon_color : R.color.ctx_menu_info_text_dark;