From b773f0c9d3c840ed5b94c25f156a6cfe7b5f74a9 Mon Sep 17 00:00:00 2001 From: josep constanti Date: Thu, 17 Sep 2020 20:08:10 +0000 Subject: [PATCH 01/80] Translated using Weblate (Catalan) Currently translated at 96.0% (3347 of 3484 strings) --- OsmAnd/res/values-ca/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index 4ae94a57c7..ce8fda7ac6 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -3806,7 +3806,7 @@ Abasta l\'àrea: %1$s x %2$s Afegeix a un fitxer de traces Traces Enregistra el trajecte a un fitxer GPX - Navegua des de la meva ubicació fins a la traça + Navega des de la meva ubicació fins a la traça Afegeix una adreça Nom del fitxer REC @@ -3815,4 +3815,8 @@ Abasta l\'àrea: %1$s x %2$s Traça simplificada Només es desarà la línia del trajecte, les fites s\'esborraran. %s arxius de traces seleccionats + Desa en un nou fitxer de traces + Traces + Importa o enregistra fitxers de traces + Trieu un fitxer de traces a seguir o importeu-lo des del dispositiu. \ No newline at end of file From 74cc27190a151fea919673bb0f307e2276820eed Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 18 Sep 2020 20:41:45 +0000 Subject: [PATCH 02/80] Translated using Weblate (German) Currently translated at 99.9% (3483 of 3484 strings) --- OsmAnd/res/values-de/strings.xml | 35 +++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 730f97c489..ba12de339b 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -3780,7 +3780,7 @@ Blitzer-Warnungen sind in einigen Ländern gesetzlich verboten. Peilung %1$s gelöscht - Ein Neustart ist erforderlich, um Blitzerdaten vollständig zu löschen. + Starten Sie die Anwendung neu, um alle Blitzerdaten zu löschen. Deinstallieren und neu starten In einigen Ländern oder Regionen ist die Verwendung von Blitzer-Warneinrichtungen gesetzlich verboten. \n @@ -3793,26 +3793,26 @@ Längenbegrenzung Diese App hat keine Informationen zu Blitzern. Inline-Skates - Aktivieren Sie die Steuerung der Zoomstufe der Karte mit den Lautstärketasten des Geräts. + Steuern Sie die Zoomstufen der Karte mit den Lautstärketasten des Geräts. Lautstärketasten als Zoom Bitte geben Sie Ihre Fahrzeuglänge an. Für lange Fahrzeuge könnten einige Streckenabschnitte nicht befahrbar sein. - Nächsten Zielpunkt löschen + Nächstgelegenen Zielpunkt löschen Bitte geben Sie einen Namen für das Profil an Der aktuelle Punkt auf der Route wird gelöscht. Wenn es das Ziel ist, wird die Navigation gestoppt. Wikipedia-Karten herunterladen - Informationen über Sehenswürdigkeiten erhalten Sie bei Wikipedia. Es ist Ihr Offline-Wegweiser für die Hosentasche - aktivieren Sie einfach das Wikipedia-Modul und genießen Sie Artikel über Objekte in Ihrer Umgebung. + Info über Sehenswürdigkeiten erhalten Sie bei Wikipedia. Es ist Ihr Offline-Wegweiser für die Hosentasche - aktivieren Sie einfach das Wikipedia-Modul und genießen Sie Artikel über Objekte in Ihrer Umgebung. Enduro Motorroller Rollstuhl Go-Kart Geschlossene OSM-Notiz Rollstuhl vorwärts - Zum Fortfahren müssen die Arbeitstage gesetzt sein + Zum Fortfahren bitte Arbeitstage auswählen Route zwischen Punkten Eine Route planen Zu einem Track hinzufügen Der hinzugefügte Punkt wird auf der Karte nicht sichtbar sein, da die ausgewählte Gruppe ausgeblendet ist, Sie können ihn in \"%s\" finden. - Start-Ziel-Symbole anzeigen + Start- und Ziel-Symbole anzeigen Breite auswählen Wählen Sie das Intervall, in dem Markierungen mit Abstand oder Zeit auf dem Track angezeigt werden. Wählen Sie die gewünschte Aufteilungsoption: nach Zeit oder nach Entfernung. @@ -3831,7 +3831,7 @@ Route umkehren Der gesamte Track wird mit dem ausgewählten Profil neu berechnet. Nur das nächste Segment wird mit dem ausgewählten Profil neu berechnet. - Wählen Sie, wie Punkte mit einer geraden Linie verbunden werden sollen, oder berechnen Sie eine Route zwischen ihnen mit dem ausgewählten Profil. + Wählen Sie, wie Punkte verbunden werden sollen; durch eine gerade Linie, oder eine berechnete Route zwischen ihnen, wie unten angegeben. Ganzer Track Nächstes Segment Navigationsprofil @@ -3841,7 +3841,7 @@ Adresse hinzufügen Adresse eingeben Bilder auf Straßenebene - Sind Sie sicher, die Routenplanung ohne speichern beenden zu wollen\? Sie werden alle Änderungen verlieren. + Sind Sie sicher, dass Sie alle Änderungen an der geplanten Route verwerfen wollen, indem Sie sie schließen\? Routentyp davor ändern Routentyp danach ändern Davor trimmen @@ -3854,7 +3854,7 @@ Track-Wegpunkt hinzufügen Streckenaufzeichnung Track folgen - Von meinem Standort zum Track navigieren + Von meiner Position zum Track navigieren Startpunkt des Tracks Auf Straßen einrasten Vereinfachter Track @@ -3873,7 +3873,7 @@ wird gespeichert Während der Navigation automatisch Track aufzeichnen Track Route - Track Datei zum Folgen auswählen, oder importieren. + Track Datei zum Folgen auswählen, oder vom Gerät importieren. Die GPX-Aufzeichnung wird angehalten, wenn OsmAnd beendet wird (über „zuletzt verwendete Apps“). (Die Hintergrunddienst-Anzeige verschwindet aus der Android-Benachrichtigungsleiste.) Aufzeichnungsintervall für die generelle Track-Aufzeichnung festlegen (via Schaltfläche \'GPX\' auf dem Kartenbildschirm). Um diese Option nutzen zu können, muss OsmAnd den Track auf die Straßen der Karte einrasten. @@ -3892,4 +3892,19 @@ Track-Punkt, zu dem navigiert werden soll Nächstgelegener Punkt Wiederholen + • Aktualisierte Funktion zum Planen einer Route: erlaubt die Verwendung verschiedener Navigationstypen pro Segment und die Einbeziehung von Tracks +\n +\n • Neues Menü zum Erscheinungsbild von Tracks: Wählen Sie Farbe, Dicke, Richtungspfeile, Start-/Ziel-Symbole +\n +\n • Verbesserte Darstellung von Fahrradknotenpunkten. +\n +\n • Tracks sind jetzt antippbar und haben ein Kontextmenü mit grundlegenden Informationen. +\n +\n • Verbesserte Suchalgorithmen +\n +\n • Verbesserte Trackverfolgungsoptionen in der Navigation +\n +\n • Probleme beim Import/Export von Profileinstellungen behoben +\n +\n \ No newline at end of file From 6cedbafcb514c19d401f3df06449393f2b53897f Mon Sep 17 00:00:00 2001 From: Deelite <556xxy@gmail.com> Date: Thu, 17 Sep 2020 23:24:39 +0000 Subject: [PATCH 03/80] Translated using Weblate (Russian) Currently translated at 99.9% (3483 of 3484 strings) --- OsmAnd/res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 211819502e..6d48ebb5b2 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -3834,7 +3834,7 @@ Выберите способ соединения точек прямой линией или рассчитайте маршрут между ними, как указано ниже. При обратном направлении Все изменения будут утеряны. Закрыть план маршрута\? - Съёмка уличного уровня + Уличная фотосъёмка Сохранить как новый файл трека Добавить в файл трека Треки From adc46f7cd698158a8b2922835cffab2644ca9449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sat, 19 Sep 2020 00:49:01 +0000 Subject: [PATCH 04/80] Translated using Weblate (Turkish) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-tr/strings.xml | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index 1498c8591c..c48d2b66f2 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -1440,7 +1440,7 @@ Değişiklik listesi kapatılıyor… Düğüm işleniyor … Yerel/İngilizce isimler dönüştürülüyor… - Son Osmand çalıştırmak çöktü. Log dosya {0} olduğunu. Sorunu bildirmek ve günlük dosyasını ekleyiniz. + Son OsmAnd çalıştırması çöktü. Günlük kaydı dosyası {0} konumunda. Lütfen sorunu bildirin ve günlük kaydı dosyasını ekleyin. OSM gönderimleri için gereken OpenStreetMap.org (OSM) ayarlarını belirtin. Sayfaya kiremit Çalışma saatleri biçimi değiştirilemez. @@ -3827,4 +3827,33 @@ Sadece seçili bölüm, seçilen profil kullanılarak yeniden hesaplanacaktır. Sonraki tüm bölümler, seçilen profil kullanılarak yeniden hesaplanacaktır. Önceki tüm bölümler, seçilen profil kullanılarak yeniden hesaplanacaktır. + Yol güzergahı + Yolu takip et + Takip edilecek yol dosyasını seçin + Takip etmek için yol dosyasını seçin veya cihazınızdan içe aktarın. + Başka bir yol seç + Konumumdan yola git + Gezinilecek yolun noktası + İzlenen yolun başlangıcı + Yollara ekle + Öncesinde kırp + Sonrasında kırp + Öncesinde güzergah türünü değiştir + Sonrasında güzergah türünü değiştir + Basitleştirilmiş yol + • Güzergah planlama işlevi güncellendi: her bölüm için farklı navigasyon türlerinin kullanılmasına ve izlenen yolların dahil edilmesine izin veriliyor +\n +\n • İzlenen yollar için yeni görünüm menüsü: renk ve kalınlık seçimi, yön oklarının gösterilmesi, başlangıç/bitiş simgeleri +\n +\n • Bisiklet düğümlerinin görünürlüğü iyileştirildi. +\n +\n • İzlenen yollar artık dokunulabilir, temel bilgiler bulunan içerik menüsüne sahip. +\n +\n • Arama algoritmaları iyileştirildi +\n +\n • Navigasyonda yol izleme seçenekleri iyileştirildi +\n +\n • Profil ayarlarının içe/dışa aktarımıyla ilgili sorunlar düzeltildi +\n +\n \ No newline at end of file From 42ab9e7e1e9b2cbdb33416b82f8ff038c899571c Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Fri, 18 Sep 2020 21:18:24 +0000 Subject: [PATCH 05/80] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-uk/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 678d5dfc72..dcd577c052 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -257,7 +257,7 @@ Новий пошук Виберіть розмір шрифту для позначень на мапі: Розмір тексту - Налагоджувальні відомості про відмалювання + Відомості для зневадження про відмальовування Відображає плідність відмалювання. Розпаковуються нові дані… Вибрано мережеву службу навігації, але ви не підключені до Інтернету. @@ -1687,7 +1687,7 @@ Запис подорожі Навігація Працює у фоновому режимі - Відомості по закладці + Відомості про закладки Зупинити симуляцію Вашої позиції. Пошук адреси Місця @@ -3887,7 +3887,7 @@ \n \n• Покращено оглядовість велосипедних вузлів \n -\n• На треки тепер можна натискати, є контекстне меню з основною інформацією. +\n• На треки тепер можна натискати, є контекстне меню з основними подробицями. \n \n• Вдосконалено алгоритми пошуку \n From 21cced5759ea5185dc32ef1d4e60c5ab0fe7bb72 Mon Sep 17 00:00:00 2001 From: ovl-1 Date: Fri, 18 Sep 2020 12:10:10 +0000 Subject: [PATCH 06/80] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 15.4% (539 of 3484 strings) --- OsmAnd/res/values-nb/strings.xml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml index e52dad60d0..683e185d58 100644 --- a/OsmAnd/res/values-nb/strings.xml +++ b/OsmAnd/res/values-nb/strings.xml @@ -3705,14 +3705,12 @@ Velg en sporfil for åpning. Snu rute Overskriv spor - Hele sporet vil bli omregnet ved bruk av valgt profil. - Velg hvordan punkter skal knyttes sammen, i rett linje, eller utregnet rute mellom dem med valgt profil. - Kun neste segment vil bli omregnet ved bruk av valgt profil. + Hele sporet blir beregnet på nytt med den valgte profilen. + Velg hvordan punkter skal forbindes; med en rett linje, eller beregn en rute mellom dem som spesifisert nedenfor. + Kun det neste segmentet blir beregnet på nytt med den valgte profilen. Hele sporet Neste segment - For å bruke dette valget må OsmAnd rute sporet ditt til kartveiene. -\n -\n På neste steg vil du måtte velge navigasjonsprofil for oppdagelse av tillatte veier, og terskeldistanse for å anslå sporet ditt til veier. + Deretter juster ditt spor til nærmeste tillatte vei med en av navigeringsprofilene for å bruke dette alternativet. Velg en sporfil å legge til det nye segmentet i. Lagre som nytt spor Opprett ny rute @@ -3739,11 +3737,11 @@ Alle påfølgende segmenter Alle foregående segmenter Forrige segment - Kun valgt segment vil bli utregnet på ny i valgt profil. - Alle påfølgende segmenter vil bli utregnet på ny i valgt profil. - Alle tidligere segmenter vil bli utregnet på ny i valgt profil. + Kun det valgte segmentet blir beregnet på nytt med den valgte profilen. + Alle påfølgende segmenter blir beregnet på nytt med den valgte profilen. + Alle tidligere segmenter blir beregnet på nytt med den valgte profilen. Åpne lagret spor har blitt lagret Legg til minst to punkter. - Gjenta + Gjør om \ No newline at end of file From 6365cae638834ed9c79517d477eecaacff216f87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1ns?= Date: Fri, 18 Sep 2020 00:00:47 +0000 Subject: [PATCH 07/80] Translated using Weblate (Galician) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-gl/strings.xml | 99 +++++++++++++++++++++++++++----- 1 file changed, 86 insertions(+), 13 deletions(-) diff --git a/OsmAnd/res/values-gl/strings.xml b/OsmAnd/res/values-gl/strings.xml index 9b411b0d7f..c5e53fd258 100644 --- a/OsmAnd/res/values-gl/strings.xml +++ b/OsmAnd/res/values-gl/strings.xml @@ -13,7 +13,7 @@ Favorito renomeado a \'%1$s\' para gardar a cadea que contén emoticonas nun ficheiro. Imprimir o itinerario Favorito especificado con nome duplicado - Lomba + Redutor de velocidade Aviso do tráfico Avisos de tráfico O servizo en segundo plano do OsmAnd aínda está en execución. Desexas detelo tamén\? @@ -1878,8 +1878,8 @@ Lon %2$s Colla a %1$d saída e siga Enviar PDI Cálculo da ruta - Aínda non tes ningún ficheiro GPX - Tamén podes engadir ficheiros GPX ó cartafol + Aínda non tes ningún ficheiro de pistas + Tamén podes engadir ficheiros de pistas ó cartafol Engadir máis… Aparencia Activar a gravación rápida @@ -1931,7 +1931,7 @@ Lon %2$s Localización non atopada Non hai conexión á Internet Espazo baleiro - Almacenamento dos datos do OsmAnd (para mapas, ficheiros GPX, etc.): %1$s. + Almacenamento dos datos do OsmAnd (para mapas, ficheiros de pistas, etc.): %1$s. Fornecer permiso Permitir acceso á localización Obtén indicacións e descobre lugares novos sen conexión á Internet @@ -2901,10 +2901,10 @@ Lon %2$s Trocar Amosar máis Pistas amosadas - Amosar/agochar pistas GPX - Un botón que amosa ou agocha as pistas GPX escollidas no mapa. - Agochar pistas GPX - Amosar pistas GPX + Amosar/agochar pistas + Un botón que amosa ou agocha as pistas escollidas no mapa. + Agochar pistas + Amosar pistas %1$d transferencias Engadir orixe e destino Engadir punto de comezo @@ -3804,7 +3804,7 @@ Lon %2$s \nEscolle %2$s. Todos os datos relacionados de radares de velocidade: alertas, notificacións e PDI serán eliminados até que o OsmAnd sexa reinstalado de xeito completo. Manter activo Desinstalar - É necesario reiniciar para eliminar de xeito completo os datos do radar de velocidade. + Reiniciar para eliminar todos os datos do radar de velocidade. As alertas de radares de velocidade nalgúns países están prohibidas por lei. Levando %1$s eliminado @@ -3813,21 +3813,21 @@ Lon %2$s Límite de lonxitude Este dispositivo non ten radares de velocidade. Patíns en liña - Activar para controlar o nivel de achegamento (zoom) do mapa cos botóns de volume do dispositivo. + Controlar o nivel de achegamento (zoom) do mapa cos botóns de volume do dispositivo. Os botóns de volume mudan o achegamento Fornece a lonxitude do teu vehículo. Algunhas restricións de ruta poden ser aplicadas a vehículos longos. - Eliminar seguinte punto de destino + Eliminar punto de destino máis preto Fornece un nome para o punto O punto de destino actual na ruta será eliminado. Se fora o destino, a navegación sería interrompida. Baixar mapas da Wikipedia - Obter información sobre os puntos de interesse da Wikipédia. É o teu guía de peto sen conexión - só activar o complemento da Wikipédia e desfrutar dos artigos sobre os elementos ó teu redor. + Obter información sobre os puntos de interese da Wikipedia. É o teu guía de peto sen conexión - só activar o complemento da Wikipedia e desfrutar dos artigos sobre os elementos ó teu redor. Enduro Scooter Cadeira de rodas Cadeira de rodas só cara adiante Kart Nota do OSM pechada - Tes que definir os días laborais para continuar + Definir os días laborais para continuar Ruta entre puntos Planificar unha ruta Engadir a unha pista @@ -3852,4 +3852,77 @@ Lon %2$s está gardado Engade polo menos dous puntos. Refacer + • Actualizouse a función \"Planificar ruta\": permite empregar diferentes tipos de navegación por segmento e o engadido de pistas +\n +\n • Novo menú coa aparencia das pistas: escoller a cor, o grosor, amosar as frechas de dirección e as iconas de comezo/final. +\n +\n • Melloras na visibilidade dos nós de bicicleta. +\n +\n • As pistas agora pódense premer, contén un menú con información básica. +\n +\n • Algoritmos de procura mellorados +\n +\n • Melloras nas opcións de seguimento da navegación +\n +\n • Solucionáronse os problemas da importación e exportación nos axustes dos perfís +\n +\n + Gravar a pista de xeito automático ó navegar + Última edición + Importar pista + Abrir pista existente + Crear nova ruta + Seleccionar un ficheiro de pista para abrir. + Feito + Substituír pista + Gardar coma nova pista + Ruta inversa + Recalcular toda a pista empregando o perfil escollido. + Recalcular só o seguinte segmento empregando o perfil escollido. + Marca de que xeito conectar os puntos, cunha liña recta ou calcular unha ruta entre eles como se detalla deseguido. + Pista enteira + Seguinte segmento + Deseguido, axusta a pista á estrada permitida máis preto cun perfil de navegación. + Distancia limiar + Perfil de navegación + Escolle un ficheiro de pista ó que se engadirá un novo segmento. + Imaxes a nivel de rúa + Pechar o plan de ruta sen gardar\?, desbotaranse todas as modificacións. + En caso de dirección inversa + Gardar coma novo ficheiro de pista + Engadir a un ficheiro de pistas + Pistas + Pistas + Pistas + Gardar pista en ficheiro GPX + Ruta da pista + Engadir ficheiros de pista + Importar ou gravar ficheiros de pista + Engadir punto de referencia da pista + Engadir punto de pasaxe da pista + Gravación da viaxe + Gardar coma ficheiro de pista + Seguir pista + Escoller o ficheiro da pista a seguir + Escoller o ficheiro da pista a seguir ou importar dende o dispositivo. + Escoller outra pista + Navegar dende a miña posición á pista + Punto da pista para navegar + Comezo da pista + Punto máis preto + Unir ás estradas + Eliminar enderezo + Engadir enderezo + Inserir o enderezo + Recurtar antes + Recurtar despois + Mudar o tipo de ruta anterior + Mudar o tipo de ruta seguinte + Pista simplificada + Só gravarase a liña da ruta, os puntos intermedios serán eliminados. + Nome do ficheiro + %s ficheiros de pista seleccionados + Gravar + A gravación da pista deterase ó pechar a aplicación (mediante aplicacións recentes). (A indicación de fondo do OsmAnd, desaparecerá da barra de notificacións do Android.) + Especifica o intre de gravación xeral para pistas (habilitado a través do trebello de gravación no mapa). \ No newline at end of file From b221b620118f0f68e6ac24f8795c5e47de9e8981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Kotr=C4=8D?= Date: Fri, 18 Sep 2020 08:05:10 +0000 Subject: [PATCH 08/80] Translated using Weblate (Czech) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-cs/phrases.xml | 53 +++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-cs/phrases.xml b/OsmAnd/res/values-cs/phrases.xml index 6c95767d54..e63732cdc6 100644 --- a/OsmAnd/res/values-cs/phrases.xml +++ b/OsmAnd/res/values-cs/phrases.xml @@ -983,7 +983,7 @@ Rozcestník Kuchyně Síranová - Charakteristika vody: bahnitá + Bahno Minerální Bez čerpadla Poháněné @@ -1156,7 +1156,7 @@ Ano Bez značení pro nevidomé Ano - Ne + Zvuk: ne Pouze pokud je chůze povolena Záchranná stanice Odpočívadlo se službami @@ -1258,7 +1258,7 @@ Vyzvednutí balíků Mléko Žvýkačky - Parkovací lístky; lístky na veřejnou dopravu + Parkovací lístky a lístky na veřejnou dopravu Káva Automat na mýto Hračky @@ -1588,13 +1588,13 @@ Žádné opravy Opravy elektrických vozidel Ano - Bez samoobsluhy + Ne Ano Neautomatizované Všechny služby Ano Bez kartáčů: ne - Automyčka: ne + Ne Veřejná sprcha Muži Zakázané pro muže @@ -1955,7 +1955,7 @@ Plány veřejné dopravy Pobočka Stéla - Ve tvaru kříže + Tvar kříže Kameny zmizelých Stúpa Tuf @@ -2005,7 +2005,7 @@ Palivo 100LL LPG Palivo tryskové A-1 - Palivo AdBlue + Dieselové kapalné aditivum Palivo: dřevo Palivo: dřevěné uhlí Palivo: uhlí @@ -3804,7 +3804,44 @@ Výška vody: nad střední hladinou Výška vody: pod střední hladinou Překážka - Doplňování pitné vody: ano + Ano Doplňování pitné vody: ne Sít doplňování pitné vody + Včelí úl + Data v reálném čase + Ano + Výtah + Městská část + Obchod se suchými plody + Jízdní řád + Zpoždění + Odjezdová tabule: ne + Městský blok + Darovací místo + Šipka: ne + Ano + Ano + Vibrace: ne + Stav pumpy: chybí rukojeť + Sání + Pod tlakem + Podzemní voda + Roura + Internetový přístup: zdarma pro zákazníky + Typ klášteru: řeholnický + Typ klášteru: poustevnický + Typ klášteru: kanovnický + Typ klášteru: mnišský + Výběr hotovosti: u samoobslužné pokladny + Výběr hotovosti: u pokladny + Poplatek + Taxi kancelář + Polní hořák; fléra + Dosahující k moři + Malá elektrická zařízení + Odjezdová tabule + Doplňování pitné vody + Šipka + Vibrace + Tlak \ No newline at end of file From 04185ca0db6343f5cd5b06bfe5bdde6e710fab9d Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 18 Sep 2020 20:26:41 +0000 Subject: [PATCH 09/80] Translated using Weblate (German) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-de/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index 14173b1d76..03347e1dd4 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -3845,4 +3845,5 @@ Anzeige der Abreisezeiten Nachfüllen von Trinkwasser Bienenstock + Kleine Elektrogeräte \ No newline at end of file From 07d07c3e7bbaabc93b9175b5b7210f6062ad5cdd Mon Sep 17 00:00:00 2001 From: Ferdi Date: Fri, 18 Sep 2020 06:26:32 +0000 Subject: [PATCH 10/80] Translated using Weblate (German) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-de/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index 03347e1dd4..d091dc7fd5 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -3846,4 +3846,5 @@ Nachfüllen von Trinkwasser Bienenstock Kleine Elektrogeräte + Nussladen \ No newline at end of file From 444abb24d60cb09d0a1eb6faaec405ed9bbbc16e Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Fri, 18 Sep 2020 21:17:23 +0000 Subject: [PATCH 11/80] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-uk/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml index 79fb238aee..4375b43720 100644 --- a/OsmAnd/res/values-uk/phrases.xml +++ b/OsmAnd/res/values-uk/phrases.xml @@ -793,7 +793,7 @@ Релігійне землекористування Придорожній хрест Придорожня святиня - Інформація + Відомості Годинник Турагентство Місце з хорошим видом From f15c6afb79706223861de1e06e1af8f1d059ca82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1ns?= Date: Fri, 18 Sep 2020 00:04:49 +0000 Subject: [PATCH 12/80] Translated using Weblate (Galician) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-gl/phrases.xml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-gl/phrases.xml b/OsmAnd/res/values-gl/phrases.xml index 88f562e0ac..ce9cdbbeea 100644 --- a/OsmAnd/res/values-gl/phrases.xml +++ b/OsmAnd/res/values-gl/phrases.xml @@ -3800,7 +3800,7 @@ Incorrecto Rede de recarga de auga potábel Recarga de auga potábel: non - Recarga de auga potábel: si + Si Obstrución Nivel da auga: por debaixo do nivel medio da auga Nivel da auga: por encima do nivel medio da auga @@ -3825,4 +3825,16 @@ Caixa de distribución Predio Concello + Froitos secos + Colmea + Horarios + Tempo real + Atraso + Si + Taboleiro de saídas: non + Ascensor + Frecha: non + Pequenos aparellos eléctricos + Taboleiro de saídas + Recarga de auga potábel \ No newline at end of file From 8969585acde24d50b25baa8967f3d846e9c22b5a Mon Sep 17 00:00:00 2001 From: ovl-1 Date: Fri, 18 Sep 2020 12:12:07 +0000 Subject: [PATCH 13/80] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 41.4% (1586 of 3824 strings) --- OsmAnd/res/values-nb/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-nb/phrases.xml b/OsmAnd/res/values-nb/phrases.xml index 46c0e7a5e7..b7c1e63c18 100644 --- a/OsmAnd/res/values-nb/phrases.xml +++ b/OsmAnd/res/values-nb/phrases.xml @@ -1556,7 +1556,7 @@ Rør Nettverk for påfyll av drikkevann Drikkevannspåfylling: Nei - Drikkevannspåfylling: Ja + Ja Vann-nivå: Nedsenket Hindring Vann-nivå: Under vanlig vann-nivå From 639dcc2d57d0dca7521f53fafcaf5c18927a0ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sat, 19 Sep 2020 01:12:06 +0000 Subject: [PATCH 14/80] Translated using Weblate (Turkish) Currently translated at 62.6% (2395 of 3824 strings) --- OsmAnd/res/values-tr/phrases.xml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-tr/phrases.xml b/OsmAnd/res/values-tr/phrases.xml index b4f98a709f..ce16c3b5ef 100644 --- a/OsmAnd/res/values-tr/phrases.xml +++ b/OsmAnd/res/values-tr/phrases.xml @@ -2364,7 +2364,7 @@ Megalit Basınç İçme suyu doldurma: hayır - İçme suyu doldurma: evet + Evet İçme suyu doldurma şebekesi Malzeme: kompozit Malzeme: mermer @@ -2398,4 +2398,12 @@ Mobilet: evet Mobilet Şehir + Petroglif + Nekropol + Yuvarlak kulübe kalıntısı + Yerleşim yeri + İstihkam + Küçük elektrikli aletler + Kalkış bilgileri panosu + İçme suyu doldurma \ No newline at end of file From 368763e848b565697d148b5f2b53758ff4ef32f8 Mon Sep 17 00:00:00 2001 From: ssantos Date: Thu, 17 Sep 2020 13:41:59 +0000 Subject: [PATCH 15/80] Translated using Weblate (Portuguese) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-pt/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-pt/phrases.xml b/OsmAnd/res/values-pt/phrases.xml index 0eb960c2f2..8d22b73dbe 100644 --- a/OsmAnd/res/values-pt/phrases.xml +++ b/OsmAnd/res/values-pt/phrases.xml @@ -3828,4 +3828,5 @@ Reabastecimento de água potável Pequenos aparelhos elétricos Colmeia + Loja de nozes \ No newline at end of file From b7a6d89b18f881d5eec83a01d783e9efb33bbbd6 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Sat, 19 Sep 2020 19:18:22 +0300 Subject: [PATCH 16/80] Fix route to gpx issues --- .../net/osmand/router/RouteSegmentResult.java | 33 +++-- .../MeasurementEditingContext.java | 114 ++++++++++++------ .../plus/routing/RouteCalculationResult.java | 11 -- 3 files changed, 93 insertions(+), 65 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/router/RouteSegmentResult.java b/OsmAnd-java/src/main/java/net/osmand/router/RouteSegmentResult.java index 089de43fcd..e31f8ef03b 100644 --- a/OsmAnd-java/src/main/java/net/osmand/router/RouteSegmentResult.java +++ b/OsmAnd-java/src/main/java/net/osmand/router/RouteSegmentResult.java @@ -271,7 +271,7 @@ public class RouteSegmentResult implements StringExternalizable bundle.putString("turnLanes", TurnType.lanesToString(turnLanes)); } } - bundle.putLong("id", object.id); + bundle.putLong("id", object.id >> 6); // OsmAnd ID to OSM ID bundle.putArray("types", convertTypes(object.types, rules)); int start = Math.min(startPointIndex, endPointIndex); @@ -327,22 +327,21 @@ public class RouteSegmentResult implements StringExternalizable Location prevLocation = null; for (int i = 0; i < length; i++) { Location location = resources.getLocation(index); - if (location == null) { - continue; - } - double dist = 0; - if (prevLocation != null) { - dist = MapUtils.getDistance(prevLocation.getLatitude(), prevLocation.getLongitude(), location.getLatitude(), location.getLongitude()); - distance += dist; - } - prevLocation = location; - object.pointsX[i] = MapUtils.get31TileNumberX(location.getLongitude()); - object.pointsY[i] = MapUtils.get31TileNumberY(location.getLatitude()); - if (location.hasAltitude() && object.heightDistanceArray.length > 0) { - object.heightDistanceArray[i * 2] = (float) dist; - object.heightDistanceArray[i * 2 + 1] = (float) location.getAltitude(); - } else { - object.heightDistanceArray = new float[0]; + if (location != null) { + double dist = 0; + if (prevLocation != null) { + dist = MapUtils.getDistance(prevLocation.getLatitude(), prevLocation.getLongitude(), location.getLatitude(), location.getLongitude()); + distance += dist; + } + prevLocation = location; + object.pointsX[i] = MapUtils.get31TileNumberX(location.getLongitude()); + object.pointsY[i] = MapUtils.get31TileNumberY(location.getLatitude()); + if (location.hasAltitude() && object.heightDistanceArray.length > 0) { + object.heightDistanceArray[i * 2] = (float) dist; + object.heightDistanceArray[i * 2 + 1] = (float) location.getAltitude(); + } else { + object.heightDistanceArray = new float[0]; + } } if (plus) { index++; diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java index dd3295b2c2..d1dae05a6d 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java @@ -517,47 +517,90 @@ public class MeasurementEditingContext { roadSegmentData.clear(); List routePoints = new ArrayList<>(); List gpxPoints = gpxApproximation.finalPoints; - for (int i = 0; i < gpxPoints.size() - 1; i++) { - GpxPoint rp1 = gpxPoints.get(i); - GpxPoint rp2 = gpxPoints.get(i + 1); - WptPt p1 = new WptPt(); - p1.lat = rp1.loc.getLatitude(); - p1.lon = rp1.loc.getLongitude(); - p1.setProfileType(mode.getStringKey()); - if (i == 0) { - routePoints.add(p1); - } - WptPt p2 = new WptPt(); - p2.lat = rp2.loc.getLatitude(); - p2.lon = rp2.loc.getLongitude(); - p2.setProfileType(mode.getStringKey()); - routePoints.add(p2); - Pair pair = new Pair<>(p1, p2); + for (int i = 0; i < gpxPoints.size(); i++) { + GpxPoint gp1 = gpxPoints.get(i); + boolean lastGpxPoint = isLastGpxPoint(gpxPoints, i); List points = new ArrayList<>(); List segments = new ArrayList<>(); - for (RouteSegmentResult seg : rp1.routeToTarget) { - segments.add(seg); - int ind = seg.getStartPointIndex(); - boolean plus = seg.isForwardDirection(); - float[] pf = seg.getObject().calculateHeightArray(); - while (ind != seg.getEndPointIndex()) { - LatLon l = seg.getPoint(ind); - WptPt pt = new WptPt(); - if (pf != null && pf.length > ind * 2 + 1) { - pt.ele = pf[ind * 2 + 1]; - - } - pt.lat = l.getLatitude(); - pt.lon = l.getLongitude(); - points.add(pt); - ind = plus ? ind + 1 : ind - 1; + for (int k = 0; k < gp1.routeToTarget.size(); k++) { + RouteSegmentResult seg = gp1.routeToTarget.get(k); + if (seg.getStartPointIndex() != seg.getEndPointIndex()) { + segments.add(seg); } } - roadSegmentData.put(pair, new RoadSegmentData(appMode, pair.first, pair.second, points, segments)); + for (int k = 0; k < segments.size(); k++) { + RouteSegmentResult seg = segments.get(k); + fillPointsArray(points, seg, lastGpxPoint && k == segments.size() - 1); + } + if (!points.isEmpty()) { + WptPt wp1 = new WptPt(); + wp1.lat = gp1.loc.getLatitude(); + wp1.lon = gp1.loc.getLongitude(); + wp1.setProfileType(mode.getStringKey()); + routePoints.add(wp1); + WptPt wp2 = new WptPt(); + if (lastGpxPoint) { + wp2.lat = points.get(points.size() - 1).getLatitude(); + wp2.lon = points.get(points.size() - 1).getLongitude(); + routePoints.add(wp2); + } else { + GpxPoint gp2 = gpxPoints.get(i + 1); + wp2.lat = gp2.loc.getLatitude(); + wp2.lon = gp2.loc.getLongitude(); + } + wp2.setProfileType(mode.getStringKey()); + Pair pair = new Pair<>(wp1, wp2); + roadSegmentData.put(pair, new RoadSegmentData(appMode, pair.first, pair.second, points, segments)); + } + if (lastGpxPoint) { + break; + } } addPoints(routePoints); } + private boolean isLastGpxPoint(List gpxPoints, int index) { + if (index == gpxPoints.size() - 1) { + return true; + } else { + for (int i = index + 1; i < gpxPoints.size(); i++) { + GpxPoint gp = gpxPoints.get(i); + for (int k = 0; k < gp.routeToTarget.size(); k++) { + RouteSegmentResult seg = gp.routeToTarget.get(k); + if (seg.getStartPointIndex() != seg.getEndPointIndex()) { + return false; + } + } + + } + } + return true; + } + + private void fillPointsArray(List points, RouteSegmentResult seg, boolean includeEndPoint) { + int ind = seg.getStartPointIndex(); + boolean plus = seg.isForwardDirection(); + float[] heightArray = seg.getObject().calculateHeightArray(); + while (ind != seg.getEndPointIndex()) { + addPointToArray(points, seg, ind, heightArray); + ind = plus ? ind + 1 : ind - 1; + } + if (includeEndPoint) { + addPointToArray(points, seg, ind, heightArray); + } + } + + private void addPointToArray(List points, RouteSegmentResult seg, int index, float[] heightArray) { + LatLon l = seg.getPoint(index); + WptPt pt = new WptPt(); + if (heightArray != null && heightArray.length > index * 2 + 1) { + pt.ele = heightArray[index * 2 + 1]; + } + pt.lat = l.getLatitude(); + pt.lon = l.getLongitude(); + points.add(pt); + } + private int findPointIndex(WptPt point, List points, int firstIndex) { double minDistance = Double.MAX_VALUE; int index = 0; @@ -740,10 +783,7 @@ public class MeasurementEditingContext { } locations.add(l); } - pair.second.setTrkPtIndex(locations.size() - 1); - if (i < size - 2 && !locations.isEmpty()) { - locations.remove(locations.size() - 1); - } + pair.second.setTrkPtIndex(i < size - 1 ? locations.size() : locations.size() - 1); route.addAll(data.segments); } } diff --git a/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java b/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java index df6a6eaafa..a6dcc20fca 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java +++ b/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java @@ -356,17 +356,6 @@ public class RouteCalculationResult { } lastHeight = h; } - // FIXME: investigate gpx file - if (s.getObject().getPoint31XTile(i) == 0 && s.getObject().getPoint31YTile(i) == 0) { - if (locations.size() > 0) { - Location prev = locations.get(locations.size() - 1); - n.setLatitude(prev.getLatitude()); - n.setLongitude(prev.getLongitude()); - if (prev.hasAltitude()) { - n.setAltitude(prev.getAltitude()); - } - } - } locations.add(n); attachAlarmInfo(alarms, s, i, locations.size()); segmentsToPopulate.add(s); From 5c98b9660e9cb8455853decbc43062a0aadebc77 Mon Sep 17 00:00:00 2001 From: ssantos Date: Sun, 20 Sep 2020 20:44:37 +0000 Subject: [PATCH 17/80] Translated using Weblate (Portuguese) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-pt/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml index 49f1d72d9e..fe6c5d23b1 100644 --- a/OsmAnd/res/values-pt/strings.xml +++ b/OsmAnd/res/values-pt/strings.xml @@ -91,7 +91,7 @@ Reinicializar pesquisa de transporte Voz gravada Nenhum mapa vetorial foi carregado - Caminho reverso + Inverter a direção do trilho Nenhum ficheiro GPX encontrado na pasta tracks Não foi possível ler os dados de GPX. Mapas vetoriais offline From d98ffea12cd736af069fd3fda408109714375060 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Sat, 19 Sep 2020 06:15:45 +0000 Subject: [PATCH 18/80] Translated using Weblate (French) Currently translated at 99.9% (3483 of 3484 strings) --- OsmAnd/res/values-fr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index b116563f71..408aa58e53 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -147,7 +147,7 @@ La langue sélectionnée n\'est pas disponible dans le moteur de synthèse vocale installé. Souhaitez-vous rechercher d\'autres moteurs de synthèse vocale sur Google Play \? Sinon la langue par défaut sera utilisée. Données manquantes Souhaitez-vous installer la langue sélectionnée depuis Google Play ? - Inverser l\'itinéraire GPX + Inverser le sens de la trace Utiliser la destination en cours Suivre l\'ensemble de la trace Cartes vectorielles hors-lignes disponibles pour cette position. From aebd611b1c336912d17a10097f3662777baab27a Mon Sep 17 00:00:00 2001 From: Deelite <556xxy@gmail.com> Date: Mon, 21 Sep 2020 06:32:32 +0000 Subject: [PATCH 19/80] Translated using Weblate (Russian) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 6d48ebb5b2..968382e664 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -3833,7 +3833,7 @@ \nНа следующем шаге необходимо выбрать профиль навигации для определения разрешенных дорог и пороговое расстояние, чтобы приблизительно привязать маршрут к дорогам. Выберите способ соединения точек прямой линией или рассчитайте маршрут между ними, как указано ниже. При обратном направлении - Все изменения будут утеряны. Закрыть план маршрута\? + Все изменения будут утеряны. Уличная фотосъёмка Сохранить как новый файл трека Добавить в файл трека From 0b315a77c3ea40b43aa3610d6b93c78a31ce611d Mon Sep 17 00:00:00 2001 From: solokot Date: Sat, 19 Sep 2020 10:04:20 +0000 Subject: [PATCH 20/80] Translated using Weblate (Russian) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-ru/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 968382e664..f8ae3f5674 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -515,7 +515,7 @@ Выбранный язык не поддерживается установленным движком Android TTS (text-to-speech или текст-в-речь), вместо него будет использоваться предустановленный язык TTS. Посмотреть в Google Play другой TTS\? Данные отсутствуют Перейти в маркет для загрузки выбранного языка? - Обратное направление GPX + Обратное направление трека Использовать текущий пункт назначения Пройти весь путь Для этого региона доступны локальные векторные карты. @@ -1460,7 +1460,7 @@ Мировые пункты обмена bitcoin дней Соединение - Сохранить данные как трек файл или импортировать путевые точки в избранные\? + Сохранить данные как файл трека или импортировать путевые точки в избранные\? Розовый Коричневый Пустой файл GPX @@ -3830,7 +3830,7 @@ Весь трек Для использования данной возможности OsmAnd необходимо привязать ваш трек по дорогам. \n -\nНа следующем шаге необходимо выбрать профиль навигации для определения разрешенных дорог и пороговое расстояние, чтобы приблизительно привязать маршрут к дорогам. +\nНа следующем шаге необходимо выбрать профиль навигации для определения разрешённых дорог и пороговое расстояние, чтобы приблизительно привязать маршрут к дорогам. Выберите способ соединения точек прямой линией или рассчитайте маршрут между ними, как указано ниже. При обратном направлении Все изменения будут утеряны. @@ -3870,7 +3870,7 @@ Будет сохранена только линия маршрута, путевые точки будут удалены. Имя файла Выбрано файлов треков: %s - Укажите интервал общей записи трека (включается через виджет «Запись GPX» на карте). + Укажите интервал общей записи трека (включается через виджет «Запись поездки» на карте). Остановить запись Возобновить запись поездки По выбору системы @@ -3885,9 +3885,9 @@ сохранен Добавьте хотя бы две точки. ПОВТОРИТЬ - • Обновленный режим планирования маршрута позволяет использовать разные типы навигации для каждого сегмента и прикрепляет любой трек к дорогам + • Обновлённый режим планирования маршрута позволяет использовать разные типы навигации для каждого сегмента и прикрепляет любой трек к дорогам \n -\n • Новые параметры внешнего вида для треков: выберите цвет, толщину, включите стрелки направления и отметки начала/окончания +\n • Новые параметры внешнего вида для треков: можно выбрать цвет, толщину, включите стрелки направления и отметки начала/окончания \n \n • Улучшена видимость велосипедных узлов \n From 3c50d495d1b4862c48a4c4b4ab810fb319adf9c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sat, 19 Sep 2020 05:36:47 +0000 Subject: [PATCH 21/80] Translated using Weblate (Turkish) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-tr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index c48d2b66f2..88d2ecc725 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -937,7 +937,7 @@ Düşük yakınlaştırma seviyelerinde tüm dünyayı kapsayan bir genel bakış elde etmek için ana dünya haritasını indirin. %1$s\'a öğe yok Seçilen dil yüklü Android TTS (metinden konuşmaya) motoru tarafından desteklenmemektedir, bunun yerine önceden ayarlanmış TTS dili kullanılacak. Mağazada başka bir TTS motoru aramak ister misiniz\? - GPX yönünü tersine çevir + İzlenen yol yönünü tersine çevir Bu konum için çevrim dışı vektör haritası. \n\t \n\tKullanmak için \'Menü\' → \'Harita Katmanları\' → \'Harita Kaynağı…\' → \'Çevrim dışı vektör haritalar\'. From 0ff785a55035d06a2aa2449dfebf67587e74197d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Babos=20G=C3=A1bor?= Date: Sat, 19 Sep 2020 14:46:17 +0000 Subject: [PATCH 22/80] Translated using Weblate (Hungarian) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-hu/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index 3133035da6..519a8cce66 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -213,7 +213,7 @@ A kijelölt nyelvet az Android TTS (text-to-speech, szövegfelolvasó) rendszere nem támogatja, helyette az előre beállított szövegfelolvasási nyelv lesz használatban. Keresen másik TTS rendszert a Play Áruházban\? Hiányzó adat Átváltasz az áruházra a kiválasztott nyelv letöltéséhez? - GPX irány megfordítása + Nyomvonal irányának megfordítása Jelenlegi célpont használata Végig az egész útvonalon Offline vektoros térkép érhető el ezen a helyen. From 9b7c1af90fce3b640384c2f4a8b7babb73de0bd5 Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Sat, 19 Sep 2020 12:26:57 +0000 Subject: [PATCH 23/80] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-uk/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index dcd577c052..d3a1ebd846 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -265,7 +265,7 @@ Вибрана мова не підтримується встановленим двигуном Android TTS (текстовим мовленням), замість цього буде використана його попередньо налаштована мова TTS. Шукаєте інший двигун TTS\? Дані відсутні Перейти в магазин для завантаження обраної мови? - Зворотній напрямок GPX + Зворотний напрямок треку Використовувати поточний пункт призначення Пройдіть по усьому треку Для цього регіону доступні автономні векторні мапи From 0a6cde8b5d07e66e5862971e5941cc16128e6a1d Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Sun, 20 Sep 2020 18:17:00 +0000 Subject: [PATCH 24/80] Translated using Weblate (Italian) Currently translated at 90.2% (3144 of 3484 strings) --- OsmAnd/res/values-it/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 505d5ee27f..018ca3edb1 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -3816,15 +3816,15 @@ Seleziona larghezza Ultima modificata Importa una traccia - Apri una traccia esistente + Apri traccia esistente Crea un nuovo percorso - Scegli il file di una traccia da aprire. + Scegli un file traccia da aprire. Fatto Profilo di navigazione Poi approssima la traccia alle strade più vicine permesse da uno dei tuoi profili di navigazione per utilizzare questa opzione. - Scegli come collegare i punti, con una linea retta, o calcolando un percorso che li colleghi utilizzando il profilo scelto. + Scegli come collegare i punti, con una linea retta, o calcolando un percorso che li colleghi come specificato sotto. Sovrascrivi traccia - Salva come nuova Traccia + Salva come nuova traccia Inverti il percorso Solo il nuovo segmento sarà ricalcolato utilizzando il profilo scelto. Tutta la traccia sarà ricalcolata utilizzando il profilo scelto. @@ -3870,7 +3870,7 @@ Nome del file %s file traccia selezionati Metterà in pausa la registrazione della traccia quando l\'applicazione viene terminata (attraverso le app recenti). (L\'indicazione di OsmAnd in background scomparirà dalla barra delle notifiche di Android.) - Specifica l\'intervallo di registrazione per la registrazione delle tracce (abilitata attraverso il pulsante di Registrazione del viaggio sulla mappa). + Specifica l\'intervallo per la registrazione delle tracce (abilitata attraverso il pulsante di Registrazione del viaggio sulla mappa). Sospendi la registrazione del viaggio Riprendi la registrazione del viaggio Preimpostazioni di sistema @@ -3881,7 +3881,7 @@ Tutti i segmenti successivi verranno ricalcolati con il profilo selezionato. Tutti i segmenti precedenti verranno ricalcolati con il profilo selezionato. Apri una traccia salvata - è stato salvato + è salvato Per favore aggiungi almeno due punti. Ripeti • Aggiornata la modalità Pianificazione dell\'Itinerario che permette l\'utilizzo di diversi profili di navigazione per ogni segmento e incolla le tracce alle strade @@ -3890,7 +3890,7 @@ \n \n • Migliorata la visibilità dei nodi ciclistici \n -\n • Menù contestuale con informazioni di base +\n • Le tracce adesso sono tappabili, hanno un nuovo menù contestuale con informazioni di base \n \n • Migliorato l\'algoritmo di ricerca \n From 61438d94388338a28e98e2a6b15e14fd1ac9e1ce Mon Sep 17 00:00:00 2001 From: ace shadow Date: Sun, 20 Sep 2020 00:13:15 +0000 Subject: [PATCH 25/80] Translated using Weblate (Slovak) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-sk/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 454bf3203b..379b112de9 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -281,7 +281,7 @@ Zvolený jazyk nie je podporovaný nainštalovaným TTS (text-to-speech) modulom v Androide. Bude použitý jeho prednastavený TTS jazyk. Nájsť iný TTS modul v obchode\? Chýbajúce údaje Prejsť do obchodu pre stiahnutie zvoleného jazyka? - Obrátiť GPX smerovanie + Obrátiť smer stopy Použiť aktuálny cieľový bod Prejsť pozdĺž celej trasy Pre túto oblasť je dostupná offline vektorová mapa. From 7c83a2d4b7936e758e70969ca25f659a562916b2 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Sat, 19 Sep 2020 09:56:13 +0000 Subject: [PATCH 26/80] Translated using Weblate (Hebrew) Currently translated at 99.9% (3483 of 3484 strings) --- OsmAnd/res/values-iw/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-iw/strings.xml b/OsmAnd/res/values-iw/strings.xml index 2971332a22..afc41fbb36 100644 --- a/OsmAnd/res/values-iw/strings.xml +++ b/OsmAnd/res/values-iw/strings.xml @@ -400,7 +400,7 @@ השפה הנבחרת אינה נתמכת על ידי המנגנון של Android הממיר טקסט לדיבור (TTS) המותקן, ייעשה שימוש בשפת ההמרה במקום. לחפש מנוע המרה אחר של טקסט לדיבור בחנות\? חסרים נתונים לגשת לחנות להוריד את השפה הנבחרת? - היפוך כיוון ה־GPX + היפוך כיוון המסלול שימוש ביעד הנוכחי לעבור לאורך דרך שלמה קיימת מפה וקטורית עבור מיקום זה. From 4ed07267c50e4fc9f756134a60f97bb089dc3d81 Mon Sep 17 00:00:00 2001 From: Zmicer Turok Date: Mon, 21 Sep 2020 05:56:41 +0000 Subject: [PATCH 27/80] Translated using Weblate (Belarusian) Currently translated at 99.9% (3483 of 3484 strings) --- OsmAnd/res/values-be/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index c80bd4dfe0..0696333fe4 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -657,7 +657,7 @@ Абраная мова не падтрымліваецца Android TTS (пераўтварэнне тэксту ў гук), таму будзе выкарыстоўвацца прадвызначаная мова TTS. Пашукаць іншы TTS у краме\? Даныя адсутнічаюць Перайсці ў краму, каб спампаваць абраную мову\? - Развярнуць кірунак GPX + Развярнуць кірунак следу Выкарыстоўваць дзейны пункт прызначэння Прайсці ўвесь шлях Для гэтага рэгіёну даступныя лакальныя вектарныя мапы. From 0be5fc36d79c935ee4bb5ec0c4b7e962fc7ce802 Mon Sep 17 00:00:00 2001 From: Guntis Ozols Date: Sun, 20 Sep 2020 08:37:36 +0000 Subject: [PATCH 28/80] Translated using Weblate (Latvian) Currently translated at 63.0% (2197 of 3484 strings) --- OsmAnd/res/values-lv/strings.xml | 91 +++++++++++++++++--------------- 1 file changed, 47 insertions(+), 44 deletions(-) diff --git a/OsmAnd/res/values-lv/strings.xml b/OsmAnd/res/values-lv/strings.xml index 95f040be10..437c20e592 100644 --- a/OsmAnd/res/values-lv/strings.xml +++ b/OsmAnd/res/values-lv/strings.xml @@ -118,7 +118,7 @@ Mainīt maršruta iestatījumus Globālie iestatījumi Kartes faili - "Lejupielādēt un pārraudzīt kartes daļas, balss pakas un vikipēdijas interešu punktus (POI)" + Lejupielādēt un pārvaldīt bezsaistes kartes failus, kas saglabāti jūsu ierīcē. Vispārīgie iestatījumi Mainīt lietotnes iestatījumus. Globālie lietotnes iestatījumi @@ -220,7 +220,7 @@ Atpako jaunos datus… Lai darbotos tiešsaistes navigācijas serviss, ir nepieciešams interneta savienojums. Valoda netiek atbalstīta - Izvēlētā valoda nav atbalstīta instalētajā ierīces Android TTS (teksta izrunāšana) dzinējā. Vai vēlaties meklēt citu TTS dzinēju? Pretējā gadījumā tiks lietota iepriekš uzstādītā TTS valoda. + Izvēlētā valoda nav atbalstīta ierīces Android TTS (teksta izrunāšana) dzinējā, tāpēc tiks lietota instalētā TTS valoda. Vai meklēt Google Play veikalā citu TTS dzinēju\? Iztrūkst dati Valodas dati nav instalēti. Vai atvērt Google Play veikalu, lai instalētu? Pretējs GPX virziens @@ -327,7 +327,7 @@ Izvēlieties, kuru OsmAnd versiju instalēt Instalācijas versija GPS statusa lietotne nav instalēta. Meklēt Google Play veikalā\? - "Nav pieejama balss vadība, lūdzu ejiet uz \'Iestatījumi\' → \'Vispārīgie Iestatījumi\' → \'Balss vadība\' un izvēlieties vai lejupielādējiet balss pakotni." + Nav pieejama balss vadība, lūdzu ejiet uz \'Iestatījumi\' → \'Vispārīgie Iestatījumi\' → \'Balss vadība\' un izvēlieties kādu vai lejupielādējiet balss pakotni. Nav izvēlēta balss vadība Diena Nakts @@ -440,7 +440,7 @@ Turpināt Vēlāk Lejupielādēt reģionus - "Paldies, ka izvēlējāties OsmAnd. Lejupielādējiet reģiona datus bezsaistes lietošanai caur \'Izvēlne\' -> → \'Lejupielādes\'. Pēc tam jūs varēsiet skatīt kartes, atrast adreses, interešu punktus (POI), meklēt sabiedrisko transportu un vēl." + "Paldies, ka izvēlējāties OsmAnd. Lejupielādējiet reģiona datus bezsaistes lietošanai caur \'Izvēlne\' -> → \'Lejupielādes\', lai skatītu kartes, atrastu adreses, interešu punktus (POI), meklētu sabiedrisko transportu un vēl." Meklē signālu… Meklēt blakus kartes centram Meklēt tuvumā @@ -544,7 +544,7 @@ Iestatiet valodu, lejupielādējiet/atjaunojiet datus Dati OSM labošana - Automātiski mērogot karti atkarībā no pārvietošanās ātruma + Automātiski mērogot karti atkarībā no pārvietošanās ātruma. Automātiski mērogot karti Papildus iestatījumi Iestatījumi @@ -663,11 +663,11 @@ Lietot tiešaistes kartes (lejuplādējot un kešojot bildes SD kartē) Tiešsaistes kartes Konfigurēt tiešaistes vai kešotās kartes bildes - "Ar šo spraudni jūs varēsiet piekļūt dažādām tiešsaistes (t.s. bilžu vai rastru) kartēm, sākot no iepriekš definētām OpenStreetMap bildēm ( kā Mapnik) līdz satelītu fotoattēliem un īpašajiem klājumiem kā laikapstākļu kartes, klimata kartes, ğeoloğiskās kartes, kalnu reljefi u.t.t. + "Ar šo spraudni jūs varēsiet piekļūt dažādām tiešsaistes (t.s. bilžu vai rastru) kartēm, sākot no iepriekš definētām OpenStreetMap bildēm (kā Mapnik) līdz satelītu fotoattēliem un īpašajiem klājumiem kā laikapstākļu kartes, klimata kartes, ğeoloğiskās kartes, kalnu reljefi u.t.t. \n \nJebkuras no šīm kartēm var tik pielietotas kā pamata (bāzes) kartes vai kā virsklājs vai apakšklājs citai bāzes kartei (kā piemēram, OsmAnd standarta bezsaistes kartei). Lai apakšklāja kartes būtu labāk redzamas, noteiktus elementus no OsmAnd vektoru kartēm ir iespējams paslēpt caur kartes konfigurācijas izvēlni. \n -\nBilžu kartes var lietot no tiešsaistes avotiem vai sagatavot bezsaistes lietošanai (iekopējot OsmAnd datu mapē) kā SQLite databāzi, to izveidojot ar kādu no atsevišķi pieejamajām kartēšanas aplikācijām. " +\nBilžu kartes var lietot no tiešsaistes avotiem vai sagatavot bezsaistes lietošanai (iekopējot OsmAnd datu mapē) kā SQLite databāzi, to izveidojot ar kādu no atsevišķi pieejamajām kartēšanas aplikācijām." Rāda iestatījumus navigācijas darbībai fonā (izslēgts ekrāns), periodiski ieslēdzot GPS. Rādīt iestatījumus atsevišķām pieejamības iespējām kā TTS runas ātrums, atrašanās vietas izruna, ekrāna mērogošana u.t.t. Rādīt izstrādes un atkļūdošanas iestatījumus, kā piemēram, animētā navigācija, renderēšanas izpildījuma attēlošana vai balss uzvednes. Šie iestatījumi ir paredzēti izstrādātājiem un nav vajadzīgi gala lietotājam. @@ -762,7 +762,7 @@ Izvairīties no pārceltuvēm Izvairīties no… Rādīt signālus… - Satiksmes ierobežojumus (ātruma limitus, stopzīmes, rampas), gājēju pārejas, fotoradarus, ceļa joslas + Iestatīt satiksmes brīdinājumus (ātruma limitus, apstāšanās vietas, ātrumvaļņus, tuneļus), foto radarus un ceļa joslas. Fluorescējošs maršruts Lineāls Skata virziens @@ -860,9 +860,9 @@ Eiropa, Āzija, Latīņamerika Apvienotā Karaliste, Indija un citas Paziņot… - Ielu nosaukumus, satiksmes brīdinājumus (stopzīmes, ceļa rampas), fotoradarus, ātruma ierobežojumus + Izrunāt ielu nosaukumus, satiksmes brīdinājumus (piespiedu apstāšanos, ātrumvaļņus), fotoradarus un ātruma ierobežojumus. Ielu nosaukumi (TTS) - Ātruma ierrobežojums + Ātruma ierobežojums Fotoradari Satiksmes brīdinājumi Lūdzu norādiet iestatījumos OSM lietotāja vārdu un paroli @@ -900,7 +900,7 @@ Noņemt visus mērķus Atvērt GPX failu Lūdzu uzgaidiet, kamēr tiks pabeigta patreizējā darbība - "Samazina kompasa svārstības, palielinot inertumu" + Samazina kompasa svārstības, palielinot inertumu. Lietot Kalmana filtru Lietot magnētisko sensoru orientācijas sensora vietā, lai noteiktu kompasa stāvokli Lietot magnētisko sensoru @@ -949,7 +949,7 @@ Mainīt kārtību Lūdzu apsveriet iespēju pirkt Contour Lines spraudni, lai atbalstītu tā tālāko attīstību. Kontūrlīniju spraudnis - Atlasīt pēc pieprasījuma + Pēc pieprasījuma\? Ierakstīt video Ierakstīt audio Izvēlieties noklusēto logrīka darbību @@ -996,7 +996,7 @@ Ceļu kartes Robežas Noņemt reģionālo robežu attēlošanu (admin līmeņi 5-9) - Ātruma limiti + Ātruma ierobežojumi Nav atrastas ēkas. Meklēt apdzīvotās vietas/pasta indeksus Izvēlieties, kad rādīt tikai ceļu tīkla kartes: @@ -1204,9 +1204,9 @@ Persiešu Nosaukumi kartē (ja valoda nebūs pieejama, tiks lietoti vietvārdi vai angļu valoda) Kartes pamatvaloda - "Ar šo spraudni jūs varat manuāli saglabāt trekus, nospiežot GPX ieraksta logrīku uz kartes vai veikt automātisku visu maršrutu ierakstu GPX failā. + Ar šo spraudni jūs varat manuāli saglabāt trekus, nospiežot GPX ieraksta logrīku uz kartes vai veikt automātisku visu maršrutu ierakstu GPX failā. \n -\nIerakstītie treki vēlāk var tikt izmantoti treka analīzei, koplietošanai ar draugiem vai OSM izstrādei. Atlēti var izmantot trekus, lai monitorētu treniņus. Pamata treku analīze var tikt veikta tieši caur OsmAnd kā piemēram, apļu laiki, vidējais ātrums utt., bet paplašinātai analīzei trekus var atvērt citās programmās. " +\nIerakstītie treki vēlāk var tikt izmantoti treka analīzei, koplietošanai ar draugiem vai OSM izstrādei. Atlēti var izmantot trekus, lai monitorētu treniņus. Pamata treku analīze var tikt veikta tieši caur OsmAnd kā piemēram, apļu laiki, vidējais ātrums utt., bet paplašinātai analīzei trekus var atvērt citās programmās. Ceļa ieraksts h Laiks @@ -1290,7 +1290,7 @@ Izvairīties no ceļiem… Vilciena maršruti Tramvaja maršruti - "Kopīgot taksometru maršrutus" + Kopīgot taksometru maršrutus Trolejbusu maršruti Autobusu maršruti Paslēpt @@ -1315,10 +1315,10 @@ Izlases vietas vārds tika pārdēvēts uz %1$s, lai varētu saglabāt kopu ar sejiņām failā. Printēt maršrutu Šāds vārds izlasē jau eksistē - "Norādītais izlases vārds tika pārdēvēts uz %1$s lai izvairītos no dublēšanas." + "Izlases vārds tika nomainīts uz %1$s, lai izvairītos no dublikāta." Teksta lielums uz kartes. Teksta izmērs - Ātruma robeža + Ātruma ierobežojums Robežkontrole Nodevu kabīne STOP zīme @@ -1529,7 +1529,9 @@ Daļa no jūsu ziedojuma tiks nosūtīta OSM lietotājiem, kas veic labojumus apgabala kartē Abonomenta iestatījumi Lūdzu, vispirms nopērciet abonomentu OSM atjauninājumiem - "Abonēšana nodrošina ik stundu karšu atjauninājumus no visas pasaules. Daļa no ienākumiem nonāk OSM kopienai par ieguldījumu OSM. Ja jums patīk OsmAnd un OSM un vēlaties tos atbalstīt, tad šis ir lielisks veids, kā to darīt." + Abonēšana nodrošina ik stundu karšu atjauninājumus no visas pasaules. +\nDaļa ienākumu nonāk OSM kopienā un tiek izmaksāta par ieguldījumu OSM. +\nJa jums patīk OsmAnd un OSM un vēlaties sniegt, kā arī saņemt atbalstu, šis ir lielisks veids, kā to izdarīt. Izvēlieties marķieri Citi marķieri Augšupielādēt anonīmi @@ -1646,7 +1648,7 @@ Kontūrlīnijas ir deaktivizētas Izveidot jaunu Izvēlieties kategoriju - Izvēlieties ātruma mērvienību + Izvēlieties ātruma mērvienību. Ātruma mērvienības Jūras jūdze Kilometri stundā @@ -1721,7 +1723,7 @@ Izslēgts Krāsas pēc infrastruktūras veida Krāsas pēc OSMC simbola - "Vai vēlaties izdzēst %1$d ierakstus?" + Vai vēlaties izdzēst %1$d ierakstus\? Slēpošanas trases Pārklājuma veidi Izvairīties no kāpnēm @@ -1771,7 +1773,7 @@ Vai esiet pārliecināts? Izmaiņas netiks saglabātas. Vai turpināt? Ceļi - "Lejupielādē - %1$d failu" + Lejupielādē - %1$d failu Rādīt bezmaksas versijas banneri Arī maksas versijā jūs varat redzēt bezmaksas versijas banneri Lūdzu aktivizējiet jūras kartes spraudni @@ -1857,7 +1859,7 @@ failu(s)? Lūdzu, pievienojiet marķierus caur karti Nav atrasts neviens ceļa punkts Pārskats - "Lietotnei tika piešķirta atļauja rakstīt ārējā glabātuvē, tagad nepieciešams restartēt lietotni." + Lietotnei tika piešķirta atļauja rakstīt ārējā glabātuvē. Ir nepieciešams restartēt lietotni. Uz augšu Uz leju Beigt navigāciju @@ -1925,7 +1927,7 @@ failu(s)? Abonoments tiks apmaksāts automātiski katru mēnesi. Jūs varat atteikties no abonomenta Google Play jebkurā laikā. Ziedojums OpenStreetMap kopienai Daļa no jūsu ziedojuma tiks OSM lietotājiem, kuri piedalās OpenStreetMaps kartes veidošanā. Abonomenta izmaksas paliek nemainīgas. - "Abonoments iespējo ik stundu, dienu vai nedēļu atjauninājumus un neierobežotas lejupielādes visām pasaules kartēm." + Abonoments iespējo ik stundu, dienu vai nedēļu atjauninājumus un neierobežotas lejupielādes visām pasaules kartēm. Saņemt Saņemt par %1$s Saņemt neierobežotas karšu lejupielādes un atjauninājumus biežāk nekā reizi mēnesī: reizi stundā, dienā vai nedēļā. @@ -2185,7 +2187,7 @@ Apraksta laukumu: %1$s x %2$s Meklēt Izlasē Lai attēlotu reljefa griezumu kartē, ir nepieciešams lejupielādēt reljefa virsklāja karti šim reğionam. Lai attēlotu reljefa griezumu kartē, ir nepieciešams iegādāties un instalēt Kontūrlīniju spraudni - "Lejupielādējiet \"Kontūrlīnijas\" karti šim reğionam." + Lejupielādējiet \"Kontūrlīnijas\" karti šim reğionam. Spraudnis Lai redzētu kontūrlīnijas uz kartes, jums ir nepieciešams nopirkt un instalēt \"Kontūrlīniju\" spraudni Krāsu shēma @@ -2213,17 +2215,17 @@ Apraksta laukumu: %1$s x %2$s Rādīt/nerādīt OSM piezīmes Atļaut piekļūšanu privātajām teritorijām. Maršruta gaitā iespējot kartes pagriešanas animāciju no manas atrašanās vietas. - Darbības pogas nospiešana ieslēdz vai izslēdz kartes auto mērogošanu pēc kustības ātruma. + Ieslēdz vai izslēdz automātisko tālummaiņu, atkarībā no kustības ātruma. Pievienot mērķi Nomainīt mērķi Pievienot pirmo starppunktu Spiežot šo darbības pogu, ekrāna centrs kļūst par galamērķi, bet iepriekš izvēlētais galamērķis par pēdējo starppunktu. - "Spiežot šo darbības pogu, ekrāna centrs kļūst par jauno galamērķi, nomainot iepriekšējo (ja tāds bija)." + Poga ekrāna centra iestatīšanai par jauno galamērķi, nomainot iepriekšējo galamērķi (ja tāds bija). Spiežot šo darbības pogu, ekrāna centrs kļūst par pirmo starppunku maršrutā. Nav virsklāja Nav apakšklāja Kļūda - "Pierakstieties epastu ziņojumiem par lietotnes atlaidēm un saņemiet 3 papildus lejupielādes kartēm!" + Pierakstieties ziņojumu sūtīšanai uz epastu par izdevīgiem lietotnes piedāvājumiem un saņemiet 3 papildus kartes lejupielādei! Kartes, kas satur jūras dziļuma kontūrlīnijas un punktus. Paldies par jūras dziļuma kontūrkaršu pirkumu! Jūras dziļuma kontūras @@ -2475,7 +2477,7 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Importēt failu Izvēlieties kā rādīt distanci un virzienu uz marķieriem kartē: Kartes orientācijas maiņa - Izvēlieties zem kāda ātruma kartes orientācija pārslēgsies no \'kustības virzienā\' uz \'pēc kompasa\'. + Izvēlieties ātrumu, pie kura pārslēgsies kartes orientācija no \'kustības virzienā\' uz \'kompasa virzienā\'. Visi kartes marķieri ir pārvietoti uz vēsturi Kartes marķieris ir pārvietots uz vēsturi Kartes marķieris ir aktivizēts @@ -2515,7 +2517,7 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Ievadiet lietotājvārdu Skatīt lietotāja bildes Lietotājvārds - "Filtrē bildes pēc iesūtītāja, datuma vai tipa. Filtri darbojas tikai tuvos mērogos." + Filtrē bildes pēc iesūtītāja, datuma vai tipa. Filtri darbojas tikai tuvos mērogos. Distance ir koriģēta Tumši dzeltens Caurspīdīgs rozā @@ -2555,7 +2557,7 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Viens Spiežot darbības pogu, tiks pārslēgts dienas un nakts režīms Smaiļošana pa upēm - "Lūdzu veltiet 30 sekundes laika atsauksmēm un novērtējiet mūsu darbu Google Play." + Lūdzu veltiet 30 sekundes laika atsauksmēm un novērtējiet mūsu darbu Google Play. Privātuma politika Palīdziet mums veidot OsmAnd labāku! OsmAnd lejupielādes serviss @@ -2568,7 +2570,7 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Mainīt noklusētā ātruma iestatījumus Iestatīt min./maks. ātrumu Jauns profils - "Pēdējā OsmAnd palaišana beidzās ar avāriju. Palīdziet uzlabot OsmAnd, nosūtot kļūdas ziņojumu." + Pēdējā OsmAnd palaišana beidzās ar avāriju. Palīdziet uzlabot OsmAnd, nosūtot kļūdas ziņojumu. NLO Segway Monoritenis @@ -2586,7 +2588,7 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Pamodināt pagriezienos Iestatīt ekrāna pamošanās laiku. Lietot tuvuma sensoru - "Novelciet ar roku pāri ekrāna augšmalai, lai ieslēgtu ekrānu navigācijas laikā." + pārvelkot roku pāri ierīcei, ekrāns ieslēgsies. Ziemas ceļi Ledus ceļi Ziemas un ledus ceļi @@ -2610,8 +2612,9 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Jūs pievienojāt %1$s punktus. Ievadiet faila vārdu un nospiediet \"Saglabāt\". Punkts %1$s izdzēsts Pasaule - Mēs nosūtīsim jūsu meklēšanas pieprasījumu: \"%1$s\", kā arī atrašanās vietas datus. \n - \n" Personīgā informācija netiks iekļauta, šie dati tiks izmantoti vienīgi meklēšanas algoritma uzlabošanai. " + Mēs nosūtīsim jūsu meklēšanas pieprasījumu: \"%1$s\" kopā ar jūsu atrašanos vietu. +\n +\nPersonīgā informācija netiek iekļauta un iegūtie dati tiek izmantoti vienīgi meklēšanas pieredzes uzlabošanai. Sūtīt meklēšanas pieprasījumu\? Paldies par Jūsu atsauksmi Vietu vai objektu nevar atrast. @@ -2743,7 +2746,7 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Grādi Miliradiāni Azimuts - "Mainīt azimuta mērvienības." + Mainīt azimuta mērvienības. Nelietot tramvajus Nelietot tramvajus Nelietot autobusus @@ -2817,7 +2820,7 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Izvēlieties sākuma profilu Balstiet savu profilu uz vienu no noklusētajiem profiliem, kas definēs tādus pamata iestatījumus kā logrīku redzamību un attāluma vai ātruma mērvienības. Šie ir noklusētie lietotnes profili, kopā ar lietotāja veidotajiem profiliem tie var tikt paplašināti uz: Izvēlieties navigācijas veidu - "Auto, kravas auto, motocikls" + Auto, kravas auto, motocikls MTB, mopēds, zirgs Iešana kājām, pastaigas, skriešana Visi sabiedriskie transporti @@ -2986,8 +2989,8 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Darīt Tikai WiFi tīklā Lejupielādēt bildes - "Rakstu bildes iespējams lejupielādēt arī bezsaistes lietošanai. -\nIestatījums pieejams caur \"Pārlūkot\" → \"Iespējas\"." + Rakstu bildes iespējams lejupielādēt bezsaistes lietošanai. +\nIestatījums pieejams caur \"Pārlūkot\" → \"Iespējas\". Tikai Wi-Fi tīklā Izvēlieties ceļojumu grāmatu Ceļojumu grāmata @@ -3045,12 +3048,12 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Jūras navigācijas stils: bojas, bākas, upju ceļi, jūras līnijas un zīmes, tauvas joslas, pakalpojumi, dziļuma kontūras. Slēpošanas stils: rāda slēpošanas trases, pacēlājus un citus ar slēpošanu saistītus izcēlumus. Mazāk uzmanību novērsoši sekundārie objekti uz kartes. Vienkāršs un kontrastains stils auto navigācijai. Saudzējošs acīm nakts režīmā. Īpašības: kontūrlīnijas, kontrastējoši oranži ceļi, mazāk uzmanību novērsoši sekundārie objekti uz kartes. - "Kontrastējošs stils pārgājieniem, trekingam un velo braukšanai brīvā dabā. Īpašības: kontrastējoši ceļi un dabas objekti, dažādi maršruti, kontūrlīnijas ar paplašinātiem iestatījumiem, vairāk detaļu mērogojot karti nekā noklusētajā stilā. Seguma integritātes opcija ļauj noteikt ceļa seguma kvalitāti. Nav nakts režīms." + Pārgājieniem, trekingam un velobraucieniem ārpus pilsētas. Vieglāk salasāms saulainā laikā, ar kontrastējošiem ceļiem un dabas objektiem, maršrutu tipiem, paplašinātiem iestatījumiem kontūrlīnijām, papildus detaļas. Ceļa seguma kvalitātes rādīšana. Bez nakts režīma. Vecāks \"Mapnik\" noklusētais stils. Īpašības: krāsu palete veidota \"Mapnik\" stilā. Vispārējas lietošanas stils. Vienkāršota caurskatāma renderēšana blīvi apdzīvotās vietās. Īpašības: kontūrlīnijas, maršruti, seguma kvalitāte, iebraukšanas ierobežojumi, ceļu numurācija, renderēšana pēc SAC skalas, ūdenssporta veidi. Palielināts detaļu daudzums tūristu vajadzībām. Iekļauj visas noklusētā stila konfigurēšanas opcijas, papildus: rāda pēc iespējas vairāk detaļu, īpaši ceļus, takas un pārējās iespējas pārvietoties. Vizuāli izceļ atšķirīgus ceļu veidus, līdzinoties tūristu kartēm. Augsta kontrasta krāsu palete lietošanai dienas un nakts režīmā. Grāmatzīme - "Piemērots braukšanai bezceļa apstākļos, kā arī piemērots lietošanai kopā ar zaļās krāsas satelīta bildēm apakšklāja veidā. Īpašības: samazināts galveno ceļu biezums, palielināts taku, celiņu, veloceliņu u.c. maršrutu līniju biezums. Veidots \"Topo\" stilā." + Bezceļa braukšanai ar \'Topo\' stila karti un lietošanai kopā ar zaļajiem satelīta uzņēmumiem kā apakšklāju. Samazināts galvenu ceļu līniju biezums, izcelti treki, takas, velo celiņi u.c. maršruti. Starppunkta ierašanās laiks Ierašanās laiks Uzlabots kontrasts kājāmgājēju un velosipēdu celiņiem. Izmanto vecākas Mapnik krāsas. @@ -3118,7 +3121,7 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl \n • Rāda azimutu iekš Mērīt Attālumu \n \n - "• Lietotnes profili: veidojiet personisku profilu savām vajadzībām, izvēlieties ikonu un krāsu + • Lietotnes profili: veidojiet personisku profilu savām vajadzībām, izvēlieties ikonu un krāsu \n \n • Tagad mainiet katra profila noklusējumus un min/max ātrumus \n @@ -3138,7 +3141,7 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl \n \n • Citi kļūdu labojumi \n -\n" +\n Visi zemāk esošie iestatījumi attiecas tikai uz izvēlēto profilu. OsmAnd lieto UTM standarta formātu, kas ir līdzīgs, bet ne vienāds ar UTM NATO formātu. Piemērs @@ -3269,7 +3272,7 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Atjaunot Rediģēt profilu sarakstu Rediģēt profilus - "OsmAnd pamata profilus nevar izdzēst, bet atspējot (no iepriekšējā ekrāna) vai pārkārtot uz leju." + OsmAnd pamata profilus nevar izdzēst, bet atspējot (uz iepriekšējā ekrāna) vai pārkārtot uz leju. Izvēlētais profils Nekas nav izvēlēts \ No newline at end of file From 83d226123507dcd1bec069e89be70d6936c3a2cf Mon Sep 17 00:00:00 2001 From: Softmap Date: Sat, 19 Sep 2020 11:39:50 +0000 Subject: [PATCH 29/80] Translated using Weblate (Arabic) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-ar/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 480c480efe..4c30071193 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -718,7 +718,7 @@ اللغة المحددة غير مدعومة من قبل محرك أندرويد لتحويل النص إلى كلام (TTS). ستُستخدم اللغة السابقة في المحرك ، هل تريد البحث عن محركات أخرى في السوق؟ البيانات ناقصة لا توجد بيانات مُثبّتة للغة المحددة. هل تريد أن تذهب إلى السوق لتثبيتها؟ - عكس المسار + عكس اتجاه المسار استخدم الوجهة الحالية يمر على طول المسار باكمله خريطة التنقل المتوفرة حاليا لهذا الموقع. From 011f650e473b623be6e673edea1d4b6af997ca9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1ns?= Date: Sun, 20 Sep 2020 23:11:38 +0000 Subject: [PATCH 30/80] Translated using Weblate (Galician) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-gl/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-gl/strings.xml b/OsmAnd/res/values-gl/strings.xml index c5e53fd258..18e88d4dab 100644 --- a/OsmAnd/res/values-gl/strings.xml +++ b/OsmAnd/res/values-gl/strings.xml @@ -897,7 +897,7 @@ A lingua escollida é incompatíbel co motor TTS (texto lido a voz) instalado no Android, empregarase a lingua TTS predefinida. Procurar outro motor TTS na tenda de aplicacións\? faltan datos Ir á tenda de aplicacións para baixar a lingua escollida\? - Inverter a dirección do GPX + Inverter dirección da pista Empregar o destino actual Percorrer toda a pista Hai un mapa vectorial sen conexión para este sitio. @@ -2708,7 +2708,7 @@ Lon %2$s Náutico Localización sen nome Túnel adiante - Túneis + Túneles Baixa os artigos da Wikipedia de %1$s para lelos sen conexión. Baixar datos da Wikipedia Abrir artigo en liña From 41e8ab7a742ed9fca7e06addc47d5cd21775bcba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1ns?= Date: Sun, 20 Sep 2020 16:13:25 +0000 Subject: [PATCH 31/80] Translated using Weblate (Galician) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-gl/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-gl/phrases.xml b/OsmAnd/res/values-gl/phrases.xml index ce9cdbbeea..82048f8ed6 100644 --- a/OsmAnd/res/values-gl/phrases.xml +++ b/OsmAnd/res/values-gl/phrases.xml @@ -36,7 +36,7 @@ Tenda de telefonía móbil Tenda de motos Instrumentos musicais - Axencia de xornalismo + Venda de prensa Produtos ecolóxicos Tenda de pinturas Tenda de animais From 69195c45c3422097c661b7990405b1bdd634bb9a Mon Sep 17 00:00:00 2001 From: Zmicer Turok Date: Mon, 21 Sep 2020 05:57:10 +0000 Subject: [PATCH 32/80] Translated using Weblate (Belarusian) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-be/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-be/phrases.xml b/OsmAnd/res/values-be/phrases.xml index b801ecedb5..f96eaef3ab 100644 --- a/OsmAnd/res/values-be/phrases.xml +++ b/OsmAnd/res/values-be/phrases.xml @@ -3843,4 +3843,5 @@ Затрымка Маленькія электрапрыборы Вулей + Крама арэхаў \ No newline at end of file From 80e9b94c6398be9dbbef79b4b13366c03f25401e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Sun, 20 Sep 2020 09:00:51 +0000 Subject: [PATCH 33/80] Translated using Weblate (Estonian) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-et/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-et/phrases.xml b/OsmAnd/res/values-et/phrases.xml index dc8cbbac79..6d72d50576 100644 --- a/OsmAnd/res/values-et/phrases.xml +++ b/OsmAnd/res/values-et/phrases.xml @@ -3,7 +3,7 @@ Pood Hädaabi Transport - Käsitsi tehtud + Rajatis Haridus Administratiiv Tervishoid From d9ecc225398659d059171f3a0f464cbb6f64871d Mon Sep 17 00:00:00 2001 From: Eduardo Addad de Oliveira Date: Sun, 20 Sep 2020 22:17:20 +0000 Subject: [PATCH 34/80] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-pt-rBR/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 1182d20a65..4ce78f580e 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -1174,7 +1174,7 @@ O idioma selecionado não é suportado pelo mecanismo Android TTS (conversão de texto em fala) instalado; o idioma predefinido do TTS será usado. Procura outro mecanismo TTS no mercado\? Faltam dados Ir a loja para baixar o idioma selecionado\? - Inverter direção GPX + Inverter direção da trilha Usar destino atual Percorrer toda a trilha Mapa vetorial off-line presente para esse local. @@ -3883,7 +3883,7 @@ Refazer "• Função de planejamento de rota atualizada: permite o uso de diferentes tipos de navegação por segmento e a inclusão de trilhas \n -\n • Novo menu de aparência para trilhas: selecione cor, espessura, setas de direção de exibição, ícones de início / término +\n • Novo menu de aparência para trilhas: selecione cor, espessura, setas de direção de exibição, ícones de início / término \n \n • Melhor visibilidade dos nós da bicicleta. \n From ed12bec770b5d30fffd13342ebf1ecea3325620a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Sun, 20 Sep 2020 08:06:58 +0000 Subject: [PATCH 35/80] Translated using Weblate (Estonian) Currently translated at 99.2% (3458 of 3484 strings) --- OsmAnd/res/values-et/strings.xml | 74 ++++++++++++++++---------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/OsmAnd/res/values-et/strings.xml b/OsmAnd/res/values-et/strings.xml index fea216bce3..f05f7fbf4c 100644 --- a/OsmAnd/res/values-et/strings.xml +++ b/OsmAnd/res/values-et/strings.xml @@ -811,7 +811,7 @@ Ärka pöördel Reguleeri kui kaua ekraan peaks olema sisse lülitatud. Kasuta lähedusandurit - Liiguta oma kätt üle ekraani ülaosa selle navigeerimise ajal sisse lülitamiseks. + Käe liigutamine üle ekraani lülitab selle sisse. 1. järk 2. järk 3. järk @@ -879,7 +879,7 @@ Analüütika Kuva navigeerimise ajal lukustuskuval kaarti. Marsruutimise seaded valitud profiilis \"%1$s\". - Ärkamisaeg + Aegumine peale ärkamist Ühikud ja formaadid Välimus Kaardi välimus @@ -1200,11 +1200,11 @@ Raja salvestamine Rajalõigud Rajapunktid - Selle lisaga saad ligipääsu mitut liiki veebikaartidele (nn paanid või rasterkaardid), alates eelnevalt määratletud OpenStreetMap-i paanidest (nagu Mapnik) kuni satelliidipiltide ja eriotstarbeliste kihtideni nagu ilmakaardid, kliimakaardid, geoloogilised kaardid, künklikihi kihid jne. -\n -\nKõiki neid kaarte saab kasutada kas peamise (põhi) kaardina, mida kuvatakse OsmAnd kaardil, või ülekattena või aluskihina mõnele muule põhikaardile (nagu OsmAndi standardsed võrguühenduseta kaardid). Mis tahes aluskihi paremini nähtavamaks muutmiseks saab OsmAndi vektorkaartide teatud elemente soovi korral hõlpsalt peita menüü \'Kaardi seadistamine\' abil. -\n -\nPlaatide kaarte saab hankida otse veebiallikatest või neid saab võrguühenduseta kasutamiseks ette valmistada (ja käsitsi kopeerida OsmAndi andmekataloogi) SQLite andmebaasina, mida saab toota mitmesuguste kolmandate osapoolte kaardi ettevalmistamise tööriistade abil. + Selle lisaga saad ligipääsu mitut liiki veebikaartidele (nn paanid või rasterkaardid), alates eelnevalt määratletud OpenStreetMap-i paanidest (nagu Mapnik) kuni satelliidipiltide ja eriotstarbeliste kihtideni nagu ilmakaardid, kliimakaardid, geoloogilised kaardid, künklikihi kihid jne. +\n +\nKõiki neid kaarte saad kasutada kas peamise (põhi) kaardina, mida kuvatakse OsmAnd kaardil, või ülekattena või aluskihina mõnele muule põhikaardile (nagu OsmAndi standardsed võrguühenduseta kaardid). Mis tahes aluskihi paremini nähtavamaks muutmiseks saad OsmAndi vektorkaartide teatud elemente soovi korral hõlpsalt peita menüü „Kaardi seadistamine“ abil. +\n +\nKaardipaane saad hankida otse veebiallikatest või neid saad võrguühenduseta kasutamiseks ette valmistada (ja käsitsi kopeerida OsmAndi andmekataloogi) SQLite andmebaasina, mida võid luua mitmesuguste kolmandate osapoolte kaardi ettevalmistamise tööriistade abil. Kõrgusjoonte lisa OsmAnd lisa võrguühenduseta kõrgusjoontele Kõrgusjooned @@ -1511,14 +1511,14 @@ Maailma aluskaart Versioon: Versiooni info, litsentsid, projekti liikmed - Suurendab laetud: %1$s - Aegub (minutit): %1$s + Allalaetud suumitasemed: %1$s + Aegumine (minutites): %1$s Alla laetav: %1$s Maksimaalne suurendus: %1$s Minimaalne suurendus: %1$s - Elliptiline merkator + Mercatori elliptiline projektsioon Maksimaalne suurendus - Aegumine (minutit) + Aegumine (minutites) Minimaalne suurendus URL Vali olemasolev… @@ -1529,7 +1529,7 @@ Ameerika Ühendriigid Kanada Euroopa, Aasia, Ladina-Ameerika ja sarnased - UK, India, Austraalia ja sarnased + Suurbritannia, India, Austraalia ja sarnased Teata… Tänavanimed (TTS) Kiiruspiirang @@ -2018,7 +2018,7 @@ Mittetoetatud keel Puuduvad andmed Mine turule valitud keele alla laadimiseks\? - Vastupidine GPX suund + Raja vastupidine suund Kasuta olemasoleva sihtkohta Mööda kogu rada Hääljuhiste väljund @@ -2417,7 +2417,7 @@ Vajalik kaartide alla laadimiseks. Asukoha otsing… Vaba ruum - OsmAnd andmekasutus (kaardid, GPX failid, jne.): %1$s. + OsmAnd\'i andmekasutus (kaardid, rajafailid, jne.): %1$s. Anna luba Anna ligipääs asukohale Hangi juhiseid ja avasta uusi kohti ilma internetiühenduseta @@ -2468,10 +2468,10 @@ Salvesta Andmed puuduvad Lülita sisse kiire salvestamine - Kuva teekonna salvestamist lubav süsteemi märguanne. + Kuva teekonna salvestamise algust lubav süsteemi märguanne. Märguanded - Sul pole veel ühtegi GPX faili - Võid lisada kausta ka GPX faile + Sul pole veel ühtegi rajafaili + Võid lisada kausta ka rajafaile Lisa veel… Välimus Peen @@ -2674,9 +2674,9 @@ Määra teedel lubatud sõiduki laius. Simuleeri oma asukohta kasutades salvestatud GPX rada. Nupp ekraani keskkoha lähtekohaks muutmiseks. Seejärel on kas võimalik valida sihtkohta või alustada teekonna arvutamist. - See lisa aktiveerib radade salvestamise funktsionaalsuse, puudutades käsitsi kaardil GPX logimisvidinat või logides automaatselt kõik oma navigeerimise marsruudid GPX faili. + See lisa aktiveerib radade salvestamise funktsionaalsuse, puudutades käsitsi kaardil GPX logimisvidinat või logides automaatselt kõik oma teekonnad GPX faili. \n -\nSalvestatud radu saab jagada oma sõpradega või kasutada OSM kaastöödeks. Sportlased saavad kasutada salvestatud radu oma treeningute jälgimiseks. Mõningast raja põhianalüüsi saab teha otse OsmAnd sees, näiteks ringiajad, keskmine kiirus jne. Lisaks muidugi saab radu hiljem analüüsia ka spetsiaalsetete 3. osapoolte analüüsitööriistadega. +\nSalvestatud radu saad jagada oma sõpradega või kasutada OSM kaastöödeks. Sportlased saavad kasutada salvestatud radu oma treeningute jälgimiseks. Mõningast raja põhianalüüsi saad teha otse OsmAnd sees, näiteks ringiajad, keskmine kiirus jne. Lisaks muidugi saad radu hiljem analüüsida ka spetsiaalsetete kolmandate osapoolte analüüsitööriistadega. See lisa pakub nii kõrgusjoonte ülekatte kui ka (reljeefse) künkavarjutuse kihi, mida kuvatakse OsmAnd standardkaartidel. Seda funktsionaalsust hindavad sportlased, matkajad, rändajad ja kõik teised, kes on huvitatud maastiku reljeefstruktuurist. \n \nGlobaalsed andmed (vahemikus 70 ° põhja ja 70 ° lõuna) põhinevad mõõtmistel, mille on teinud SRTM (süstiku radari topograafiamissioon) ja ASTER (täiustatud kosmose termilise kiirguse ja peegelduse radiomeeter), NASA maavaatlussatelliitide süsteemi lipulaeva Terra pardal olev pildistamisinstrument. ASTER on NASA, Jaapani majandus-, kaubandus- ja tööstusministeeriumi (METI) ja Jaapani kosmosesüsteemide (J-kosmosesüsteemid) koostöö. @@ -2707,9 +2707,9 @@ \nNii asukoht kui aeg on nähtavad nii OsmAnd armatuurlaual kui kaardi vidinas. Meeldetuletust saab lisada Androidi kalendrisse. Muuda kauguse mõõtmise ühikuid. Selleks, et reise kavandada ja punktide vahelist kaugust mõõta, loo teekondi kaardil koputades või olemasolevaid GPX-faile kasutades, Tulemusi saad salvestada GPX-failina, mida on hiljem võimalik juhendamiseks kasutada. - See lisa teeb seadme erivajadusega kasutajatele mõeldud funktsioonid otse OsmAndis kättesaadavaks. See lihtsustab nt. kõnesünteesi häälte kõnekiiruse reguleerimist, ekraanil navigeerimise suuna seadistamist, rulliku kasutamist suurenduse juhtimiseks või kõnesünteesi tagasisidet, näiteks oma asukoha automaatseks teatamiseks. - See lisa võimaldab OsmAnd abil OSM kaastöid teha, näiteks OSM huvipunkte luua või muuta, OSM märkmeid avada või kommenteerida ning salvestatud GPX faile lisada. OSM on kogukonna juhitud globaalne üldkasutatav kaardistamisprojekt. Üksikasju leiad https://openstreetmap.org. Aktiivset osalemist hinnatakse ja panust saab teha otse OsmAnd rakendusest, kui seadistada rakenduses oma isiklikud OSM kasutajatunnused. - See lisa kuvab arendus- ja silumisfunktsioonide sätteid nagu teekonna arvutamine, renderdamise jõudlus või hääljuhiste testimine ja simuleerimine. Need seaded on mõeldud arendajatele ja pole tavakasutaja jaoks vajalikud. + Teeb seadme erivajadusega kasutajatele mõeldud funktsioonid otse OsmAndis kättesaadavaks. See lihtsustab näiteks kõnesünteesi häälte kõnekiiruse reguleerimist, ekraanil navigeerimise suuna seadistamist, rulliku kasutamist suurenduse juhtimiseks või kõnesünteesi tagasisidet, näiteks oma asukoha automaatseks teatamiseks. + Tee OsmAnd\'i abil OSM\'i kaastöid, näiteks loo või muuda OSM\'i huvipunkte, ava või kommenteeri OSM\'i märkmeid ning lisa salvestatud GPX faile. Selleks sisesta oma OSM\'i kasutajanimi ja salasõna. OSM on kogukonna juhitud globaalne vaba litsentsi alusel avaldatud kaardistamisprojekt. + Arendus- ja silumisfunktsioonide seadistused, nagu teekonna simulatsioon, renderdamise jõudlus või hääljuhiste testimine. Need seaded on mõeldud arendajatele ja pole tavakasutaja jaoks vajalikud. Vali alternatiivne teekond, valides välditavad teed Kasuta riistvarakiirendatud OpenGL tuge (võib kasutada rohkem akut või mitte töötada väga vanades seadmetes). %1$s vajab seda luba ekraani välja lülitamiseks energiasäästu nimel. @@ -3226,7 +3226,7 @@ \n Enamik maailma riike üle on allalaadimiseks saadaval! \n Hangi oma riigis usaldusväärne navigaator - olgu see siis Prantsusmaa, Saksamaa, Mehhiko, UK, Hispaania, Holland, USA, Venemaa, Brasiilia või mõni muu. OsmAnd + (OSM automatiseeritud navigeerimisjuhised) on kaardi- ja navigatsioonirakendus, millel on juurdepääs tasuta, ülemaailmsetele ja kvaliteetsetele OpenStreetMap (OSM) andmetele. -\n Naudi hääl- ja optilist navigeerimist, HP-de (huvipunktide) vaatamist, GPX radade loomist ja haldamist, kasutades kõrgusjoonte visuaalset kuvamist ja kõrgusteavet, valikut autosõidu, jalgrattasõidu, jalakäijate režiimide, OSM redigeerimise ja palju muu vahel. +\n Naudi hääl- ja optilist navigeerimist, HP-de (huvipunktide) vaatamist, GPX radade loomist ja haldamist, kasutades kõrgusjoonte visuaalset kuvamist ja kõrgusteavet, valikut autosõidu, jalgrattasõidu, jalakäijate režiimide, OSM\'i andmete muutmuise ja palju muu vahel. \n \n OsmAnd+ on rakenduse tasuline versioon. Selle ostmisega toetad projekti, rahastad uute funktsioonide arendamist ja saad kõige värskemaid uuendusi. \n @@ -3267,19 +3267,19 @@ \n • Valikuline reisi salvestamine ka taustrežiimis (kui seade on puhkeolekus) \n OsmAnd on aktiivselt arendatud avatud lähtekoodiga tarkvara. Kõik saavad rakendusse panustada, teatades vigadest, parandades tõlkeid või kodeerides uusi funktsioone. Lisaks toetub projekt rahalisele toetusele koodide kodeerimiseks ja uute funktsioonide testimiseks. \n - Ligikaudne kaardi leviala ja kvaliteet: -\n • Lääne-Euroopa: **** -\n • Ida-Euroopa: *** -\n • Venemaa: *** -\n • Põhja-Ameerika: *** -\n • Lõuna-Ameerika: ** -\n • Aasia: ** -\n • Jaapan ja Korea: *** -\n • Lähis-Ida: ** -\n • Aafrika: ** -\n • Antarktika: * -\n Enamik riike kogu maailmas on saadaval alla laadimiseks -\n Afganistanist Zimbabweni, Austraaliast USA-ni. Argentiina, Brasiilia, Kanada, Prantsusmaa, Saksamaa, Mehhiko, UK, Hispaania, … + Ligikaudne kaardi leviala ja kvaliteet: +\n • Lääne-Euroopa: **** +\n • Ida-Euroopa: *** +\n • Venemaa: *** +\n • Põhja-Ameerika: *** +\n • Lõuna-Ameerika: ** +\n • Aasia: ** +\n • Jaapan ja Korea: *** +\n • Lähis-Ida: ** +\n • Aafrika: ** +\n • Antarktika: * +\n Enamike riikide andmed üle maailma on saadaval allalaadimiseks +\n Afganistanist Zimbabweni, Austraaliast Ameerika Ühendriikideni. Argentina, Brasiilia, Kanada, Prantsusmaa, Saksamaa, Mehhiko, Suurbritannia, Hispaania, … \n Nimi sisaldab liiga palju suurtähti. Jätkata\? Proovi uuesti @@ -3753,4 +3753,6 @@ \n • Parandatud on profiili seadistuste impordi ja ekspordiga seotud vead \n \n + Peata teekonna salvestamine + Jätka teekonna salvestamist \ No newline at end of file From d73b02dc1d07302cbf334ba652c0eb65acd4236c Mon Sep 17 00:00:00 2001 From: Verdulo Date: Sun, 20 Sep 2020 15:32:38 +0000 Subject: [PATCH 36/80] Translated using Weblate (Esperanto) Currently translated at 99.6% (3812 of 3824 strings) --- OsmAnd/res/values-eo/phrases.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/OsmAnd/res/values-eo/phrases.xml b/OsmAnd/res/values-eo/phrases.xml index cc31985829..ac3f84fe04 100644 --- a/OsmAnd/res/values-eo/phrases.xml +++ b/OsmAnd/res/values-eo/phrases.xml @@ -831,7 +831,7 @@ Rostilo Laborejo de agrokulturaj maŝinoj Laborejo de korbisto - Abelistejo + Abelejo Forĝejo Bierfarejo Boat-konstruejo @@ -849,7 +849,7 @@ Poŝ-horloĝistejo Varmizolaĵistejo Laborejo de juvelisto - Seruristejo + Laborejo de seruristo Ŝlosil-kopiistejo Laborejo de metal-konstruaĵisto Okulvitristejo @@ -1852,7 +1852,7 @@ Oficejo de konsilado Oficejo de kunlaborado Oficejo de arbarkultivo - Oficejo de provizarto + Oficejo de ekspedo Oficejo de paroĥo Oficejo de eldonisto benzino 91-oktannombra senplumba @@ -3031,7 +3031,7 @@ Bestonutrejo Okazaĵaj-provizoj-vendejo Elektraĵ-vendejo - Seruristejo + Laborejo de seruristo Prilumigad-aparata vendejo Loteri-bileta kiosko Hazardludejo @@ -3719,7 +3719,7 @@ Bakejo (ne vendejo) Laborejo de meblisto Pago - Dombesta beligejo + Hejmbesta beligejo Bankaŭtomato: jes Elpago de mono Elpago de mono: jes From eb4fa3265a96bb71a70d3e846f05aa5da8ea9ddd Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Sun, 20 Sep 2020 02:04:45 +0000 Subject: [PATCH 37/80] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 33b644b362..c55a555aff 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -429,7 +429,7 @@ 選定的語言未被已安裝的 Android TTS(文字轉語音)引擎支援,其將會使用預先設定的 TTS 語言。要在市集中尋找其他 TTS 引擎嗎? 資料遺失 要轉到商店下載所選擇的語言嗎? - 反轉 GPX 方向 + 反轉軌跡方向 使用目前的目的地 沿著整條軌跡往前 此位置目前有向量地圖可以使用。 From 3eef30e12aa5c5472684a488757ed8c45d97317c Mon Sep 17 00:00:00 2001 From: max-klaus Date: Mon, 21 Sep 2020 11:54:13 +0300 Subject: [PATCH 38/80] Fix possible npe --- .../audionotes/AudioVideoNotesPlugin.java | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index 4f2c3fa11f..de3453550f 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -1430,22 +1430,24 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { getMapActivity().getMyApplication().runInUIThread(new Runnable() { @Override public void run() { - if (!autofocus) { - cam.takePicture(null, null, new JpegPhotoHandler()); - } else { - cam.autoFocus(new Camera.AutoFocusCallback() { - @Override - public void onAutoFocus(boolean success, Camera camera) { - try { - cam.takePicture(null, null, new JpegPhotoHandler()); - } catch (Exception e) { - logErr(e); - closeRecordingMenu(); - closeCamera(); - finishRecording(); + if (cam != null) { + if (!autofocus) { + cam.takePicture(null, null, new JpegPhotoHandler()); + } else { + cam.autoFocus(new Camera.AutoFocusCallback() { + @Override + public void onAutoFocus(boolean success, Camera camera) { + try { + cam.takePicture(null, null, new JpegPhotoHandler()); + } catch (Exception e) { + logErr(e); + closeRecordingMenu(); + closeCamera(); + finishRecording(); + } } - } - }); + }); + } } } }, 200); From 17351e2e88de4c9ffa194cb949713e3a4acea021 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Mon, 21 Sep 2020 12:17:45 +0300 Subject: [PATCH 39/80] Fix fav group image npe --- OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java | 1 + .../controllers/FavouritePointMenuController.java | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java b/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java index ad0eb9d359..6ebdaea6b4 100644 --- a/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java +++ b/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java @@ -129,6 +129,7 @@ public class FavouritesDbHelper { } } + @Nullable public Drawable getColoredIconForGroup(String groupName) { String groupIdName = FavoriteGroup.convertDisplayNameToGroupIdName(context, groupName); FavoriteGroup favoriteGroup = getGroup(groupIdName); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/FavouritePointMenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/FavouritePointMenuController.java index a6a84bee67..d5a484f68f 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/FavouritePointMenuController.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/FavouritePointMenuController.java @@ -5,6 +5,7 @@ import android.graphics.drawable.Drawable; import android.text.SpannableString; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; @@ -180,8 +181,8 @@ public class FavouritePointMenuController extends MenuController { OsmandApplication app = mapActivity.getMyApplication(); FavouritesDbHelper helper = app.getFavorites(); String group = fav.getCategory(); - if (helper.getGroup(group) != null) { - Drawable line2icon = helper.getColoredIconForGroup(group); + Drawable line2icon = helper.getGroup(group) != null ? helper.getColoredIconForGroup(group) : null; + if (line2icon != null) { GravityDrawable gravityIcon = new GravityDrawable(line2icon); gravityIcon.setBoundsFrom(line2icon); return gravityIcon; From 55dc6816001a8720361455d2cc644f5c20d28d74 Mon Sep 17 00:00:00 2001 From: Eugene <44466116+EugeneZmeuk@users.noreply.github.com> Date: Mon, 21 Sep 2020 14:09:51 +0300 Subject: [PATCH 40/80] Update HelpActivity.java --- OsmAnd/src/net/osmand/plus/activities/HelpActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java index da95de3931..667ee07614 100644 --- a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java @@ -142,7 +142,7 @@ public class HelpActivity extends OsmandActionBarActivity implements AdapterView contextMenuAdapter.addItem(createItem(R.string.travel_item, NULL_ID, "feature_articles/travel.html")); contextMenuAdapter.addItem(createItem(R.string.measure_distance_item, NULL_ID, - "feature_articles/measure-distance.html")); + "feature_articles/plan-route.html")); contextMenuAdapter.addItem(createItem(R.string.radius_ruler_item, NULL_ID, "feature_articles/ruler.html")); contextMenuAdapter.addItem(createItem(R.string.quick_action_item, NULL_ID, From ddf9e054153ddcdd50df365772f557d879a8ce5e Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 21 Sep 2020 17:05:19 +0300 Subject: [PATCH 41/80] Open my places from saved track dialog and fix check for points in plan route --- .../MeasurementToolFragment.java | 4 ++-- .../SavedTrackBottomSheetDialogFragment.java | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index 8c6693a8b6..647353f9b7 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -628,7 +628,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route toolBarController.setTitle(getString(R.string.route_between_points)); mapActivity.refreshMap(); - if (editingCtx.isNewData() || editingCtx.hasRoutePoints() || editingCtx.hasRoute() || editingCtx.getPointsCount() < 2) { + if (editingCtx.isNewData() || editingCtx.hasRoutePoints() || editingCtx.hasRoute() || editingCtx.getPointsCount() <= 2) { RouteBetweenPointsBottomSheetDialogFragment.showInstance(mapActivity.getSupportFragmentManager(), this, RouteBetweenPointsDialogType.WHOLE_ROUTE_CALCULATION, editingCtx.getLastCalculationMode() == CalculationMode.NEXT_SEGMENT @@ -1675,7 +1675,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route break; case SHOW_IS_SAVED_FRAGMENT: SavedTrackBottomSheetDialogFragment.showInstance(mapActivity.getSupportFragmentManager(), - toSave.getName()); + toSave.getAbsolutePath()); dismiss(mapActivity); break; case SHOW_TOAST: diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/SavedTrackBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/SavedTrackBottomSheetDialogFragment.java index 12f2be4cc8..29d48411fb 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/SavedTrackBottomSheetDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/SavedTrackBottomSheetDialogFragment.java @@ -1,21 +1,26 @@ package net.osmand.plus.measurementtool; import android.app.Activity; +import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; +import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.activities.TrackActivity; import net.osmand.plus.base.MenuBottomSheetDialogFragment; import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemButton; import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; import net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerItem; import net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerSpaceItem; +import net.osmand.util.Algorithms; public class SavedTrackBottomSheetDialogFragment extends MenuBottomSheetDialogFragment { @@ -34,7 +39,7 @@ public class SavedTrackBottomSheetDialogFragment extends MenuBottomSheetDialogFr View mainView = View.inflate(UiUtilities.getThemedContext(getMyApplication(), nightMode), R.layout.measure_track_is_saved, null); TextView fileNameView = mainView.findViewById(R.id.file_name); - fileNameView.setText(fileName); + fileNameView.setText(Algorithms.getFileWithoutDirs(fileName)); items.add(new SimpleBottomSheetItem.Builder() .setCustomView(mainView) .create()); @@ -51,10 +56,13 @@ public class SavedTrackBottomSheetDialogFragment extends MenuBottomSheetDialogFr .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Activity activity = getActivity(); - if (activity instanceof MapActivity) { - MeasurementToolFragment.showInstance(((MapActivity) activity).getSupportFragmentManager(), - fileName); + FragmentActivity activity = getActivity(); + if (activity != null && !Algorithms.isEmpty(fileName)) { + OsmandApplication app = ((OsmandApplication) activity.getApplication()); + Intent newIntent = new Intent(activity, app.getAppCustomization().getTrackActivity()); + newIntent.putExtra(TrackActivity.TRACK_FILE_NAME, fileName); + newIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + activity.startActivity(newIntent); } dismiss(); } From dcc3c09d75c1e291b8758067ad946f7542d05654 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Mon, 21 Sep 2020 17:07:05 +0300 Subject: [PATCH 42/80] Fix geocoding --- .../net/osmand/binary/GeocodingUtilities.java | 14 ++++---- .../osmand/plus/CurrentPositionHelper.java | 33 ++++++++++++++++--- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/binary/GeocodingUtilities.java b/OsmAnd-java/src/main/java/net/osmand/binary/GeocodingUtilities.java index 77357bac9b..a372f12aa1 100644 --- a/OsmAnd-java/src/main/java/net/osmand/binary/GeocodingUtilities.java +++ b/OsmAnd-java/src/main/java/net/osmand/binary/GeocodingUtilities.java @@ -334,14 +334,16 @@ public class GeocodingUtilities { boolean eqStreet = Algorithms.stringsEqual(gr1.streetName, gr2.streetName); if (eqStreet) { boolean sameObj = false; - if (gr1.building != null && gr2.building != null) { - if (Algorithms.stringsEqual(gr1.building.getName(), gr2.building.getName())) { - // same building + if (gr1.city != null && gr2.city != null) { + if (gr1.building != null && gr2.building != null) { + if (Algorithms.stringsEqual(gr1.building.getName(), gr2.building.getName())) { + // same building + sameObj = true; + } + } else if (gr1.building == null && gr2.building == null) { + // same street sameObj = true; } - } else if (gr1.building == null && gr2.building == null) { - // same street - sameObj = true; } if (sameObj) { double cityDist1 = MapUtils.getDistance(gr1.searchPoint, gr1.city.getLocation()); diff --git a/OsmAnd/src/net/osmand/plus/CurrentPositionHelper.java b/OsmAnd/src/net/osmand/plus/CurrentPositionHelper.java index a50a345aa3..cbbd36162f 100644 --- a/OsmAnd/src/net/osmand/plus/CurrentPositionHelper.java +++ b/OsmAnd/src/net/osmand/plus/CurrentPositionHelper.java @@ -25,7 +25,6 @@ import org.apache.commons.logging.Log; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.concurrent.ExecutorService; @@ -154,7 +153,7 @@ public class CurrentPositionHelper { // single synchronized method private synchronized void processGeocoding(@NonNull Location loc, - @Nullable ResultMatcher geoCoding, + @Nullable final ResultMatcher geoCoding, boolean storeFound, boolean allowEmptyNames, @Nullable final ResultMatcher result, @@ -164,6 +163,21 @@ public class CurrentPositionHelper { boolean cancelPreviousSearch) { if (cancelPreviousSearch && request != requestNumber.get()) { + if (geoCoding != null) { + app.runInUIThread(new Runnable() { + @Override + public void run() { + geoCoding.publish(null); + } + }); + } else if (result != null) { + app.runInUIThread(new Runnable() { + @Override + public void run() { + result.publish(null); + } + }); + } return; } @@ -172,9 +186,18 @@ public class CurrentPositionHelper { if (storeFound) { lastAskedLocation = loc; lastFound = gr == null || gr.isEmpty() ? null : gr.get(0).point.getRoad(); - } else if(geoCoding != null) { - justifyResult(gr, geoCoding); - } else if(result != null) { + } else if (geoCoding != null) { + try { + justifyResult(gr, geoCoding); + } catch (Exception e) { + app.runInUIThread(new Runnable() { + @Override + public void run() { + geoCoding.publish(null); + } + }); + } + } else if (result != null) { app.runInUIThread(new Runnable() { @Override public void run() { From 27345198225facfb778f0368de593bd97ac50a21 Mon Sep 17 00:00:00 2001 From: Nazar-Kutz Date: Mon, 21 Sep 2020 17:12:56 +0300 Subject: [PATCH 43/80] Fix CustomRadioButton in RTL --- OsmAnd/src/net/osmand/plus/UiUtilities.java | 43 +++++++++++-------- ...etweenPointsBottomSheetDialogFragment.java | 6 +-- .../cards/NavigateTrackOptionsCard.java | 16 +++---- .../plus/srtmplugin/TerrainFragment.java | 4 +- 4 files changed, 39 insertions(+), 30 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/UiUtilities.java b/OsmAnd/src/net/osmand/plus/UiUtilities.java index a435bd975e..5af06d9f23 100644 --- a/OsmAnd/src/net/osmand/plus/UiUtilities.java +++ b/OsmAnd/src/net/osmand/plus/UiUtilities.java @@ -93,8 +93,8 @@ public class UiUtilities { } public enum CustomRadioButtonType { - LEFT, - RIGHT, + START, + END, } public UiUtilities(OsmandApplication app) { @@ -459,26 +459,35 @@ public class UiUtilities { ? R.color.text_color_primary_dark : R.color.text_color_primary_light); int radius = AndroidUtils.dpToPx(app, 4); + boolean isLayoutRtl = AndroidUtils.isLayoutRtl(app); - TextView leftButtonText = buttonsView.findViewById(R.id.left_button); - View leftButtonContainer = buttonsView.findViewById(R.id.left_button_container); - TextView rightButtonText = buttonsView.findViewById(R.id.right_button); - View rightButtonContainer = buttonsView.findViewById(R.id.right_button_container); + TextView startButtonText = buttonsView.findViewById(R.id.left_button); + View startButtonContainer = buttonsView.findViewById(R.id.left_button_container); + TextView endButtonText = buttonsView.findViewById(R.id.right_button); + View endButtonContainer = buttonsView.findViewById(R.id.right_button_container); GradientDrawable background = new GradientDrawable(); background.setColor(UiUtilities.getColorWithAlpha(activeColor, 0.1f)); background.setStroke(AndroidUtils.dpToPx(app, 1), UiUtilities.getColorWithAlpha(activeColor, 0.5f)); - if (buttonType == CustomRadioButtonType.LEFT) { - background.setCornerRadii(new float[]{radius, radius, 0, 0, 0, 0, radius, radius}); - rightButtonContainer.setBackgroundColor(Color.TRANSPARENT); - rightButtonText.setTextColor(activeColor); - leftButtonContainer.setBackgroundDrawable(background); - leftButtonText.setTextColor(textColor); + if (buttonType == CustomRadioButtonType.START) { + if (isLayoutRtl) { + background.setCornerRadii(new float[]{0, 0, radius, radius, radius, radius, 0, 0}); + } else { + background.setCornerRadii(new float[]{radius, radius, 0, 0, 0, 0, radius, radius}); + } + endButtonContainer.setBackgroundColor(Color.TRANSPARENT); + endButtonText.setTextColor(activeColor); + startButtonContainer.setBackgroundDrawable(background); + startButtonText.setTextColor(textColor); } else { - background.setCornerRadii(new float[]{0, 0, radius, radius, radius, radius, 0, 0}); - rightButtonContainer.setBackgroundDrawable(background); - rightButtonText.setTextColor(textColor); - leftButtonContainer.setBackgroundColor(Color.TRANSPARENT); - leftButtonText.setTextColor(activeColor); + if (isLayoutRtl) { + background.setCornerRadii(new float[]{radius, radius, 0, 0, 0, 0, radius, radius}); + } else { + background.setCornerRadii(new float[]{0, 0, radius, radius, radius, radius, 0, 0}); + } + endButtonContainer.setBackgroundDrawable(background); + endButtonText.setTextColor(textColor); + startButtonContainer.setBackgroundColor(Color.TRANSPARENT); + startButtonText.setTextColor(activeColor); } } diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/RouteBetweenPointsBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/RouteBetweenPointsBottomSheetDialogFragment.java index 77f3909e62..8feb1ecf5c 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/RouteBetweenPointsBottomSheetDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/RouteBetweenPointsBottomSheetDialogFragment.java @@ -27,8 +27,8 @@ import org.apache.commons.logging.Log; import java.util.ArrayList; import java.util.List; -import static net.osmand.plus.UiUtilities.CustomRadioButtonType.LEFT; -import static net.osmand.plus.UiUtilities.CustomRadioButtonType.RIGHT; +import static net.osmand.plus.UiUtilities.CustomRadioButtonType.START; +import static net.osmand.plus.UiUtilities.CustomRadioButtonType.END; import static net.osmand.plus.measurementtool.MeasurementEditingContext.DEFAULT_APP_MODE; import static net.osmand.plus.measurementtool.SelectFileBottomSheet.BOTTOM_SHEET_HEIGHT_DP; @@ -136,7 +136,7 @@ public class RouteBetweenPointsBottomSheetDialogFragment extends BottomSheetBeha public void updateModeButtons() { UiUtilities.updateCustomRadioButtons(getMyApplication(), customRadioButton, nightMode, - defaultDialogMode == RouteBetweenPointsDialogMode.SINGLE ? LEFT : RIGHT); + defaultDialogMode == RouteBetweenPointsDialogMode.SINGLE ? START : END); btnDescription.setText(getButtonDescr(defaultDialogMode)); } diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/NavigateTrackOptionsCard.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/NavigateTrackOptionsCard.java index 4e3adfa29e..b2b819d269 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/NavigateTrackOptionsCard.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/NavigateTrackOptionsCard.java @@ -11,8 +11,8 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameter; import static net.osmand.plus.UiUtilities.CustomRadioButtonType; -import static net.osmand.plus.UiUtilities.CustomRadioButtonType.LEFT; -import static net.osmand.plus.UiUtilities.CustomRadioButtonType.RIGHT; +import static net.osmand.plus.UiUtilities.CustomRadioButtonType.START; +import static net.osmand.plus.UiUtilities.CustomRadioButtonType.END; public class NavigateTrackOptionsCard extends BaseCard { @@ -45,7 +45,7 @@ public class NavigateTrackOptionsCard extends BaseCard { TextView description = parameterView.findViewById(R.id.description); boolean enabled = passWholeRoute.isSelected(app.getSettings()); - CustomRadioButtonType buttonType = enabled ? LEFT : RIGHT; + CustomRadioButtonType buttonType = enabled ? START : END; UiUtilities.updateCustomRadioButtons(app, buttonsView, nightMode, buttonType); leftButton.setText(R.string.start_of_the_track); @@ -56,7 +56,7 @@ public class NavigateTrackOptionsCard extends BaseCard { @Override public void onClick(View v) { if (!passWholeRoute.isSelected(app.getSettings())) { - applyParameter(parameterView, passWholeRoute, LEFT, true); + applyParameter(parameterView, passWholeRoute, START, true); } } }); @@ -64,7 +64,7 @@ public class NavigateTrackOptionsCard extends BaseCard { @Override public void onClick(View v) { if (passWholeRoute.isSelected(app.getSettings())) { - applyParameter(parameterView, passWholeRoute, RIGHT, false); + applyParameter(parameterView, passWholeRoute, END, false); } } }); @@ -81,14 +81,14 @@ public class NavigateTrackOptionsCard extends BaseCard { rightButton.setText(app.getRoutingHelper().getAppMode().toHumanString()); boolean enabled = navigationType.isSelected(app.getSettings()); - CustomRadioButtonType buttonType = enabled ? RIGHT : LEFT; + CustomRadioButtonType buttonType = enabled ? END : START; UiUtilities.updateCustomRadioButtons(app, buttonsView, nightMode, buttonType); leftButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (navigationType.isSelected(app.getSettings())) { - applyParameter(parameterView, navigationType, LEFT, false); + applyParameter(parameterView, navigationType, START, false); } } }); @@ -96,7 +96,7 @@ public class NavigateTrackOptionsCard extends BaseCard { @Override public void onClick(View v) { if (!navigationType.isSelected(app.getSettings())) { - applyParameter(parameterView, navigationType, RIGHT, true); + applyParameter(parameterView, navigationType, END, true); } } }); diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java b/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java index f1517bbaea..b613d2ba13 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java @@ -291,9 +291,9 @@ public class TerrainFragment extends BaseOsmAndFragment implements View.OnClickL private void adjustModeButtons(TerrainMode mode) { if (mode == SLOPE) { - UiUtilities.updateCustomRadioButtons(app, customRadioButton, nightMode, RIGHT); + UiUtilities.updateCustomRadioButtons(app, customRadioButton, nightMode, END); } else { - UiUtilities.updateCustomRadioButtons(app, customRadioButton, nightMode, LEFT); + UiUtilities.updateCustomRadioButtons(app, customRadioButton, nightMode, START); } } From 7af6e0aa9e1d22e74ed7610bc9925caed0522680 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Mon, 21 Sep 2020 17:46:09 +0300 Subject: [PATCH 44/80] Upgrade appcompat to 1.2.0 --- OsmAnd/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle index 80c70c84b4..0e5734f212 100644 --- a/OsmAnd/build.gradle +++ b/OsmAnd/build.gradle @@ -523,7 +523,7 @@ dependencies { implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.gridlayout:gridlayout:1.0.0' implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.2.1' implementation 'androidx.browser:browser:1.0.0' implementation 'androidx.preference:preference:1.1.0' From 7094c500e2dbc6ffadcd4904dd743593ed0b8bd0 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Mon, 21 Sep 2020 18:27:51 +0300 Subject: [PATCH 45/80] Fix strings --- OsmAnd/res/values-ru/strings.xml | 2 +- OsmAnd/res/values-uk/strings.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index f8ae3f5674..b9fb3e2dbc 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -3845,7 +3845,7 @@ Маршрут трека Добавить файлы треков Импортируйте или запишите файлы треков - Добавить точку + Добавить путевую точку Добавить точку к треку Запись поездки Сохранить как файл трека diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index d3a1ebd846..367b37541e 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -1031,7 +1031,7 @@ Очистити проміжні точки Ви вже задали проміжні точки. Маршрут до - Напрямки від + Напрямок від До: Оголошувати… Налаштувати оголошення назв вулиць, дорожніх обмежень (вимушені зупинки, долішні (лежачі) поліцейські), попередження про камери контролю швидкості, обмеження швидкості. @@ -3846,7 +3846,7 @@ Додати шляхову точку треку Записування подорожі Зберегти як файл треку - Стежити за треком + Навігація за треком Виберіть файл треку для перегляду Виберіть файл треку для перегляду або імпортуйте його з пристрою. Обрати інший трек From fc19e390048e4790bb7546c6c739d309eebb5f24 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 21 Sep 2020 19:23:10 +0300 Subject: [PATCH 46/80] Add followTrackMode to plan route menu --- .../MeasurementToolFragment.java | 83 ++++++++++++------- .../FollowTrackFragment.java | 2 +- 2 files changed, 56 insertions(+), 29 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index 647353f9b7..bea960389d 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -138,6 +138,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route private boolean pointsListOpened; private boolean planRouteMode = false; private boolean directionMode = false; + private boolean followTrackMode = false; private boolean approximationApplied = false; private boolean portrait; private boolean nightMode; @@ -174,6 +175,10 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route this.directionMode = directionMode; } + private void setFollowTrackMode(boolean followTrackMode) { + this.followTrackMode = followTrackMode; + } + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -441,7 +446,11 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route toolBarController.setOnSaveViewClickListener(new OnClickListener() { @Override public void onClick(View v) { - saveChanges(FinalSaveAction.SHOW_SNACK_BAR_AND_CLOSE, false); + if (followTrackMode) { + startTrackNavigation(); + } else { + saveChanges(FinalSaveAction.SHOW_SNACK_BAR_AND_CLOSE, false); + } } }); updateToolbar(); @@ -486,7 +495,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route } public boolean isInEditMode() { - return !planRouteMode && !editingCtx.isNewData() && !directionMode; + return !planRouteMode && !editingCtx.isNewData() && !directionMode && !followTrackMode; } public void setFileName(String fileName) { @@ -749,16 +758,23 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route private void runNavigation(final GPXFile gpx, final ApplicationMode appMode) { MapActivity mapActivity = getMapActivity(); if (mapActivity != null) { - if (mapActivity.getMyApplication().getRoutingHelper().isFollowingMode()) { - mapActivity.getMapActions().stopNavigationActionConfirm(new Runnable() { - @Override - public void run() { - MapActivity mapActivity = getMapActivity(); - if (mapActivity != null) { - mapActivity.getMapActions().enterRoutePlanningModeGivenGpx(gpx, appMode, null, null, true, true, MenuState.HEADER_ONLY); + OsmandApplication app = mapActivity.getMyApplication(); + if (app.getRoutingHelper().isFollowingMode()) { + if (followTrackMode) { + mapActivity.getMapActions().setGPXRouteParams(gpx); + app.getTargetPointsHelper().updateRouteAndRefresh(true); + app.getRoutingHelper().recalculateRouteDueToSettingsChange(); + } else { + mapActivity.getMapActions().stopNavigationActionConfirm(new Runnable() { + @Override + public void run() { + MapActivity mapActivity = getMapActivity(); + if (mapActivity != null) { + mapActivity.getMapActions().enterRoutePlanningModeGivenGpx(gpx, appMode, null, null, true, true, MenuState.HEADER_ONLY); + } } - } - }); + }); + } } else { mapActivity.getMapActions().stopNavigationWithoutConfirm(); mapActivity.getMapActions().enterRoutePlanningModeGivenGpx(gpx, appMode, null, null, true, true, MenuState.HEADER_ONLY); @@ -1843,7 +1859,15 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route cancelAddPointBeforeOrAfterMode(); return; } - showQuitDialog(hidePointsListFirst); + if (followTrackMode) { + MapActivity mapActivity = getMapActivity(); + if (mapActivity != null) { + mapActivity.getMapLayers().getMapControlsLayer().showRouteInfoControlDialog(); + dismiss(mapActivity); + } + } else { + showQuitDialog(hidePointsListFirst); + } } private void showQuitDialog(boolean hidePointsListFirst) { @@ -1909,11 +1933,10 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route } public static boolean showInstance(FragmentManager fragmentManager, MeasurementEditingContext editingCtx, - boolean planRoute, boolean directionMode) { + boolean followTrackMode) { MeasurementToolFragment fragment = new MeasurementToolFragment(); fragment.setEditingCtx(editingCtx); - fragment.setPlanRouteMode(planRoute); - fragment.setDirectionMode(directionMode); + fragment.setFollowTrackMode(followTrackMode); return showFragment(fragment, fragmentManager); } @@ -2010,23 +2033,27 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route exitApproximationMode(); doAddOrMovePointCommonStuff(); updateSnapToRoadControls(); - if (directionMode) { + if (directionMode || followTrackMode) { directionMode = false; - MapActivity mapActivity = getMapActivity(); - if (mapActivity != null) { - if (editingCtx.hasRoute()) { - String trackName = getSuggestedFileName(); - GPXFile gpx = editingCtx.exportRouteAsGpx(trackName); - if (gpx != null) { - ApplicationMode appMode = editingCtx.getAppMode(); - dismiss(mapActivity); - runNavigation(gpx, appMode); - } else { - Toast.makeText(mapActivity, getString(R.string.error_occurred_saving_gpx), Toast.LENGTH_SHORT).show(); - } + startTrackNavigation(); + } + } + + private void startTrackNavigation() { + MapActivity mapActivity = getMapActivity(); + if (mapActivity != null) { + if (editingCtx.hasRoute()) { + String trackName = getSuggestedFileName(); + GPXFile gpx = editingCtx.exportRouteAsGpx(trackName); + if (gpx != null) { + ApplicationMode appMode = editingCtx.getAppMode(); + dismiss(mapActivity); + runNavigation(gpx, appMode); } else { Toast.makeText(mapActivity, getString(R.string.error_occurred_saving_gpx), Toast.LENGTH_SHORT).show(); } + } else { + Toast.makeText(mapActivity, getString(R.string.error_occurred_saving_gpx), Toast.LENGTH_SHORT).show(); } } } diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java index 4884fe616c..dcfa4fa6ef 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java @@ -542,7 +542,7 @@ public class FollowTrackFragment extends ContextMenuScrollFragment implements Ca if (useAppMode) { editingContext.setAppMode(app.getRoutingHelper().getAppMode()); } - MeasurementToolFragment.showInstance(mapActivity.getSupportFragmentManager(), editingContext, true, true); + MeasurementToolFragment.showInstance(mapActivity.getSupportFragmentManager(), editingContext, true); } } From 9ae01e905e62a796d9b3c29d73df0f59254ee01d Mon Sep 17 00:00:00 2001 From: Deelite <556xxy@gmail.com> Date: Mon, 21 Sep 2020 21:11:50 +0000 Subject: [PATCH 47/80] Translated using Weblate (Russian) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-ru/strings.xml | 152 +++++++++++++++---------------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index f8ae3f5674..f63d7158b0 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -66,15 +66,15 @@ Выберите улицу в %1$s Введите адрес - Введите город/населённый пункт/место + Город/место/район Введите почтовый индекс Ближайшие города Выберите город Поиск почтового индекса - Записать аудио - Записать видео - Сделать фото - Добавить заметку OSM + Аудиозаметка + Видеозаметка + Фотозаметка + OSM-заметка Функции парковки Благодарим вас за покупку платной версии OsmAnd. Не показывать сообщения при запуске @@ -99,13 +99,13 @@ Кнопка переключения автомасштабирования на основе скорости. Включение автомасштаба Выключение автомасштаба - Добавить точку маршрута + Пункт назначения Заменить пункт назначения - Добавить первую промежуточную точку - Кнопка для установки центра экрана пунктом назначения маршрута, любой ранее выбранный пункт назначения станет последним промежуточным пунктом. - Кнопка для установки центра экрана пунктом отправления. Затем будет предложено установить пункт назначения или запустить расчёт маршрута. + Первый промежуточный пункт + Установка центра экрана пунктом назначения; ранее выбранный пункт назначения станет последним промежуточным пунктом. + Кнопка для установки центра экрана пунктом отправления. Затем нужно будет выбрать пункт назначения или запустить расчёт маршрута. Кнопка для установки центра экрана пунктом назначения с заменой предыдущего (если был задан). - Кнопка для установки центра экрана первой промежуточной точкой маршрута. + Установка центра экрана первой промежуточной точкой маршрута. Нет покрытия Нет подложки Холмистый @@ -148,7 +148,7 @@ Переключатель, чтобы показать или скрыть избранные точки на карте. Переключатель, чтобы показать или скрыть POI на карте. Показать/скрыть избранные - Добавить категорию + Категория Действия Если оставить это поле пустым, то оно будет автоматически заполнено адресом или названием места. Это сообщение будет добавлено в комментарий. @@ -219,8 +219,8 @@ Тёмно-коричневый Цветовая гамма горизонталей Качество дорожного покрытия - Введите название города, адрес, POI - Введите имя для нового фильтра. Вы сможете его найти в списке «Категории». + Город, адрес, POI + Введите имя для нового фильтра. Он добавится в список «Категории». Транслитерация если имя на %1$s отсутствует Транслитерация названий Редактировать категории @@ -233,7 +233,7 @@ Сохранить фильтр Удалить фильтр Новый фильтр - Изменить положение + Изменить позицию Текущий путь Навигация OsmAnd Live Уровень заряда батареи @@ -270,7 +270,7 @@ Адрес не определён Около Местоположение - Редактировать POI + Изменить POI Заметка OSM открыта снова К заметке OSM добавлен комментарий Заметка OSM создана @@ -286,7 +286,7 @@ Удалённая OSM POI Отредактированная OSM POI Сохранить локально - Добавить заметку OSM + OSM-заметка Цвет трека GPX Толщина трека GPX Скопировано в буфер обмена @@ -368,10 +368,10 @@ Использовать онлайн-карты (загрузка и кеширование на SD-карте). Онлайн-карты Выберите источник онлайн или кешированных растровых карт. - Получение доступа ко множеству видов онлайн-карт (тайловых или растровых): от предопределённых тайловых OSM (как Mapnik), до спутниковых снимков и слоёв специального назначения, таких как карты погоды, климатические карты, геологические карты, слои затемнения высот и т. д. -\n -\n Любая из этих карт может быть использована в качестве основной (базовой) карты для отображения или в виде наложения или подложки к другой базовой карте (например стандартной локальной карте OsmAnd). Некоторые элементы векторной карты OsmAnd могут быть по желанию скрыты через меню «Настройки карты». -\n + Доступ ко множеству онлайн-карт (т. н. тайловых или растровых): от встроенных OSM (как Mapnik), до спутниковых снимков и слоёв специального назначения, таких как карты погоды, климатические, геологические карты, затенения рельефа и др. +\n +\n Любая из этих карт может быть использована в качестве базовой либо как наложение или подложка к другой базовой карте (например стандартной локальной карте OsmAnd). Некоторые элементы векторной карты OsmAnd можно скрыть в меню «Настройки карты». +\n \n Карты можно загрузить непосредственно из интернета или подготовить для использования в автономном режиме (и вручную скопировать в папку данных OsmAnd) в виде базы данных sqlite, которая может быть создана с помощью различных инструментов подготовки карт сторонних производителей. Показывает настройки для включения фонового отслеживания и навигации путём периодического пробуждения устройства GPS (с выключенным экраном). Добавляет поддержку специальных возможностей устройства непосредственно в OsmAnd. Это облегчает, например, регулировку скорости речи для синтезированного голоса, настройку направленности экрана навигации, управление масштабом при помощи трекбола или использование голосовых команд обратной связи для автоматической аннотации вашего местоположения. @@ -466,7 +466,7 @@ Неопределённо Текущий центр карты Начало: - Искать рядом + Поиск рядом Маршрут успешно сохранён в «%1$s». Имя файла: Файл с таким именем уже существует. @@ -563,7 +563,7 @@ Координаты: %1$s\n%2$s Чтобы увидеть местоположение, перейдите по ссылке %1$s или Android-ссылке %2$s Отправить местоположение - Поделиться местоположением + Отправка геопозиции Путевая точка GPX «{0}» добавлена Добавить точку в записанный трек Административное @@ -657,7 +657,7 @@ фильтровать Дисплей высокого разрешения Не растягивать (с размытием) растровые карты на дисплеях высокого разрешения. - Искать общественный транспорт + Поиск транспорта Искать транспорт на остановке Результат поиска транспорта (нет пункта назначения): Результат поиска транспорта (до пункта {0}): @@ -691,7 +691,7 @@ POI… Источник карты Слои - Искать POI + Поиск POI Использовать трекбол для перемещения по карте. Использовать трекбол Устанавливает максимально допустимое время ожидания для каждого фонового фиксирования местоположения. @@ -738,7 +738,7 @@ Загрузить детальные карты регионов Поиск сигнала… Искать вокруг текущего центра карты - Искать рядом + Поиск рядом По умолчанию Портрет Ландшафт @@ -768,7 +768,7 @@ В данной области нет локальных POI Увеличение масштаба позволяет обновить POI Обновить POI - Вы хотите обновить локальные данные из интернета\? + Обновить локальные данные из интернета\? Город: {0} Улица: {0}, {1} Пересечение улиц: {0} x {1} в {2} @@ -901,14 +901,14 @@ Дом Пересечение улиц Обновить карту - Добавить POI + Создать POI Да Отмена Нет Название точки Избранная Точка «{0}» была успешно добавлена к избранным. - Редактировать место + Изменить Удалить из моих Удалить точку «%s» из избранных\? Точка {0} удалена. @@ -1051,8 +1051,8 @@ Запись места и времени парковки вашего авто. \nИ место, и время отображаются на панели управления или как виджет на карте. Можно добавить напоминание в календаре Android. Место парковки - Отметить парковку - Удалить метку места парковки + Место парковки + Удалить парковку Точка отправления слишком далеко от ближайшей дороги. Общие места Скорость моделирования маршрута: @@ -1164,7 +1164,7 @@ Привязка к дороге Промежуточный пункт %1$s слишком далеко от ближайшей дороги. Достигнут промежуточный пункт - Добавить промежуточный пункт + Промежуточный пункт Промежуточный пункт Конец маршрута слишком далеко от ближайшей дороги. Добавить тег @@ -1176,8 +1176,8 @@ Жильё Рестораны Достопримечательности - Добавить последним промежуточным пунктом - Добавить первым промежуточным пунктом + Последний промежуточный пункт + Первый промежуточный пункт Добавить последним промежуточным пунктом Добавить первым промежуточным пунктом Заменить пункт назначения @@ -1281,7 +1281,7 @@ Контурные линии Загрузка… Создание маршрутов по нажатию на карте, а также использование или изменение существующих файлов GPX, планирование поездки и измерение расстояния между точками. Результаты могут быть сохранены в виде файла GPX, который впоследствии может быть использован для навигации. - Сделать пунктом назначения + Пункт назначения Сначала установите город или улицу Пункт назначения %1$s Тип фокусировки камеры @@ -1317,8 +1317,8 @@ США Европа, Азия, Латинская Америка и тому подобное Великобритания, Индия и др. - Проложить маршрут - Пункт отправления + Маршрут сюда + Маршрут отсюда Канада Версия: Время действия (в минутах): %1$s @@ -1739,7 +1739,7 @@ Отменить выбор всех Поделиться Мои места - Избранные + Точки Треки Текущий трек Поделиться заметкой @@ -1766,7 +1766,7 @@ Посетить до Туристическая карта просрочено - Укажите время задержки на экране планирования маршрута. + Укажите время ожидания на экране планирования маршрута. Начать пошаговое ведение через… Поехали Расширяет возможности OsmAnd, делая доступными морские карты для катания на лодках, парусного спорта и других видов спорта. @@ -2005,7 +2005,7 @@ Как загрузить карты, установить основные настройки. Настройки навигации. Планирование поездки - Введите название страны + Страна Новая версия Первые шаги с OsmAnd Возможности @@ -2027,7 +2027,7 @@ Кнопка меню открывает панель управления, а не меню Доступ с карты Удалить путевую точку GPX\? - Редактировать путевую точку GPX + Изменить путевую точку GPX Без лестниц Избегать ступеней и лестниц Без пересечений границ @@ -2137,7 +2137,7 @@ Исключить из маршрута Публичное имя Поддерживаемый регион - Пожалуйста, введите публичное имя + Введите публичное имя Предлагается выбрать, прежде всего, управление приложением через гибкую панель управления или статическое меню. Ваш выбор всегда может быть изменён в настройках панели управления. Просмотр Добавьте маркеры на карте @@ -2185,7 +2185,7 @@ Поиск по координатам Расширенный поиск по координатам Вернуться в поиск - Удалить выбранные элементы из «Истории»\? + Удалить выбранные элементы из истории\? Показать %1$s на карте Искать за %1$s от местоположения поделились через OsmAnd @@ -2257,15 +2257,15 @@ Китайский (Гонконг) Быстрое действие Действие %d - Добавить маркер - Добавить POI + Маркер + POI Изменить стиль карты Стиль карты изменён на «%s». - Добавить место парковки + Место парковки Добавить действие Редактировать действие - Добавить в избранные - Добавить действие + В избранные + Добавить Удалить действие Вы уверены, что хотите удалить действие «%s»\? Показать избранные @@ -2384,7 +2384,7 @@ Экспорт маркеров в следующий файл GPX: Маркеры Изменить заметку - Изменить заметку OSM + Править OSM-заметку Добавить пункт отправления в качестве пункта назначения. Сделать маршрут круговым Использовать местоположение @@ -2403,20 +2403,20 @@ Дорога Показывать направляющие линии Тёмно-жёлтый - OsmAnd — это активно развивающийся проект с открытым исходным кодом. Благодаря открытости каждый может внести свой вклад в приложение сообщая об ошибках, улучшая перевод или кодируя новые функции. Проект находится в оживлённом состоянии непрерывного совершенствования всеми этими формами взаимодействия разработчиков и пользователей. Прогресс проекта также зависит от денежных взносов для финансирования написания и тестирования новых функций. -\n Примерная карта покрытия и качество: -\n • Западная Европа: **** -\n • Восточная Европа: *** -\n • Россия: *** -\n • Северная Америка: *** -\n • Южная Америка: ** -\n • Азия ** -\n • Япония и Корея: *** -\n • Ближний Восток: ** -\n • Африка: ** -\n • Антарктида: -\n Большинство стран по всему миру доступны для скачивания! -\n Получите надёжный навигатор в вашей стране — будь то Франция, Германия, Мексика, Великобритания, Испания, Нидерланды, США, Россия, Бразилия или любая другая. + OsmAnd — это активно развивающийся проект с открытым исходным кодом. Благодаря открытости, каждый может внести свой вклад в приложение, сообщая об ошибках, совершенствуя перевод или разрабатывая новые возможности. Кроме того, проект финансируется за счет денежных взносов с целью разработки и тестирования новых функций. +\nПримерное покрытие и качество карт: +\n • Западная Европа: **** +\n • Восточная Европа: *** +\n • Россия: *** +\n • Северная Америка: *** +\n • Южная Америка: ** +\n • Азия ** +\n • Япония и Корея: *** +\n • Ближний Восток: ** +\n • Африка: ** +\n • Антарктида: +\nДля скачивания доступно большинство стран мира! +\n Получите надежный навигатор в своей стране — будь то Франция, Германия, Мексика, Великобритания, Испания, Нидерланды, США, Россия, Бразилия или любая другая. Примерная карта покрытия и качество: \n • Западная Европа: **** \n • Восточная Европа: *** @@ -2433,15 +2433,15 @@ \n Временной буфер для онлайн-слежения Укажите временной буфер для хранения местоположений при отсутствии подключения к сети - Кнопка для добавления маркера карты в центр экрана. - Кнопка для добавления путевой точки GPX в центре экрана. + Добавление в центре экрана маркера на карту. + Добавление в центре экрана путевой точки GPX. Кнопка для добавления аудиозаметки в центре экрана. Кнопка для добавления видеозаметки в центре экрана. Кнопка для добавления фотозаметки в центре экрана. - Кнопка для добавления заметки OSM в центре экрана. - Кнопка для добавления POI в центре экрана. + Добавление в центре экрана OSM-заметки. + Добавление POI в центре экрана. Переключатель, чтобы включить или выключить голосовые подсказки во время навигации. - Кнопка для добавления парковочного места в центре экрана. + Добавление в центре экрана места парковки. Показывать промежуточный диалог Фотографии Mapillary доступны только онлайн. Неправильный формат @@ -2577,7 +2577,7 @@ " сохранено в " Повторить Добавить точки маршрута - Добавить путевую точку + Путевая точка Добавить линию Сохранить путевую точку GPX Сохранить точку маршрута @@ -2758,7 +2758,7 @@ Скачайте путеводители Викигида для просмотра статей о местах по всему миру без подключения к интернету. Доступно обновление Скачать файл - Свободный всемирный путеводитель, который может редактировать каждый. + Бесплатный путеводитель по всему миру, который может редактировать каждый. В настоящее время путеводители основаны на Викигиде. Проверьте бесплатно все функции во время открытого бета-тестирования. Впоследствии путеводители будут доступны подписчикам OsmAnd Unlimited и владельцам OsmAnd+. Вы можете изменять любую статью Викигида, более того, ваше участие в нашем проекте всячески приветствуется! Делитесь знаниями, опытом, талантами и своим вниманием. Начать редактирование @@ -2861,7 +2861,7 @@ Оставить пройденные маркеры на карте Больше транспорта доступно от этой остановки. Удалить маркер «%s»\? - Редактировать маркер + Изменить Стороннее приложение План и цены Ежемесячно @@ -3231,8 +3231,8 @@ Включить экран Карта во время навигации Карта во время навигации - Вес, высота, длина, скорость - Параметры автомобиля + Скорость движения, размеры, масса транспортного средства + Физические параметры Голосовые оповещения происходят только во время навигации. Навигационные инструкции и объявления Голосовые подсказки @@ -3687,7 +3687,7 @@ \n • Исправлены ошибки для языков, пишущихся справа налево \n \n - Доступ к этим действиям можно получить, нажав кнопку «%1$s». + Функции, доступные при нажатии кнопки «%1$s». Скрыть общественный транспорт Показать общественный транспорт Показать/скрыть общественный транспорт @@ -3803,7 +3803,7 @@ Добавить к треку Установите рабочие дни, чтобы продолжить Маршрут между точками - План маршрута + Составить маршрут Выберите нужный вариант разбиения: по времени или по расстоянию. Интервал между метками расстояния или времени на треке. Своё @@ -3845,8 +3845,8 @@ Маршрут трека Добавить файлы треков Импортируйте или запишите файлы треков - Добавить точку - Добавить точку к треку + Путевая точка + Путевая точка Запись поездки Сохранить как файл трека Следовать по маршруту From 71fe5c80089514b1172bba475fd50ce268cb0982 Mon Sep 17 00:00:00 2001 From: Louis Garret Date: Mon, 21 Sep 2020 13:51:08 +0000 Subject: [PATCH 48/80] Translated using Weblate (French) Currently translated at 100.0% (267 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/fr/ --- OsmAnd-telegram/res/values-fr/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd-telegram/res/values-fr/strings.xml b/OsmAnd-telegram/res/values-fr/strings.xml index bc2bbd3d99..4397948508 100644 --- a/OsmAnd-telegram/res/values-fr/strings.xml +++ b/OsmAnd-telegram/res/values-fr/strings.xml @@ -266,4 +266,5 @@ Cacher les contacts qui ne se sont pas déplacés depuis un temps donné. Définissez l\'heure à laquelle les contacts et groupes sélectionnés verront votre position en temps réel. OsmAnd connect + depuis \ No newline at end of file From 2e27035a1633d39cf39184ebf92509b9b8a176d5 Mon Sep 17 00:00:00 2001 From: sergosm Date: Tue, 22 Sep 2020 10:55:16 +0300 Subject: [PATCH 49/80] Transparency seekbar on the map and UI are not synchronized --- OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java | 1 + .../osmand/plus/views/layers/MapControlsLayer.java | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java index 44d50db194..534c334aec 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java @@ -149,6 +149,7 @@ public class RasterMapMenu { @Override public boolean onIntegerValueChangedListener(int newValue) { mapTransparencyPreference.set(newValue); + mapActivity.getMapLayers().getMapControlsLayer().updateTransparencySlider(); mapActivity.getMapView().refreshMap(); return false; } diff --git a/OsmAnd/src/net/osmand/plus/views/layers/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/layers/MapControlsLayer.java index 21277e2426..f1c3c1f13a 100644 --- a/OsmAnd/src/net/osmand/plus/views/layers/MapControlsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/layers/MapControlsLayer.java @@ -1068,6 +1068,17 @@ public class MapControlsLayer extends OsmandMapLayer { } } + public void updateTransparencySlider () { + LayerTransparencySeekbarMode seekbarMode = settings.LAYER_TRANSPARENCY_SEEKBAR_MODE.get(); + if (OsmandPlugin.getEnabledPlugin(OsmandRasterMapsPlugin.class) != null) { + if (seekbarMode == LayerTransparencySeekbarMode.OVERLAY && settings.MAP_OVERLAY.get() != null) { + transparencySlider.setValue(settings.MAP_OVERLAY_TRANSPARENCY.get()); + } else if (seekbarMode == LayerTransparencySeekbarMode.UNDERLAY && settings.MAP_UNDERLAY.get() != null) { + transparencySlider.setValue(settings.MAP_TRANSPARENCY.get()); + } + } + } + public void showTransparencyBar(CommonPreference transparenPreference, boolean isTransparencyBarEnabled) { this.isTransparencyBarEnabled = isTransparencyBarEnabled; From ff546e4f9e25242fad98fe304c0177753637d87c Mon Sep 17 00:00:00 2001 From: Eugene <44466116+EugeneZmeuk@users.noreply.github.com> Date: Tue, 22 Sep 2020 11:01:05 +0300 Subject: [PATCH 50/80] Update HelpActivity.java --- OsmAnd/src/net/osmand/plus/activities/HelpActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java index 667ee07614..ebeb14cb26 100644 --- a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java @@ -141,7 +141,7 @@ public class HelpActivity extends OsmandActionBarActivity implements AdapterView "feature_articles/map-markers.html")); contextMenuAdapter.addItem(createItem(R.string.travel_item, NULL_ID, "feature_articles/travel.html")); - contextMenuAdapter.addItem(createItem(R.string.measure_distance_item, NULL_ID, + contextMenuAdapter.addItem(createItem(R.string.plan_a_route_item, NULL_ID, "feature_articles/plan-route.html")); contextMenuAdapter.addItem(createItem(R.string.radius_ruler_item, NULL_ID, "feature_articles/ruler.html")); From 3c565905ca01d8a2cab414058758a63c38f2c24b Mon Sep 17 00:00:00 2001 From: Eugene <44466116+EugeneZmeuk@users.noreply.github.com> Date: Tue, 22 Sep 2020 11:02:36 +0300 Subject: [PATCH 51/80] Update HelpActivity.java --- OsmAnd/src/net/osmand/plus/activities/HelpActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java index ebeb14cb26..5cecc7b7ab 100644 --- a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java @@ -141,7 +141,7 @@ public class HelpActivity extends OsmandActionBarActivity implements AdapterView "feature_articles/map-markers.html")); contextMenuAdapter.addItem(createItem(R.string.travel_item, NULL_ID, "feature_articles/travel.html")); - contextMenuAdapter.addItem(createItem(R.string.plan_a_route_item, NULL_ID, + contextMenuAdapter.addItem(createItem(R.string.plan_a_route, NULL_ID, "feature_articles/plan-route.html")); contextMenuAdapter.addItem(createItem(R.string.radius_ruler_item, NULL_ID, "feature_articles/ruler.html")); From 6d8b485c562e4bbd2c5679b596172a7d1a46eba0 Mon Sep 17 00:00:00 2001 From: sergosm Date: Tue, 22 Sep 2020 11:11:37 +0300 Subject: [PATCH 52/80] Length limit on the "Vehicle parameters" review --- .../settings/preferences/SizePreference.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/settings/preferences/SizePreference.java b/OsmAnd/src/net/osmand/plus/settings/preferences/SizePreference.java index 67120bf7c6..d950b56ed5 100644 --- a/OsmAnd/src/net/osmand/plus/settings/preferences/SizePreference.java +++ b/OsmAnd/src/net/osmand/plus/settings/preferences/SizePreference.java @@ -7,6 +7,9 @@ import androidx.preference.DialogPreference; import net.osmand.plus.R; import net.osmand.plus.settings.bottomsheets.VehicleSizeAssets; +import org.apache.commons.lang3.StringUtils; + +import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.Locale; @@ -87,10 +90,13 @@ public class SizePreference extends DialogPreference { public CharSequence getSummary() { String summary = entries[0]; String persistedString = getValue(); - if (!persistedString.equals(defaultValue)) { + if (StringUtils.isBlank(persistedString)) { + return summary; + } + if (!isPersistedStringEqualsZero(persistedString)) { try { final DecimalFormat df = new DecimalFormat("#.####", new DecimalFormatSymbols(Locale.US)); - persistedString = df.format(Float.parseFloat(persistedString) + 0.01f); + persistedString = df.format(Double.parseDouble(persistedString) + 0.01d); summary = String.format(getContext().getString(R.string.ltr_or_rtl_combine_via_space), persistedString, getContext().getString(assets.getMetricShortRes())); } catch (NumberFormatException e) { @@ -100,7 +106,11 @@ public class SizePreference extends DialogPreference { return summary; } - public String getValue() { + private boolean isPersistedStringEqualsZero(String persistedString) { + return BigDecimal.ZERO.compareTo(new BigDecimal(persistedString)) == 0; + } + + public String getValue () { return getPersistedString(defaultValue); } } From 525ce78e003b8e62b860ceb0b067f80f4194fe0f Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 22 Sep 2020 12:21:14 +0300 Subject: [PATCH 53/80] Add sort types to available tracks screen --- .../plus/myplaces/AvailableGPXFragment.java | 43 +++++++++---------- .../plus/settings/backend/OsmandSettings.java | 29 +++++++++++-- 2 files changed, 46 insertions(+), 26 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 8432080bc8..136baa81b6 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -37,7 +37,6 @@ import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; -import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; @@ -63,6 +62,7 @@ import net.osmand.plus.GpxDbHelper.GpxDataItemCallback; import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup; import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem; +import net.osmand.plus.GpxSelectionHelper.SelectGpxTaskListener; import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; import net.osmand.plus.OsmAndConstants; import net.osmand.plus.OsmAndFormatter; @@ -82,6 +82,8 @@ import net.osmand.plus.mapmarkers.CoordinateInputDialogFragment; import net.osmand.plus.monitoring.OsmandMonitoringPlugin; import net.osmand.plus.osmedit.OsmEditingPlugin; import net.osmand.plus.settings.backend.OsmandSettings; +import net.osmand.plus.settings.backend.OsmandSettings.TracksSortByMode; +import net.osmand.plus.widgets.IconPopupMenu; import java.io.File; import java.text.Collator; @@ -133,13 +135,13 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement private View footerView; private boolean importing = false; private View emptyView; - private GpxSelectionHelper.SelectGpxTaskListener gpxTaskListener; - private boolean sortByName; + private SelectGpxTaskListener gpxTaskListener; + private TracksSortByMode sortByMode; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - gpxTaskListener = new GpxSelectionHelper.SelectGpxTaskListener() { + gpxTaskListener = new SelectGpxTaskListener() { @Override public void gpxSelectionInProgress() { allGpxAdapter.notifyDataSetInvalidated(); @@ -160,13 +162,13 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement } @Override - public void onAttach(Context activity) { + public void onAttach(@NonNull Context activity) { super.onAttach(activity); this.app = (OsmandApplication) getActivity().getApplication(); - sortByName = app.getSettings().SORT_TRACKS_BY_NAME.get(); + sortByMode = app.getSettings().TRACKS_SORT_BY_MODE.get(); final Collator collator = Collator.getInstance(); collator.setStrength(Collator.SECONDARY); - currentRecording = new GpxInfo(getMyApplication().getSavingTrackHelper().getCurrentGpx(), getString(R.string.shared_string_currently_recording_track)); + currentRecording = new GpxInfo(app.getSavingTrackHelper().getCurrentGpx(), getString(R.string.shared_string_currently_recording_track)); currentRecording.currentlyRecordingTrack = true; asyncLoader = new LoadGpxTask(); selectedGpxHelper = ((OsmandApplication) activity.getApplicationContext()).getSelectedGpxHelper(); @@ -502,8 +504,6 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement addTrack(); }else if (itemId == R.string.coordinate_input) { openCoordinatesInput(); - } else if (itemId == R.string.shared_string_sort) { - updateTracksSort(); } return true; } @@ -521,8 +521,6 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement .setIcon(R.drawable.ic_action_delete_dark).setListener(listener).createItem()); optionsMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.shared_string_refresh, getActivity()) .setIcon(R.drawable.ic_action_refresh_dark).setListener(listener).createItem()); - optionsMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.shared_string_sort, getActivity()) - .setIcon(getSortIconId(!sortByName)).setListener(listener).createItem()); OsmandPlugin.onOptionsMenuActivity(getActivity(), this, optionsMenuAdapter); for (int j = 0; j < optionsMenuAdapter.length(); j++) { final MenuItem item; @@ -547,11 +545,6 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement } } - @DrawableRes - private int getSortIconId(boolean sortByName) { - return sortByName ? R.drawable.ic_action_sort_by_name : R.drawable.ic_action_list_sort; - } - public void doAction(int actionResId) { if (actionResId == R.string.shared_string_delete) { operationTask = new DeleteGpxTask(); @@ -571,9 +564,6 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement ContextMenuItem contextMenuItem = optionsMenuAdapter.getItem(i); if (itemId == contextMenuItem.getTitleId()) { contextMenuItem.getItemClickListener().onContextMenuClick(null, itemId, i, false, null); - if (itemId == R.string.shared_string_sort) { - item.setIcon(getSortIconId(!sortByName)); - } return true; } } @@ -973,14 +963,16 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement Arrays.sort(listFiles, new Comparator() { @Override public int compare(File f1, File f2) { - if (sortByName) { + if (sortByMode == TracksSortByMode.BY_NAME_ASCENDING) { + return f1.getName().compareTo(f2.getName()); + } else if (sortByMode == TracksSortByMode.BY_NAME_DESCENDING) { return -f1.getName().compareTo(f2.getName()); } else { // here we could guess date from file name '2017-08-30 ...' - first part date if (f1.lastModified() == f2.lastModified()) { return -f1.getName().compareTo(f2.getName()); } - return -Long.compare(f1.lastModified(), f2.lastModified()); + return -((f1.lastModified() < f2.lastModified()) ? -1 : ((f1.lastModified() == f2.lastModified()) ? 0 : 1)); } } }); @@ -1078,15 +1070,20 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement Collections.sort(selected, new Comparator() { @Override public int compare(GpxInfo i1, GpxInfo i2) { - if (sortByName) { + if (sortByMode == TracksSortByMode.BY_NAME_ASCENDING) { return i1.getName().toLowerCase().compareTo(i2.getName().toLowerCase()); + } else if (sortByMode == TracksSortByMode.BY_NAME_DESCENDING) { + return -i1.getName().toLowerCase().compareTo(i2.getName().toLowerCase()); } else { + if (i1.file == null || i2.file == null) { + return i1.getName().toLowerCase().compareTo(i2.getName().toLowerCase()); + } long time1 = i1.file.lastModified(); long time2 = i2.file.lastModified(); if (time1 == time2) { return i1.getName().toLowerCase().compareTo(i2.getName().toLowerCase()); } - return -Long.compare(time1, time2); + return -((time1 < time2) ? -1 : ((time1 == time2) ? 0 : 1)); } } }); diff --git a/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java index a860d4c65c..d8507abacd 100644 --- a/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java @@ -2506,6 +2506,7 @@ public class OsmandSettings { public final OsmandPreference SHOW_COORDINATES_WIDGET = new BooleanPreference("show_coordinates_widget", false).makeProfile().cache(); public final CommonPreference NOTES_SORT_BY_MODE = new EnumStringPreference<>("notes_sort_by_mode", NotesSortByMode.BY_DATE, NotesSortByMode.values()); + public final CommonPreference TRACKS_SORT_BY_MODE = new EnumStringPreference<>("tracks_sort_by_mode", TracksSortByMode.BY_DATE, TracksSortByMode.values()); public final OsmandPreference ANIMATE_MY_LOCATION = new BooleanPreference("animate_my_location", true).makeProfile().cache(); @@ -3936,9 +3937,6 @@ public class OsmandSettings { public final CommonPreference FAVORITES_TAB = new IntPreference("FAVORITES_TAB", 0).makeGlobal().cache(); - public final CommonPreference SORT_TRACKS_BY_NAME - = new BooleanPreference("sort_tracks_by_name", true).makeGlobal().cache(); - public final CommonPreference OSMAND_THEME = new IntPreference("osmand_theme", OSMAND_LIGHT_THEME) { @Override @@ -4105,6 +4103,31 @@ public class OsmandSettings { } } + public enum TracksSortByMode { + BY_DATE(R.drawable.ic_action_time_start), + BY_NAME_ASCENDING(R.drawable.ic_action_sort_by_name_ascending), + BY_NAME_DESCENDING(R.drawable.ic_action_sort_by_name_descending); + + private final int iconId; + + TracksSortByMode(int iconId) { + this.iconId = iconId; + } + + public boolean isByName() { + return this == BY_NAME_ASCENDING || this == BY_NAME_DESCENDING; + } + + public boolean isByDate() { + return this == BY_DATE; + } + + @DrawableRes + public int getIconId() { + return iconId; + } + } + public enum MapMarkersMode { TOOLBAR(R.string.shared_string_topbar), WIDGETS(R.string.shared_string_widgets), From 593112561d98ae9d1777578f6d82369bf01019a7 Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 22 Sep 2020 13:02:19 +0300 Subject: [PATCH 54/80] exclude duplicated dialog fixed --- .../src/main/java/net/osmand/router/RoutingContext.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/router/RoutingContext.java b/OsmAnd-java/src/main/java/net/osmand/router/RoutingContext.java index 922e225855..8809fc56ae 100644 --- a/OsmAnd-java/src/main/java/net/osmand/router/RoutingContext.java +++ b/OsmAnd-java/src/main/java/net/osmand/router/RoutingContext.java @@ -12,6 +12,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import gnu.trove.procedure.TObjectProcedure; import org.apache.commons.logging.Log; import gnu.trove.iterator.TIntObjectIterator; @@ -289,7 +290,8 @@ public class RoutingContext { if(excludeNotAllowed != null && !excludeNotAllowed.contains(ro.getId())) { ts.add(ro); } - } else if(excludeNotAllowed != null && ro.getId() > 0){ + } + if(excludeNotAllowed != null && ro.getId() > 0){ excludeNotAllowed.add(ro.getId()); if(ts.excludedIds == null ){ ts.excludedIds = new TLongHashSet(); From 9cf447eab27258f58f61a30f5acacbd84c0e07bf Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 22 Sep 2020 13:02:34 +0300 Subject: [PATCH 55/80] Move sort button to toolbar --- OsmAnd/res/values/strings.xml | 3 ++ .../base/OsmandExpandableListFragment.java | 10 ++++-- .../plus/myplaces/AvailableGPXFragment.java | 32 +++++++++++++++---- .../plus/settings/backend/OsmandSettings.java | 15 ++++++--- 4 files changed, 46 insertions(+), 14 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index c497ffda36..14e08c0176 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,6 +11,9 @@ Thx - Hardy --> + Name: A – Z + Name: Z – A + Last modified • Updated "Plan a route" function: allows using different navigation types per segment and the inclusion of tracks\n\n • New "Appearance" menu for tracks: select color, thickness, display direction arrows, start/finish icons\n\n diff --git a/OsmAnd/src/net/osmand/plus/base/OsmandExpandableListFragment.java b/OsmAnd/src/net/osmand/plus/base/OsmandExpandableListFragment.java index 1db87051fa..90aabfac7c 100644 --- a/OsmAnd/src/net/osmand/plus/base/OsmandExpandableListFragment.java +++ b/OsmAnd/src/net/osmand/plus/base/OsmandExpandableListFragment.java @@ -88,10 +88,14 @@ public abstract class OsmandExpandableListFragment extends BaseOsmAndFragment public MenuItem createMenuItem(Menu m, int id, int titleRes, int iconId, int menuItemType, boolean flipIconForRtl) { + int color = isLightActionBar() ? R.color.active_buttons_and_links_text_light : R.color.active_buttons_and_links_text_dark; + return createMenuItem(m, id, titleRes, iconId, menuItemType, false, color); + } + + public MenuItem createMenuItem(Menu m, int id, int titleRes, int iconId, int menuItemType, + boolean flipIconForRtl, int iconColor) { OsmandApplication app = requireMyApplication(); - Drawable d = iconId == 0 ? null : app.getUIUtilities().getIcon(iconId, isLightActionBar() ? - R.color.active_buttons_and_links_text_light : - R.color.active_buttons_and_links_text_dark); + Drawable d = iconId == 0 ? null : app.getUIUtilities().getIcon(iconId, iconColor); MenuItem menuItem = m.add(0, id, 0, titleRes); if (d != null) { if (flipIconForRtl) { diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 136baa81b6..3c396eccf4 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -19,6 +19,7 @@ import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.view.SubMenu; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; @@ -83,7 +84,6 @@ import net.osmand.plus.monitoring.OsmandMonitoringPlugin; import net.osmand.plus.osmedit.OsmEditingPlugin; import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.settings.backend.OsmandSettings.TracksSortByMode; -import net.osmand.plus.widgets.IconPopupMenu; import java.io.File; import java.text.Collator; @@ -436,10 +436,10 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement } @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + public void onCreateOptionsMenu(Menu menu, @NonNull MenuInflater inflater) { menu.clear(); - MenuItem mi = createMenuItem(menu, SEARCH_ID, R.string.search_poi_filter, R.drawable.ic_action_search_dark, MenuItem.SHOW_AS_ACTION_ALWAYS - | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); + MenuItem mi = createMenuItem(menu, SEARCH_ID, R.string.search_poi_filter, R.drawable.ic_action_search_dark, + MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); SearchView searchView = new SearchView(getActivity()); FavoritesActivity.updateSearchView(getActivity(), searchView); mi.setActionView(searchView); @@ -475,6 +475,24 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement } }); + menu.addSubMenu(Menu.NONE, R.string.shared_string_sort, Menu.NONE, R.string.shared_string_sort); + SubMenu sortMenu = menu.findItem(R.string.shared_string_sort).getSubMenu(); + mi = sortMenu.getItem(); + mi.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + mi.setIcon(getIcon(R.drawable.ic_sort_waypoint_dark, isLightActionBar() ? R.color.active_buttons_and_links_text_light : R.color.active_buttons_and_links_text_dark)); + + for (final TracksSortByMode mode : TracksSortByMode.values()) { + mi = createMenuItem(sortMenu, mode.getNameId(), mode.getNameId(), mode.getIconId(), + MenuItem.SHOW_AS_ACTION_ALWAYS, false, R.color.icon_color_default_light); + mi.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + updateTracksSort(mode); + return false; + } + }); + } + if (AndroidUiHelper.isOrientationPortrait(getActivity())) { menu = ((FavoritesActivity) getActivity()).getClearToolbar(true).getMenu(); } else { @@ -574,9 +592,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement ((FavoritesActivity) getActivity()).addTrack(); } - private void updateTracksSort() { - sortByName = !sortByName; - app.getSettings().SORT_TRACKS_BY_NAME.set(sortByName); + private void updateTracksSort(TracksSortByMode sortByMode) { + this.sortByMode = sortByMode; + app.getSettings().TRACKS_SORT_BY_MODE.set(sortByMode); reloadTracks(); } diff --git a/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java index d8507abacd..e41c7d58df 100644 --- a/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java @@ -4104,13 +4104,15 @@ public class OsmandSettings { } public enum TracksSortByMode { - BY_DATE(R.drawable.ic_action_time_start), - BY_NAME_ASCENDING(R.drawable.ic_action_sort_by_name_ascending), - BY_NAME_DESCENDING(R.drawable.ic_action_sort_by_name_descending); + BY_DATE(R.string.sort_last_modified, R.drawable.ic_action_time_start), + BY_NAME_ASCENDING(R.string.sort_name_ascending, R.drawable.ic_action_sort_by_name_ascending), + BY_NAME_DESCENDING(R.string.sort_name_descending, R.drawable.ic_action_sort_by_name_descending); private final int iconId; + private final int nameId; - TracksSortByMode(int iconId) { + TracksSortByMode(int nameId, int iconId) { + this.nameId = nameId; this.iconId = iconId; } @@ -4122,6 +4124,11 @@ public class OsmandSettings { return this == BY_DATE; } + @StringRes + public int getNameId() { + return nameId; + } + @DrawableRes public int getIconId() { return iconId; From 69a93078e16435a94d227d6ecb95a69a846f462a Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 22 Sep 2020 13:04:03 +0300 Subject: [PATCH 56/80] exclude duplicated dialog fixed --- OsmAnd-java/src/main/java/net/osmand/router/RoutingContext.java | 1 - 1 file changed, 1 deletion(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/router/RoutingContext.java b/OsmAnd-java/src/main/java/net/osmand/router/RoutingContext.java index 8809fc56ae..3bfbaec0da 100644 --- a/OsmAnd-java/src/main/java/net/osmand/router/RoutingContext.java +++ b/OsmAnd-java/src/main/java/net/osmand/router/RoutingContext.java @@ -12,7 +12,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import gnu.trove.procedure.TObjectProcedure; import org.apache.commons.logging.Log; import gnu.trove.iterator.TIntObjectIterator; From 459ffb228c728d94660f955ef1f2fc500fc7e30e Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 22 Sep 2020 14:12:56 +0300 Subject: [PATCH 57/80] Minor fixes --- .../MeasurementToolFragment.java | 18 ++++++++++-------- .../FollowTrackFragment.java | 4 +++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index bea960389d..6eced9d71b 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -479,7 +479,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route }); snapToRoadBtn.setVisibility(View.VISIBLE); - initMeasurementMode(gpxData); + initMeasurementMode(gpxData, savedInstanceState == null); if (savedInstanceState == null) { if (fileName != null) { @@ -512,7 +512,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route updateSnapToRoadControls(); } - private void initMeasurementMode(GpxData gpxData) { + private void initMeasurementMode(GpxData gpxData, boolean addPoints) { MapActivity mapActivity = getMapActivity(); if (mapActivity != null) { editingCtx.getCommandManager().setMeasurementLayer(mapActivity.getMapLayers().getMeasurementToolLayer()); @@ -526,11 +526,13 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route setAppMode(snapToRoadAppMode); } } - ActionType actionType = gpxData.getActionType(); - if (actionType == ActionType.ADD_ROUTE_POINTS) { - displayRoutePoints(); - } else if (actionType == ActionType.EDIT_SEGMENT) { - displaySegmentPoints(); + if (addPoints) { + ActionType actionType = gpxData.getActionType(); + if (actionType == ActionType.ADD_ROUTE_POINTS) { + displayRoutePoints(); + } else if (actionType == ActionType.EDIT_SEGMENT) { + displaySegmentPoints(); + } } } } @@ -1031,7 +1033,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route ActionType actionType = segment == null ? ActionType.ADD_ROUTE_POINTS : ActionType.EDIT_SEGMENT; GpxData gpxData = new GpxData(gpxFile, rect, actionType, segment); editingCtx.setGpxData(gpxData); - initMeasurementMode(gpxData); + initMeasurementMode(gpxData, true); QuadRect qr = gpxData.getRect(); MapActivity mapActivity = getMapActivity(); if (mapActivity != null) { diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java index dcfa4fa6ef..544d073ca7 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java @@ -349,7 +349,9 @@ public class FollowTrackFragment extends ContextMenuScrollFragment implements Ca @Override public void onDestroyView() { super.onDestroyView(); - exitTrackAppearanceMode(); + if (!editingTrack) { + exitTrackAppearanceMode(); + } onDismiss(); } From 791f33095318646a3af122c4598ee3b61dd82c53 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Tue, 22 Sep 2020 13:27:19 +0200 Subject: [PATCH 58/80] Try to fix distance diff --- .../plus/measurementtool/MeasurementEditingContext.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java index d1dae05a6d..b3db049d39 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java @@ -250,8 +250,14 @@ public class MeasurementEditingContext { RoadSegmentData data = this.roadSegmentData.get(pair); if (data == null) { if (appMode != MeasurementEditingContext.DEFAULT_APP_MODE || !pair.first.lastPoint || !pair.second.firstPoint) { - distance += MapUtils.getDistance(pair.first.getLatitude(), pair.first.getLongitude(), + double localDist = MapUtils.getDistance(pair.first.getLatitude(), pair.first.getLongitude(), pair.second.getLatitude(), pair.second.getLongitude()); + if(!Double.isNaN(pair.first.ele) && !Double.isNaN(pair.second.ele) && + pair.first.ele != 0 && pair.second.ele != 0) { + double h = Math.abs(pair.first.ele - pair.second.ele); + localDist = Math.sqrt(localDist * localDist + h * h); + } + distance += localDist; } } else { distance += data.getDistance(); From fdea007118c475fc0c8174435ac839ffe0233fa7 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Tue, 22 Sep 2020 14:37:52 +0300 Subject: [PATCH 59/80] Replace 'rename' to 'undo' after done button --- OsmAnd/src/net/osmand/FileUtils.java | 64 ++++- .../osmand/plus/measurementtool/GpxData.java | 7 + .../MeasurementToolFragment.java | 224 ++++++++++++------ 3 files changed, 207 insertions(+), 88 deletions(-) diff --git a/OsmAnd/src/net/osmand/FileUtils.java b/OsmAnd/src/net/osmand/FileUtils.java index 59fb36c88d..426c5c10c2 100644 --- a/OsmAnd/src/net/osmand/FileUtils.java +++ b/OsmAnd/src/net/osmand/FileUtils.java @@ -9,6 +9,7 @@ import android.widget.EditText; import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import net.osmand.plus.GpxSelectionHelper; @@ -19,6 +20,7 @@ import net.osmand.plus.SQLiteTileSource; import net.osmand.util.Algorithms; import java.io.File; +import java.io.IOException; import java.lang.ref.WeakReference; import java.util.regex.Pattern; @@ -121,33 +123,54 @@ public class FileUtils { return null; } - public static File renameGpxFile(OsmandApplication ctx, File source, String newName, boolean dirAllowed, - RenameCallback callback) { - File dest = checkRenamePossibility(ctx, source, newName, dirAllowed); + public static File renameGpxFile(@NonNull OsmandApplication app, @NonNull File source, + @NonNull String newName, boolean dirAllowed, @Nullable RenameCallback callback) { + File dest = checkRenamePossibility(app, source, newName, dirAllowed); if (dest == null) { return null; } + File res = renameGpxFile(app, source, dest); + if (res != null) { + if (callback != null) { + callback.renamedTo(res); + } + } else { + Toast.makeText(app, R.string.file_can_not_be_renamed, Toast.LENGTH_LONG).show(); + } + return res; + } + + public static File renameGpxFile(@NonNull OsmandApplication app, @NonNull File src, @NonNull File dest) { if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } - if (source.renameTo(dest)) { - GpxSelectionHelper helper = ctx.getSelectedGpxHelper(); - SelectedGpxFile selected = helper.getSelectedFileByPath(source.getAbsolutePath()); - ctx.getGpxDbHelper().rename(source, dest); + if (src.renameTo(dest)) { + GpxSelectionHelper helper = app.getSelectedGpxHelper(); + SelectedGpxFile selected = helper.getSelectedFileByPath(src.getAbsolutePath()); + app.getGpxDbHelper().rename(src, dest); if (selected != null && selected.getGpxFile() != null) { selected.getGpxFile().path = dest.getAbsolutePath(); helper.updateSelectedGpxFile(selected); } - if (callback != null) { - callback.renamedTo(dest); - } return dest; - } else { - Toast.makeText(ctx, R.string.file_can_not_be_renamed, Toast.LENGTH_LONG).show(); } return null; } + public static boolean removeGpxFile(@NonNull OsmandApplication app, @NonNull File file) { + if (file.exists()) { + GpxSelectionHelper helper = app.getSelectedGpxHelper(); + SelectedGpxFile selected = helper.getSelectedFileByPath(file.getAbsolutePath()); + file.delete(); + app.getGpxDbHelper().remove(file); + if (selected != null && selected.getGpxFile() != null) { + helper.selectGpxFile(selected.getGpxFile(), false, false); + } + return true; + } + return false; + } + public static File checkRenamePossibility(OsmandApplication ctx, File source, String newName, boolean dirAllowed) { if (Algorithms.isEmpty(newName)) { Toast.makeText(ctx, R.string.empty_filename, Toast.LENGTH_LONG).show(); @@ -178,6 +201,23 @@ public class FileUtils { return uniqueFileName; } + public static File backupFile(@NonNull OsmandApplication app, @NonNull File src) { + if (!src.exists()) { + return null; + } + File tempDir = app.getAppPath(IndexConstants.TEMP_DIR); + if (!tempDir.exists()) { + tempDir.mkdirs(); + } + File dest = new File(tempDir, src.getName()); + try { + Algorithms.fileCopy(src, dest); + } catch (IOException e) { + return null; + } + return dest; + } + public interface RenameCallback { void renamedTo(File file); } diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/GpxData.java b/OsmAnd/src/net/osmand/plus/measurementtool/GpxData.java index 754964ea57..a59efe63dc 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/GpxData.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/GpxData.java @@ -25,6 +25,13 @@ public class GpxData { this.trkSegment = trkSegment; } + public GpxData(GPXFile gpxFile, GpxData gpxData) { + this.gpxFile = gpxFile; + this.rect = gpxData.rect; + this.actionType = gpxData.actionType; + this.trkSegment = gpxData.trkSegment; + } + public GPXFile getGpxFile() { return gpxFile; } diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index bea960389d..1afa0e8479 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -136,9 +136,13 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route private boolean wasCollapseButtonVisible; private boolean progressBarVisible; private boolean pointsListOpened; - private boolean planRouteMode = false; - private boolean directionMode = false; - private boolean followTrackMode = false; + + private static final int PLAN_ROUTE_MODE = 0x1; + private static final int DIRECTION_MODE = 0x2; + private static final int FOLLOW_TRACK_MODE = 0x4; + private static final int UNDO_MODE = 0x8; + private int modes = 0x0; + private boolean approximationApplied = false; private boolean portrait; private boolean nightMode; @@ -167,16 +171,30 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route this.initialPoint = initialPoint; } - private void setPlanRouteMode(boolean planRouteMode) { - this.planRouteMode = planRouteMode; + private void setMode(int mode, boolean on) { + int modes = this.modes; + if (on) { + modes |= mode; + } else { + modes &= ~mode; + } + this.modes = modes; } - private void setDirectionMode(boolean directionMode) { - this.directionMode = directionMode; + private boolean isPlanRouteMode() { + return (this.modes & PLAN_ROUTE_MODE) == PLAN_ROUTE_MODE; } - private void setFollowTrackMode(boolean followTrackMode) { - this.followTrackMode = followTrackMode; + private boolean isDirectionMode() { + return (this.modes & DIRECTION_MODE) == DIRECTION_MODE; + } + + private boolean isFollowTrackMode() { + return (this.modes & FOLLOW_TRACK_MODE) == FOLLOW_TRACK_MODE; + } + + private boolean isUndoMode() { + return (this.modes & UNDO_MODE) == UNDO_MODE; } @Override @@ -446,7 +464,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route toolBarController.setOnSaveViewClickListener(new OnClickListener() { @Override public void onClick(View v) { - if (followTrackMode) { + if (isFollowTrackMode()) { startTrackNavigation(); } else { saveChanges(FinalSaveAction.SHOW_SNACK_BAR_AND_CLOSE, false); @@ -495,7 +513,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route } public boolean isInEditMode() { - return !planRouteMode && !editingCtx.isNewData() && !directionMode && !followTrackMode; + return !isPlanRouteMode() && !editingCtx.isNewData() && !isDirectionMode() && !isFollowTrackMode(); } public void setFileName(String fileName) { @@ -519,11 +537,13 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route enterMeasurementMode(); updateSnapToRoadControls(); if (gpxData != null) { - List points = gpxData.getGpxFile().getRoutePoints(); - if (!points.isEmpty()) { - ApplicationMode snapToRoadAppMode = ApplicationMode.valueOfStringKey(points.get(points.size() - 1).getProfileType(), null); - if (snapToRoadAppMode != null) { - setAppMode(snapToRoadAppMode); + if (!isUndoMode()) { + List points = gpxData.getGpxFile().getRoutePoints(); + if (!points.isEmpty()) { + ApplicationMode snapToRoadAppMode = ApplicationMode.valueOfStringKey(points.get(points.size() - 1).getProfileType(), null); + if (snapToRoadAppMode != null) { + setAppMode(snapToRoadAppMode); + } } } ActionType actionType = gpxData.getActionType(); @@ -533,6 +553,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route displaySegmentPoints(); } } + setMode(UNDO_MODE, false); } } @@ -678,7 +699,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route switch (resultCode) { case SnapTrackWarningFragment.CANCEL_RESULT_CODE: toolBarController.setSaveViewVisible(true); - directionMode = false; + setMode(DIRECTION_MODE, false); exitApproximationMode(); updateToolbar(); break; @@ -744,7 +765,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route targetPointsHelper.clearAllPoints(false); mapActions.enterRoutePlanningModeGivenGpx(gpx, appMode, null, null, true, true, MenuState.HEADER_ONLY); } else { - directionMode = true; + setMode(DIRECTION_MODE, true); enterApproximationMode(mapActivity); } } @@ -760,7 +781,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route if (mapActivity != null) { OsmandApplication app = mapActivity.getMyApplication(); if (app.getRoutingHelper().isFollowingMode()) { - if (followTrackMode) { + if (isFollowTrackMode()) { mapActivity.getMapActions().setGPXRouteParams(gpx); app.getTargetPointsHelper().updateRouteAndRefresh(true); app.getRoutingHelper().recalculateRouteDueToSettingsChange(); @@ -1026,20 +1047,29 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route } public void addNewGpxData(GPXFile gpxFile) { - QuadRect rect = gpxFile.getRect(); - TrkSegment segment = gpxFile.getNonEmptyTrkSegment(); - ActionType actionType = segment == null ? ActionType.ADD_ROUTE_POINTS : ActionType.EDIT_SEGMENT; - GpxData gpxData = new GpxData(gpxFile, rect, actionType, segment); - editingCtx.setGpxData(gpxData); + GpxData gpxData = setupGpxData(gpxFile); initMeasurementMode(gpxData); - QuadRect qr = gpxData.getRect(); MapActivity mapActivity = getMapActivity(); - if (mapActivity != null) { + if (mapActivity != null && gpxData != null) { + QuadRect qr = gpxData.getRect(); mapActivity.getMapView().fitRectToMap(qr.left, qr.right, qr.top, qr.bottom, (int) qr.width(), (int) qr.height(), 0); } } + @Nullable + private GpxData setupGpxData(@Nullable GPXFile gpxFile) { + GpxData gpxData = null; + if (gpxFile != null) { + QuadRect rect = gpxFile.getRect(); + TrkSegment segment = gpxFile.getNonEmptyTrkSegment(); + ActionType actionType = segment == null ? ActionType.ADD_ROUTE_POINTS : ActionType.EDIT_SEGMENT; + gpxData = new GpxData(gpxFile, rect, actionType, segment); + } + editingCtx.setGpxData(gpxData); + return gpxData; + } + private void removePoint(MeasurementToolLayer measurementLayer, int position) { if (measurementLayer != null) { editingCtx.getCommandManager().execute(new RemovePointCommand(measurementLayer, position)); @@ -1172,7 +1202,9 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route if (gpx != null) { List points = gpx.getRoutePoints(); if (measurementLayer != null) { - editingCtx.addPoints(points); + if (!isUndoMode()) { + editingCtx.addPoints(points); + } adapter.notifyDataSetChanged(); updateDistancePointsText(); } @@ -1182,7 +1214,9 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route private void displaySegmentPoints() { MeasurementToolLayer measurementLayer = getMeasurementLayer(); if (measurementLayer != null) { - editingCtx.addPoints(); + if (!isUndoMode()) { + editingCtx.addPoints(); + } adapter.notifyDataSetChanged(); updateDistancePointsText(); } @@ -1510,7 +1544,8 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route new AsyncTask() { private ProgressDialog progressDialog; - private File toSave; + private File backupFile; + private File outFile; private GPXFile savedGpxFile; @Override @@ -1535,7 +1570,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route TrkSegment before = editingCtx.getBeforeTrkSegmentLine(); TrkSegment after = editingCtx.getAfterTrkSegmentLine(); if (gpxFile == null) { - toSave = new File(dir, fileName); + outFile = new File(dir, fileName); String trackName = fileName.substring(0, fileName.length() - GPX_FILE_EXT.length()); GPXFile gpx = new GPXFile(Version.getFullVersion(app)); if (measurementLayer != null) { @@ -1561,19 +1596,20 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route gpx.addRoutePoints(points); } } - Exception res = GPXUtilities.writeGpxFile(toSave, gpx); - gpx.path = toSave.getAbsolutePath(); + Exception res = GPXUtilities.writeGpxFile(outFile, gpx); + gpx.path = outFile.getAbsolutePath(); savedGpxFile = gpx; if (showOnMap) { - app.getSelectedGpxHelper().selectGpxFile(gpx, true, false); + showGpxOnMap(app, gpx, true); } return res; } else { GPXFile gpx = gpxFile; - toSave = new File(gpx.path); - String trackName = Algorithms.getFileNameWithoutExtension(toSave); + outFile = new File(gpx.path); + backupFile = FileUtils.backupFile(app, outFile); + String trackName = Algorithms.getFileNameWithoutExtension(outFile); if (measurementLayer != null) { - if (planRouteMode) { + if (isPlanRouteMode()) { if (saveType == SaveType.LINE) { TrkSegment segment = new TrkSegment(); if (editingCtx.hasRoute()) { @@ -1635,21 +1671,25 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route } Exception res = null; if (!gpx.showCurrentTrack) { - res = GPXUtilities.writeGpxFile(toSave, gpx); + res = GPXUtilities.writeGpxFile(outFile, gpx); } savedGpxFile = gpx; if (showOnMap) { - SelectedGpxFile sf = app.getSelectedGpxHelper().selectGpxFile(gpx, true, false); - if (sf != null) { - if (actionType == ActionType.ADD_SEGMENT || actionType == ActionType.EDIT_SEGMENT) { - sf.processPoints(getMyApplication()); - } - } + showGpxOnMap(app, gpx, false); } return res; } } + private void showGpxOnMap(OsmandApplication app, GPXFile gpx, boolean isNewGpx) { + SelectedGpxFile sf = app.getSelectedGpxHelper().selectGpxFile(gpx, true, false); + if (sf != null && !isNewGpx) { + if (actionType == ActionType.ADD_SEGMENT || actionType == ActionType.EDIT_SEGMENT) { + sf.processPoints(getMyApplication()); + } + } + } + @Override protected void onPostExecute(Exception warning) { onGpxSaved(warning); @@ -1665,7 +1705,6 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route } mapActivity.refreshMap(); if (warning == null) { - editingCtx.setChangesSaved(); if (editingCtx.isNewData() && savedGpxFile != null) { QuadRect rect = savedGpxFile.getRect(); TrkSegment segment = savedGpxFile.getNonEmptyTrkSegment(); @@ -1674,30 +1713,66 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route updateToolbar(); } if (isInEditMode()) { + editingCtx.setChangesSaved(); dismiss(mapActivity); } else { switch (finalSaveAction) { case SHOW_SNACK_BAR_AND_CLOSE: final WeakReference mapActivityRef = new WeakReference<>(mapActivity); snackbar = Snackbar.make(mapActivity.getLayout(), - MessageFormat.format(getString(R.string.gpx_saved_sucessfully), toSave.getName()), + MessageFormat.format(getString(R.string.gpx_saved_sucessfully), outFile.getName()), Snackbar.LENGTH_LONG) - .setAction(R.string.shared_string_rename, getRenameListener(mapActivityRef)); + .setAction(R.string.shared_string_undo, new OnClickListener() { + @Override + public void onClick(View view) { + MapActivity mapActivity = mapActivityRef.get(); + if (mapActivity != null) { + if (outFile != null) { + OsmandApplication app = mapActivity.getMyApplication(); + FileUtils.removeGpxFile(app, outFile); + if (backupFile != null) { + FileUtils.renameGpxFile(app, backupFile, outFile); + GPXFile gpx = GPXUtilities.loadGPXFile(outFile); + setupGpxData(gpx); + if (showOnMap) { + showGpxOnMap(app, gpx, false); + } + } else { + setupGpxData(null); + } + } + setMode(UNDO_MODE, true); + MeasurementToolFragment.showInstance(mapActivity.getSupportFragmentManager(), + editingCtx, modes); + } + } + }) + .addCallback(new Snackbar.Callback() { + @Override + public void onDismissed(Snackbar transientBottomBar, int event) { + if (event != DISMISS_EVENT_ACTION) { + editingCtx.setChangesSaved(); + } + super.onDismissed(transientBottomBar, event); + } + }); snackbar.getView().findViewById(com.google.android.material.R.id.snackbar_action) .setAllCaps(false); UiUtilities.setupSnackbar(snackbar, nightMode); snackbar.show(); - dismiss(mapActivity); + dismiss(mapActivity, false); break; case SHOW_IS_SAVED_FRAGMENT: + editingCtx.setChangesSaved(); SavedTrackBottomSheetDialogFragment.showInstance(mapActivity.getSupportFragmentManager(), - toSave.getAbsolutePath()); + outFile.getAbsolutePath()); dismiss(mapActivity); break; case SHOW_TOAST: + editingCtx.setChangesSaved(); if (!savedGpxFile.showCurrentTrack) { Toast.makeText(mapActivity, - MessageFormat.format(getString(R.string.gpx_saved_sucessfully), toSave.getAbsolutePath()), + MessageFormat.format(getString(R.string.gpx_saved_sucessfully), outFile.getAbsolutePath()), Toast.LENGTH_LONG).show(); } } @@ -1706,22 +1781,6 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route Toast.makeText(mapActivity, warning.getMessage(), Toast.LENGTH_LONG).show(); } } - - private OnClickListener getRenameListener(final WeakReference mapActivityRef) { - return new OnClickListener() { - @Override - public void onClick(View view) { - MapActivity mapActivity = mapActivityRef.get(); - String parentFolder = toSave.getParentFile().getName(); - if (GPX_INDEX_DIR.equals(parentFolder + File.separator)) { - parentFolder = null; - } - SaveAsNewTrackBottomSheetDialogFragment.showInstance( - mapActivity.getSupportFragmentManager(), null, parentFolder, - AndroidUtils.trimExtension(toSave.getName()), false, showOnMap); - } - }; - } }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @@ -1859,7 +1918,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route cancelAddPointBeforeOrAfterMode(); return; } - if (followTrackMode) { + if (isFollowTrackMode()) { MapActivity mapActivity = getMapActivity(); if (mapActivity != null) { mapActivity.getMapLayers().getMapControlsLayer().showRouteInfoControlDialog(); @@ -1886,9 +1945,15 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route } } - private void dismiss(MapActivity mapActivity) { + private void dismiss(@NonNull MapActivity mapActivity) { + dismiss(mapActivity, true); + } + + private void dismiss(@NonNull MapActivity mapActivity, boolean clearContext) { try { - editingCtx.clearSegments(); + if (clearContext) { + editingCtx.clearSegments(); + } if (pointsListOpened) { hidePointsList(); } @@ -1914,21 +1979,21 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route public static boolean showInstance(FragmentManager fragmentManager, LatLon initialPoint) { MeasurementToolFragment fragment = new MeasurementToolFragment(); fragment.setInitialPoint(initialPoint); - fragment.setPlanRouteMode(true); + fragment.setMode(PLAN_ROUTE_MODE, true); return showFragment(fragment, fragmentManager); } public static boolean showInstance(FragmentManager fragmentManager, String fileName) { MeasurementToolFragment fragment = new MeasurementToolFragment(); fragment.setFileName(fileName); - fragment.setPlanRouteMode(true); + fragment.setMode(PLAN_ROUTE_MODE, true); return showFragment(fragment, fragmentManager); } public static boolean showInstance(FragmentManager fragmentManager, GPXFile gpxFile) { MeasurementToolFragment fragment = new MeasurementToolFragment(); fragment.addNewGpxData(gpxFile); - fragment.setPlanRouteMode(true); + fragment.setMode(PLAN_ROUTE_MODE, true); return showFragment(fragment, fragmentManager); } @@ -1936,7 +2001,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route boolean followTrackMode) { MeasurementToolFragment fragment = new MeasurementToolFragment(); fragment.setEditingCtx(editingCtx); - fragment.setFollowTrackMode(followTrackMode); + fragment.setMode(FOLLOW_TRACK_MODE, followTrackMode); return showFragment(fragment, fragmentManager); } @@ -1948,7 +2013,14 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route public static boolean showInstance(FragmentManager fragmentManager) { MeasurementToolFragment fragment = new MeasurementToolFragment(); - fragment.setPlanRouteMode(true); + fragment.setMode(PLAN_ROUTE_MODE, true); + return showFragment(fragment, fragmentManager); + } + + private static boolean showInstance(FragmentManager fragmentManager, MeasurementEditingContext editingCtx, int modes) { + MeasurementToolFragment fragment = new MeasurementToolFragment(); + fragment.setEditingCtx(editingCtx); + fragment.modes = modes; return showFragment(fragment, fragmentManager); } @@ -2033,8 +2105,8 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route exitApproximationMode(); doAddOrMovePointCommonStuff(); updateSnapToRoadControls(); - if (directionMode || followTrackMode) { - directionMode = false; + if (isDirectionMode() || isFollowTrackMode()) { + setMode(DIRECTION_MODE, false); startTrackNavigation(); } } @@ -2062,7 +2134,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route public void onCancelGpxApproximation() { editingCtx.getCommandManager().undo(); exitApproximationMode(); - directionMode = false; + setMode(DIRECTION_MODE, false); updateSnapToRoadControls(); updateToolbar(); } From c24e8bba2d2e5d1ed677443b86083141ed45cb82 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Tue, 22 Sep 2020 14:57:38 +0300 Subject: [PATCH 60/80] Add Sorting to Track Dialog --- .../bottom_sheet_plan_route_select_file.xml | 76 ++++++++---- OsmAnd/src/net/osmand/AndroidUtils.java | 5 + ...veAsNewTrackBottomSheetDialogFragment.java | 3 +- .../SelectFileBottomSheet.java | 108 ++++++++++++++++-- .../plus/myplaces/AvailableGPXFragment.java | 8 +- 5 files changed, 161 insertions(+), 39 deletions(-) diff --git a/OsmAnd/res/layout/bottom_sheet_plan_route_select_file.xml b/OsmAnd/res/layout/bottom_sheet_plan_route_select_file.xml index 362dacf2c6..10de9cb667 100644 --- a/OsmAnd/res/layout/bottom_sheet_plan_route_select_file.xml +++ b/OsmAnd/res/layout/bottom_sheet_plan_route_select_file.xml @@ -6,33 +6,59 @@ android:layout_height="wrap_content" android:orientation="vertical"> - + android:orientation="horizontal"> - + + + + + + + + + dirs = new ArrayList<>(); final File gpxDir = app.getAppPath(IndexConstants.GPX_INDEX_DIR); @@ -149,21 +194,66 @@ public class SelectFileBottomSheet extends BottomSheetBehaviourDialogFragment { @Override public void onItemSelected(String item) { selectedFolder = item; - updateFileList(item, folderAdapter); + updateFileList(folderAdapter); } }); items.add(new BaseBottomSheetItem.Builder().setCustomView(mainView).create()); - updateFileList(selectedFolder, folderAdapter); + updateFileList(folderAdapter); } - private void updateFileList(String folderName, HorizontalSelectionAdapter folderAdapter) { - List gpxInfoList = gpxInfoMap.get(folderName); + private void updateDescription(TextView descriptionView) { + String string = getString(tracksSortBy.getNameId()); + descriptionView.setText(String.format(getString(R.string.ltr_or_rtl_combine_via_space), + getString(fragmentMode.description), + Character.toLowerCase(string.charAt(0)) + string.substring(1))); + } + + public MenuItem createMenuItem(OsmandApplication app, Menu m, int id, int titleRes, int iconId, int menuItemType, + boolean flipIconForRtl, int iconColor) { + Drawable d = iconId == 0 ? null : app.getUIUtilities().getIcon(iconId, iconColor); + MenuItem menuItem = m.add(0, id, 0, titleRes); + if (d != null) { + if (flipIconForRtl) { + d = AndroidUtils.getDrawableForDirection(app, d); + } + menuItem.setIcon(d); + } + return menuItem; + } + + private void updateFileList(HorizontalSelectionAdapter folderAdapter) { + sortFileList(); adapter.setShowFolderName(showFoldersName()); - adapter.setGpxInfoList(gpxInfoList != null ? gpxInfoList : new ArrayList()); adapter.notifyDataSetChanged(); folderAdapter.notifyDataSetChanged(); } + private void sortFileList() { + List gpxInfoList = gpxInfoMap.get(selectedFolder); + sortSelected(gpxInfoList); + adapter.setGpxInfoList(gpxInfoList != null ? gpxInfoList : new ArrayList()); + } + + public void sortSelected(List gpxInfoList) { + Collections.sort(gpxInfoList, new Comparator() { + @Override + public int compare(GPXInfo i1, GPXInfo i2) { + if (tracksSortBy == TracksSortByMode.BY_NAME_ASCENDING) { + return i1.getFileName().toLowerCase().compareTo(i2.getFileName().toLowerCase()); + } else if (tracksSortBy == TracksSortByMode.BY_NAME_DESCENDING) { + return -i1.getFileName().toLowerCase().compareTo(i2.getFileName().toLowerCase()); + } else { + long time1 = i1.getLastModified(); + long time2 = i2.getLastModified(); + if (time1 == time2) { + return i1.getFileName().toLowerCase().compareTo(i2.getFileName().toLowerCase()); + } + return -((time1 < time2) ? -1 : ((time1 == time2) ? 0 : 1)); + } + } + }); + } + private boolean showFoldersName() { return allFilesFolder.equals(selectedFolder); } diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 3c396eccf4..ef184307e6 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -476,11 +476,12 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement }); menu.addSubMenu(Menu.NONE, R.string.shared_string_sort, Menu.NONE, R.string.shared_string_sort); - SubMenu sortMenu = menu.findItem(R.string.shared_string_sort).getSubMenu(); + final SubMenu sortMenu = menu.findItem(R.string.shared_string_sort).getSubMenu(); mi = sortMenu.getItem(); mi.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); - mi.setIcon(getIcon(R.drawable.ic_sort_waypoint_dark, isLightActionBar() ? R.color.active_buttons_and_links_text_light : R.color.active_buttons_and_links_text_dark)); - + final int iconColorId = isLightActionBar() ? R.color.active_buttons_and_links_text_light + : R.color.active_buttons_and_links_text_dark; + mi.setIcon(getIcon(sortByMode.getIconId(), iconColorId)); for (final TracksSortByMode mode : TracksSortByMode.values()) { mi = createMenuItem(sortMenu, mode.getNameId(), mode.getNameId(), mode.getIconId(), MenuItem.SHOW_AS_ACTION_ALWAYS, false, R.color.icon_color_default_light); @@ -488,6 +489,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement @Override public boolean onMenuItemClick(MenuItem item) { updateTracksSort(mode); + sortMenu.setIcon(getIcon(mode.getIconId(), iconColorId)); return false; } }); From d6e4bd5b8bb5866858c1f7cc0f7f4b9e40b91279 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Tue, 22 Sep 2020 15:55:02 +0300 Subject: [PATCH 61/80] Fix appromination gpx mode --- .../plus/measurementtool/MeasurementEditingContext.java | 5 +---- .../osmand/plus/measurementtool/MeasurementToolFragment.java | 4 ++-- .../command/ApplyGpxApproximationCommand.java | 1 + 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java index b3db049d39..99e16baa7b 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java @@ -749,7 +749,7 @@ public class MeasurementEditingContext { return params; } - public List getDistinctRoutePoints() { + public List getRoutePoints() { List res = new ArrayList<>(); List points = new ArrayList<>(before.points); points.addAll(after.points); @@ -759,9 +759,6 @@ public class MeasurementEditingContext { RoadSegmentData data = this.roadSegmentData.get(pair); if (data != null) { res.addAll(data.points); - if (i < size - 2) { - res.remove(res.size() - 1); - } } } return res; diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index bfe5394260..520e8fb424 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -1579,7 +1579,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route if (saveType == SaveType.LINE) { TrkSegment segment = new TrkSegment(); if (editingCtx.hasRoute()) { - segment.points.addAll(editingCtx.getDistinctRoutePoints()); + segment.points.addAll(editingCtx.getRoutePoints()); } else { segment.points.addAll(before.points); segment.points.addAll(after.points); @@ -1615,7 +1615,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route if (saveType == SaveType.LINE) { TrkSegment segment = new TrkSegment(); if (editingCtx.hasRoute()) { - segment.points.addAll(editingCtx.getDistinctRoutePoints()); + segment.points.addAll(editingCtx.getRoutePoints()); } else { segment.points.addAll(before.points); segment.points.addAll(after.points); diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/command/ApplyGpxApproximationCommand.java b/OsmAnd/src/net/osmand/plus/measurementtool/command/ApplyGpxApproximationCommand.java index 99488a753e..5198faedc3 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/command/ApplyGpxApproximationCommand.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/command/ApplyGpxApproximationCommand.java @@ -45,6 +45,7 @@ public class ApplyGpxApproximationCommand extends MeasurementModeCommand { if (command instanceof ApplyGpxApproximationCommand) { ApplyGpxApproximationCommand approxCommand = (ApplyGpxApproximationCommand) command; approximation = approxCommand.approximation; + mode = approxCommand.mode; applyApproximation(); refreshMap(); return true; From a5610b73520e8125ae3f095e0f2432306234d5cc Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 22 Sep 2020 16:13:40 +0300 Subject: [PATCH 62/80] Minor fixes in plan route and follow track --- .../MeasurementToolFragment.java | 20 ++++++++++--------- .../FollowTrackFragment.java | 15 ++++++++++++-- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index 520e8fb424..7d6818a9d6 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -536,7 +536,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route editingCtx.getCommandManager().setMeasurementLayer(mapActivity.getMapLayers().getMeasurementToolLayer()); enterMeasurementMode(); updateSnapToRoadControls(); - if (gpxData != null) { + if (gpxData != null && addPoints) { if (!isUndoMode()) { List points = gpxData.getGpxFile().getRoutePoints(); if (!points.isEmpty()) { @@ -546,13 +546,11 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route } } } - if (addPoints) { - ActionType actionType = gpxData.getActionType(); - if (actionType == ActionType.ADD_ROUTE_POINTS) { - displayRoutePoints(); - } else if (actionType == ActionType.EDIT_SEGMENT) { - displaySegmentPoints(); - } + ActionType actionType = gpxData.getActionType(); + if (actionType == ActionType.ADD_ROUTE_POINTS) { + displayRoutePoints(); + } else if (actionType == ActionType.EDIT_SEGMENT) { + displaySegmentPoints(); } } setMode(UNDO_MODE, false); @@ -807,7 +805,11 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route @Override public void saveChangesOnClick() { - saveChanges(FinalSaveAction.SHOW_TOAST, true); + if (isFollowTrackMode()) { + startTrackNavigation(); + } else { + saveChanges(FinalSaveAction.SHOW_TOAST, true); + } } @Override diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java index 544d073ca7..6507ff8d2d 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java @@ -63,6 +63,7 @@ import net.osmand.plus.routing.RouteProvider.GPXRouteParamsBuilder; import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.plus.views.layers.MapControlsLayer; +import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; @@ -185,8 +186,18 @@ public class FollowTrackFragment extends ContextMenuScrollFragment implements Ca setupTracksCard(); } else { - File file = new File(gpxFile.path); - GPXInfo gpxInfo = new GPXInfo(gpxFile.path, file.lastModified(), file.length()); + String fileName = null; + File file = null; + if (!Algorithms.isEmpty(gpxFile.path)) { + file = new File(gpxFile.path); + fileName = file.getName(); + } else if (!Algorithms.isEmpty(gpxFile.tracks)) { + fileName = gpxFile.tracks.get(0).name; + } + if (Algorithms.isEmpty(fileName)) { + fileName = app.getString(R.string.shared_string_gpx_track); + } + GPXInfo gpxInfo = new GPXInfo(fileName, file != null ? file.lastModified() : 0, file != null ? file.length() : 0); TrackEditCard importTrackCard = new TrackEditCard(mapActivity, gpxInfo); importTrackCard.setListener(this); cardsContainer.addView(importTrackCard.build(mapActivity)); From 5acf6e27f7bac41c75ea67a18f71d07b435bf5a3 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 22 Sep 2020 16:55:01 +0300 Subject: [PATCH 63/80] Hide extra description and remove unnecessary changes --- .../net/osmand/plus/activities/MapActivityActions.java | 4 +--- .../plus/routepreparationmenu/MapRouteInfoMenu.java | 9 +++++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index 5414b9c0f7..dbd0f133fa 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -525,9 +525,7 @@ public class MapActivityActions implements DialogProvider { TargetPointsHelper tg = mapActivity.getMyApplication().getTargetPointsHelper(); tg.clearStartPoint(false); Location finishLoc = ps.get(ps.size() - 1); - PointDescription point = new PointDescription(PointDescription.POINT_TYPE_LOCATION, result.path, ""); - point.setName(PointDescription.getSearchAddressStr(mapActivity)); - tg.navigateToPoint(new LatLon(finishLoc.getLatitude(), finishLoc.getLongitude()), false, -1, point); + tg.navigateToPoint(new LatLon(finishLoc.getLatitude(), finishLoc.getLongitude()), false, -1); } } } diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java index f0216f1c9d..69bed394cc 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java @@ -1760,8 +1760,13 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener if (routeParams != null) { TargetPoint target = app.getTargetPointsHelper().getPointToNavigate(); if (target != null) { - PointDescription pointDescription = target.getOriginalPointDescription(); - return pointDescription != null && routeParams.getFile().path.equals(pointDescription.getTypeName()); + List points = routeParams.getPoints(app); + if (!Algorithms.isEmpty(points)) { + Location loc = points.get(points.size() - 1); + LatLon latLon = new LatLon(loc.getLatitude(), loc.getLongitude()); + LatLon targetLatLon = new LatLon(target.getLatitude(), target.getLongitude()); + return latLon.equals(targetLatLon); + } } } } From e6a7f5f22857409486a3ef94196050a0547de16c Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 22 Sep 2020 17:13:51 +0300 Subject: [PATCH 64/80] Fix check for attach route card --- .../osmand/plus/routepreparationmenu/FollowTrackFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java index 6507ff8d2d..ee2bf6b38e 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/FollowTrackFragment.java @@ -218,7 +218,7 @@ public class FollowTrackFragment extends ContextMenuScrollFragment implements Ca reverseTrackCard.setListener(this); cardsContainer.addView(reverseTrackCard.build(mapActivity)); } - if (!gpxFile.hasRtePt()) { + if (!gpxFile.hasRtePt() && !gpxFile.hasRoute()) { cardsContainer.addView(buildDividerView(cardsContainer, true)); AttachTrackToRoadsCard attachTrackCard = new AttachTrackToRoadsCard(mapActivity); From e64b8645833a1731b58bf0447c46b3fa226e4020 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Tue, 22 Sep 2020 17:21:06 +0300 Subject: [PATCH 65/80] Fix exported route when opened by plan route --- .../plus/measurementtool/MeasurementEditingContext.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java index 99e16baa7b..c8e0ff043b 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementEditingContext.java @@ -474,6 +474,10 @@ public class MeasurementEditingContext { List segments = routeImporter.importRoute(); List routePoints = gpxData.getGpxFile().getRoutePoints(); int prevPointIndex = 0; + if (routePoints.isEmpty() && points.size() > 1) { + routePoints.add(points.get(0)); + routePoints.add(points.get(points.size() - 1)); + } for (int i = 0; i < routePoints.size() - 1; i++) { Pair pair = new Pair<>(routePoints.get(i), routePoints.get(i + 1)); int startIndex = pair.first.getTrkPtIndex(); From 5252d179d0e1174d06ce751ae5470d5576e0e9d7 Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 22 Sep 2020 17:32:18 +0300 Subject: [PATCH 66/80] test added --- .../java/net/osmand/router/RouteTestingTest.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/OsmAnd-java/src/test/java/net/osmand/router/RouteTestingTest.java b/OsmAnd-java/src/test/java/net/osmand/router/RouteTestingTest.java index b4f343da62..cf43602528 100644 --- a/OsmAnd-java/src/test/java/net/osmand/router/RouteTestingTest.java +++ b/OsmAnd-java/src/test/java/net/osmand/router/RouteTestingTest.java @@ -15,6 +15,7 @@ import java.util.TreeSet; import net.osmand.binary.BinaryMapIndexReader; +import net.osmand.data.LatLon; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; @@ -62,9 +63,20 @@ public class RouteTestingTest { RandomAccessFile raf = new RandomAccessFile(fl, "r"); RoutePlannerFrontEnd fe = new RoutePlannerFrontEnd(); - BinaryMapIndexReader[] binaryMapIndexReaders = { new BinaryMapIndexReader(raf, new File(fl)) }; + BinaryMapIndexReader[] binaryMapIndexReaders;// = { new BinaryMapIndexReader(raf, new File(fl)) }; RoutingConfiguration.Builder builder = RoutingConfiguration.getDefault(); Map params = te.getParams(); + if (params.containsKey("map")){ + String fl1 = "src/test/resources/" + params.get("map"); + RandomAccessFile raf1 = new RandomAccessFile(fl1, "r"); + binaryMapIndexReaders = new BinaryMapIndexReader[]{ + new BinaryMapIndexReader(raf1, new File(fl1)), + new BinaryMapIndexReader(raf, new File(fl)) + }; + } + else { + binaryMapIndexReaders = new BinaryMapIndexReader[]{new BinaryMapIndexReader(raf, new File(fl))}; + } RoutingConfiguration config = builder.build(params.containsKey("vehicle") ? params.get("vehicle") : "car", RoutingConfiguration.DEFAULT_MEMORY_LIMIT * 3, params); RoutingContext ctx = fe.buildRoutingContext(config, null, binaryMapIndexReaders, @@ -102,6 +114,4 @@ public class RouteTestingTest { } - - } From 71827daeea1c379262ff173621d1ed5cef9da44e Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 22 Sep 2020 17:32:25 +0300 Subject: [PATCH 67/80] test added --- .../net/osmand/router/RouteTestingTest.java | 53 +++++++++---------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/OsmAnd-java/src/test/java/net/osmand/router/RouteTestingTest.java b/OsmAnd-java/src/test/java/net/osmand/router/RouteTestingTest.java index cf43602528..06e6ef8fda 100644 --- a/OsmAnd-java/src/test/java/net/osmand/router/RouteTestingTest.java +++ b/OsmAnd-java/src/test/java/net/osmand/router/RouteTestingTest.java @@ -30,34 +30,34 @@ public class RouteTestingTest { private TestEntry te; - public RouteTestingTest(String name, TestEntry te) { - this.te = te; - } + public RouteTestingTest(String name, TestEntry te) { + this.te = te; + } - @BeforeClass - public static void setUp() throws Exception { - RouteResultPreparation.PRINT_TO_CONSOLE_ROUTE_INFORMATION_TO_TEST = true; - } + @BeforeClass + public static void setUp() throws Exception { + RouteResultPreparation.PRINT_TO_CONSOLE_ROUTE_INFORMATION_TO_TEST = true; + } - @Parameterized.Parameters(name = "{index}: {0}") - public static Iterable data() throws IOException { - String fileName = "/test_routing.json"; - Reader reader = new InputStreamReader(RouteTestingTest.class.getResourceAsStream(fileName)); - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - TestEntry[] testEntries = gson.fromJson(reader, TestEntry[].class); - ArrayList arrayList = new ArrayList<>(); - for(TestEntry te : testEntries) { - if(te.isIgnore()) { - continue; - } - arrayList.add(new Object[] {te.getTestName(), te}); - } - reader.close(); - return arrayList; + @Parameterized.Parameters(name = "{index}: {0}") + public static Iterable data() throws IOException { + String fileName = "/test_routing.json"; + Reader reader = new InputStreamReader(RouteTestingTest.class.getResourceAsStream(fileName)); + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + TestEntry[] testEntries = gson.fromJson(reader, TestEntry[].class); + ArrayList arrayList = new ArrayList<>(); + for (TestEntry te : testEntries) { + if (te.isIgnore()) { + continue; + } + arrayList.add(new Object[]{te.getTestName(), te}); + } + reader.close(); + return arrayList; - } + } - @Test + @Test public void testRouting() throws Exception { String fl = "src/test/resources/Routing_test.obf"; RandomAccessFile raf = new RandomAccessFile(fl, "r"); @@ -66,15 +66,14 @@ public class RouteTestingTest { BinaryMapIndexReader[] binaryMapIndexReaders;// = { new BinaryMapIndexReader(raf, new File(fl)) }; RoutingConfiguration.Builder builder = RoutingConfiguration.getDefault(); Map params = te.getParams(); - if (params.containsKey("map")){ + if (params.containsKey("map")) { String fl1 = "src/test/resources/" + params.get("map"); RandomAccessFile raf1 = new RandomAccessFile(fl1, "r"); binaryMapIndexReaders = new BinaryMapIndexReader[]{ new BinaryMapIndexReader(raf1, new File(fl1)), new BinaryMapIndexReader(raf, new File(fl)) }; - } - else { + } else { binaryMapIndexReaders = new BinaryMapIndexReader[]{new BinaryMapIndexReader(raf, new File(fl))}; } RoutingConfiguration config = builder.build(params.containsKey("vehicle") ? params.get("vehicle") : "car", From 77f75dd08a11d5acc6d55614695bf1213b33eef0 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Tue, 22 Sep 2020 18:03:41 +0300 Subject: [PATCH 68/80] Fix invisible alert dialog buttons when no animation --- OsmAnd/res/values/styles.xml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values/styles.xml b/OsmAnd/res/values/styles.xml index e52dbdfd56..ea305b19d2 100644 --- a/OsmAnd/res/values/styles.xml +++ b/OsmAnd/res/values/styles.xml @@ -355,12 +355,12 @@ - - From 201245090238d2d523ae0734109ac5cb803ec0f3 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Tue, 22 Sep 2020 12:27:10 +0000 Subject: [PATCH 69/80] Translated using Weblate (French) Currently translated at 99.9% (3486 of 3487 strings) --- OsmAnd/res/values-fr/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 408aa58e53..bfe4fe6318 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3880,4 +3880,7 @@ Modifier le type d’itinéraire après Seule la ligne d\'itinéraire sera enregistrée, les points de passage seront supprimés. Rétablir + Dernière modification + Nom : Z – A + Nom : A – Z \ No newline at end of file From 93fd2265f9d748355a89f10e8158aaf7e66930fd Mon Sep 17 00:00:00 2001 From: Deelite <556xxy@gmail.com> Date: Tue, 22 Sep 2020 14:50:25 +0000 Subject: [PATCH 70/80] Translated using Weblate (Russian) Currently translated at 99.9% (3484 of 3487 strings) --- OsmAnd/res/values-ru/strings.xml | 42 +++++++++++++++----------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index baa3bce085..d77acfa3aa 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -185,7 +185,7 @@ Старый поиск Показывать старый поиск Добавить старый поиск в меню. - Использовать автомагистрали + Разрешить автомагистрали Разрешает автомагистрали. Статьи Википедии рядом Город или регион @@ -309,16 +309,16 @@ Формат вывода видео Использовать системное приложение для записи видео. Использовать системную программу - Установка настроек аудио и видео. + Параметры записи звука и видео. Ошибка записи Камера недоступна - Аудио/видео записывается. Для остановки нажмите виждет AV. + Идёт запись медиа. Для остановки нажмите на виджет AV. Проигрывается аудио.\n%1$s Открыть внешний проигрыватель Удалить эту запись? недоступно - Записать аудио - Записать видео + Аудиозаметка + Видеозаметка Слой аудиозаписей Запись не может быть воспроизведена. Удалить запись @@ -330,8 +330,8 @@ Измерение расстояний Нажмите «Использовать местоположение…» чтобы добавить заметку к данному местоположению. Аудиозаметки - Делайте аудио/фото/видеозаметки во время поездки, используя либо кнопку на карте, либо контекстное меню местоположения. - Аудио/видеозаметки + Создавайте аудио-, видео- и фотозаметки в поездке, используя виджет или контекстное меню. + Медиазаметки частей Линии высот Контурные линии @@ -1203,13 +1203,13 @@ Просмотр Сделать фото Сделать фото - Синхронизация треков и видео/аудиозаметок с вашим аккаунтом Dropbox. + Синхронизация треков и медиазаметок с вашим аккаунтом Dropbox. Плагин Dropbox Плагин обеспечивает наложение контурных линии и (рельефа) затемняющего слоя, которые будут отображаться поверх стандартных карт OsmAnd. Эта функция высоко оценится спортсменами, туристами, путешественниками и всеми, кто заинтересован в рельефной структуре ландшафта. \n \nГлобальные данные (между 70° на севере и 70° на юге) основываются на измерениях SRTM (Shuttle Radar Topography Mission) и ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer), инструментом визуализации Terra, флагманского спутника Земли системы наблюдения NASA. ASTER является результатом совместных усилий NASA, министерства экономики Японии, торговли и промышленности (METI), космических систем Японии (J-spacesystems). Фото %1$s %2$s - Аудио/видеоданные + Медиаданные Остановить навигацию\? Вы уверены, что хотите удалить пункт назначения (и промежуточные пункты)? Точный маршрут (альфа) @@ -1317,8 +1317,8 @@ США Европа, Азия, Латинская Америка и тому подобное Великобритания, Индия и др. - Маршрут сюда - Маршрут отсюда + Маршрут до этой точки + Маршрут от этой точки Канада Версия: Время действия (в минутах): %1$s @@ -2624,7 +2624,7 @@ Нажатие на маркер на карте переместит его на первое место в списке активных маркеров, не открывая контекстное меню. Активация одним нажатием Делайте заметки! - Добавьте аудио-, видео- или фотозаметку в любую точку на карте, используя виджет или контекстное меню. + Добавьте аудио-, видео- или фотозаметки в любую точку на карте, используя виджет или контекстное меню. Заметки по дате По дате По типу @@ -3061,7 +3061,7 @@ Нет, спасибо Разрешить Имя профиля - Тип навигации + Режим навигации Такси Метро Лошадь @@ -3071,8 +3071,8 @@ Лыжи Тип: %s Базовый профиль - Выберите тип навигации - Выберите тип навигации для нового профиля + Выберите режим навигации + Выберите режим навигации для нового профиля Введите имя профиля Сначала необходимо указать имя профиля. Уже есть профиль с таким именем @@ -3087,7 +3087,7 @@ Вы действительно хотите удалить профиль «%s» Выберите профиль для начала Основывайте свой пользовательский профиль на одном из профилей приложения по умолчанию, это определяет базовые настройки, такие как видимость виджетов по умолчанию и выбор единиц измерения скорости и расстояния. Ниже перечислены профили приложений по умолчанию, а также примеры пользовательских профилей, на которые они могут быть расширены: - Выберите тип навигации + Выберите режим навигации Автомобиль, грузовик, мотоцикл Горный велосипед, мопед, лошадь Прогулки, пеший туризм, бег @@ -3238,7 +3238,7 @@ Голосовые подсказки Экранные оповещения Настройка параметров маршрута - Параметры маршрута + Маршрутизация Буфер Logcat Настройки плагинов Язык и вывод @@ -3349,7 +3349,7 @@ Выберите цвет Вы не можете удалить стандартные профили OsmAnd, но вы можете отключить их на предыдущем экране или переместить вниз. Редактировать профили - «Тип навигации» определяет способ расчета маршрутов. + Режим навигации определяет правила расчета маршрутов. Внешний вид профиля Значок, цвет и имя Редактировать список профилей @@ -3828,9 +3828,7 @@ Профиль будет применён только к следующему сегменту. Следующий сегмент Весь трек - Для использования данной возможности OsmAnd необходимо привязать ваш трек по дорогам. -\n -\nНа следующем шаге необходимо выбрать профиль навигации для определения разрешённых дорог и пороговое расстояние, чтобы приблизительно привязать маршрут к дорогам. + Далее необходимо выбрать профиль навигации для определения порогового расстояния и привязки маршрута к ближайшей разрешённой дороге. Выберите способ соединения точек прямой линией или рассчитайте маршрут между ними, как указано ниже. При обратном направлении Все изменения будут утеряны. @@ -3900,4 +3898,4 @@ \n • Исправлены проблемы с импортом/экспортом настроек профиля \n \n - + \ No newline at end of file From 28031b3665750c6a5916b664a302af81189d0e02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Tue, 22 Sep 2020 12:43:39 +0000 Subject: [PATCH 71/80] Translated using Weblate (Turkish) Currently translated at 100.0% (3487 of 3487 strings) --- OsmAnd/res/values-tr/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index 88d2ecc725..9713a69b10 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -3856,4 +3856,7 @@ \n • Profil ayarlarının içe/dışa aktarımıyla ilgili sorunlar düzeltildi \n \n + Son değiştirme + İsim: Z – A + İsim: A – Z \ No newline at end of file From 7cb6a947db6e3808d3b1b6b4ab8ce94c37cab1c7 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Tue, 22 Sep 2020 14:01:57 +0000 Subject: [PATCH 72/80] Translated using Weblate (Hebrew) Currently translated at 100.0% (3487 of 3487 strings) --- OsmAnd/res/values-iw/strings.xml | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-iw/strings.xml b/OsmAnd/res/values-iw/strings.xml index afc41fbb36..7f556c9926 100644 --- a/OsmAnd/res/values-iw/strings.xml +++ b/OsmAnd/res/values-iw/strings.xml @@ -3838,9 +3838,7 @@ כל המסלול יחושב מחדש באמצעות הפרופיל הנבחר. רק המקטע הבא יחושב מחודש באמצעות הפרופיל הנבחר. נא לבחור כיצד לחבר נקודות, בקו ישר, או לחבר מסלול ביניהן כפי שצוין להלן. - כדי להשתמש באפשרות זו על OsmAnd להצמיד את המסלול שלך לדרכים שעל המפה. -\n -\n בשלב הבא יהיה עליך לבחור בפרופיל ניווט כדי לזהות את הדרכים המורשות ואת סף המרחק כדי להעריך את המסלול שלך ביחס לדרכים. + בשלב הבא עליך להצמיד את הדרך המורשית הקרובה ביותר לאחד מפרופילי הניווט שלך כדי להשתמש באפשרות הזו. תמונות ברמת רחוב להתעלם מהשינויים במסלול המתוכנן על ידי סגירתו\? במקרה של כיוון הפוך @@ -3893,4 +3891,22 @@ נשמר נא להוסיף שתי נקודות לפחות. ביצוע מחדש + • פונקציית תכנון המסלול עודכנה: מאפשרת שימוש בסוגי ניווט שונים לפי מקטע והכללת מסלולית +\n +\n • תפריט מראה חדש למסלולים: ניתן לבחור צבע, עובי, להציג חצי כיוון, סמלי התחלה/סיום +\n +\n • אופן הצגת שבילי האופניים השתפר. +\n +\n • אפשר לגעת במסלולים, יש להם גם תפריט הקשר עם מידע בסיסי. +\n +\n • אלגוריתמי החיפוש השתפרו +\n +\n • אפשרות המעקב אחר המסלול בניווט השתפרה +\n +\n • תוקנו תקלות בייבוא/ייצוא הגדרות פרופיל +\n +\n + שינוי אחרון + שם: ת – א + שם: א – ת \ No newline at end of file From 9e31931b9ddc0d4014f7a8cd0b55ec25939065dd Mon Sep 17 00:00:00 2001 From: Franco Date: Tue, 22 Sep 2020 12:37:36 +0000 Subject: [PATCH 73/80] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (3487 of 3487 strings) --- OsmAnd/res/values-es-rAR/strings.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 6b55481e6e..99f789d362 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -1129,7 +1129,7 @@ El idioma elegido es incompatible con el motor TTS (texto a voz) instalado en Android, se usará el idioma TTS predefinido. ¿Buscar otro motor TTS en la tienda de aplicaciones\? Faltan datos ¿Ir a la tienda de aplicaciones para descargar el idioma elegido? - Invertir la dirección GPX + Invertir la dirección de la traza Usar destino actual Pasar a lo largo de la traza completa Mapa vectorial presente para esta ubicación. @@ -3904,4 +3904,7 @@ \n • Se han solucionado los problemas de la importación y exportación en los ajustes de los perfiles \n \n + Último modificado + Nombre: Z – A + Nombre: A – Z \ No newline at end of file From 15240ccef463f7d91d10bbae97ad67794a0f9b94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Tue, 22 Sep 2020 13:12:34 +0000 Subject: [PATCH 74/80] Translated using Weblate (Turkish) Currently translated at 62.8% (2405 of 3824 strings) --- OsmAnd/res/values-tr/phrases.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/OsmAnd/res/values-tr/phrases.xml b/OsmAnd/res/values-tr/phrases.xml index ce16c3b5ef..76b5305843 100644 --- a/OsmAnd/res/values-tr/phrases.xml +++ b/OsmAnd/res/values-tr/phrases.xml @@ -2406,4 +2406,14 @@ Küçük elektrikli aletler Kalkış bilgileri panosu İçme suyu doldurma + İstihkam türü: dairesel hendek + İstihkam türü: küçük set + İstihkam türü: limes + İstihkam türü: tepe kalesi + Megalit türü: geçit mezar + Megalit türü: taş çember + Megalit türü: nuraghe + Megalit türü: dolmen + Megalit türü: menhir + Toprak işi \ No newline at end of file From 02faad80aeba0745f1b45a2f397dda6fdc95abbe Mon Sep 17 00:00:00 2001 From: max-klaus Date: Tue, 22 Sep 2020 19:53:19 +0300 Subject: [PATCH 75/80] Fix initial search radius for nearest POIs --- .../java/net/osmand/search/core/SearchCoreFactory.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java index 360fafbdf9..e5c791a780 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java @@ -923,6 +923,7 @@ public class SearchCoreFactory { public static class SearchAmenityByTypeAPI extends SearchBaseAPI { private static final int BBOX_RADIUS = 10000; + private static final int BBOX_RADIUS_NEAREST = 1000; private SearchAmenityTypesAPI searchAmenityTypesAPI; private MapPoiTypes types; private AbstractPoiType unselectedPoiType; @@ -1007,7 +1008,14 @@ public class SearchCoreFactory { } this.nameFilter = nameFilter; if (poiTypeFilter != null) { - QuadRect bbox = phrase.getRadiusBBoxToSearch(BBOX_RADIUS); + int radius = BBOX_RADIUS; + if (phrase.getRadiusLevel() == 1 && poiTypeFilter instanceof CustomSearchPoiFilter) { + String name = ((CustomSearchPoiFilter) poiTypeFilter).getFilterId(); + if ("std_null".equals(name)) { + radius = BBOX_RADIUS_NEAREST; + } + } + QuadRect bbox = phrase.getRadiusBBoxToSearch(radius); List offlineIndexes = phrase.getOfflineIndexes(); Set searchedPois = new TreeSet<>(); for (BinaryMapIndexReader r : offlineIndexes) { From 709f91ab0aa2f69d838792cc6ff25f55feae7e4b Mon Sep 17 00:00:00 2001 From: Dmitriy Prodchenko Date: Wed, 23 Sep 2020 10:23:52 +0300 Subject: [PATCH 76/80] Update 3-bug-report.md --- .github/ISSUE_TEMPLATE/3-bug-report.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/3-bug-report.md b/.github/ISSUE_TEMPLATE/3-bug-report.md index ecf870be10..c30c5ccaf7 100644 --- a/.github/ISSUE_TEMPLATE/3-bug-report.md +++ b/.github/ISSUE_TEMPLATE/3-bug-report.md @@ -22,25 +22,25 @@ Please give us the following information so that we can try to **reproduce** you 🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅--> -# 🐞 bug report +## 🐞 Bug report -### Is this a regression? +##### Is this a regression? Yes, the previous version in which this bug was not present was: .... -### Description +##### Description -## 🔬 Minimal Reproduction +##### Minimal Reproduction 1. Open app, and click on ... -## 🔥 Exception or Error +##### Exception or Error

 
@@ -48,7 +48,7 @@ If the bug is reproducible, please describe steps below:
 
 
-## 🌍 Your Environment +##### Your Environment **OsmAnd Version:** From b2e705f21c6f1a20e07aa3e39662fc5698ad8141 Mon Sep 17 00:00:00 2001 From: Dmitriy Prodchenko Date: Wed, 23 Sep 2020 10:31:19 +0300 Subject: [PATCH 77/80] Update 3-bug-report.md --- .github/ISSUE_TEMPLATE/3-bug-report.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/3-bug-report.md b/.github/ISSUE_TEMPLATE/3-bug-report.md index c30c5ccaf7..aac6f3b299 100644 --- a/.github/ISSUE_TEMPLATE/3-bug-report.md +++ b/.github/ISSUE_TEMPLATE/3-bug-report.md @@ -29,18 +29,18 @@ Please give us the following information so that we can try to **reproduce** you Yes, the previous version in which this bug was not present was: .... -##### Description +### Description -##### Minimal Reproduction +##### How to reproduce? 1. Open app, and click on ... -##### Exception or Error +### Exception or Error

 
@@ -48,9 +48,9 @@ If the bug is reproducible, please describe steps below:
 
 
-##### Your Environment +### Your Environment -**OsmAnd Version:** +OsmAnd Version:

 
@@ -58,7 +58,11 @@ If the bug is reproducible, please describe steps below:
 
 
-**Device and Android/iOS version:** +Device and Android/iOS version: + + +Android/iOS version: + **Maps used (online or offline):** From 96edf0f0e1f7fe88db06811bf5bc6c36e73be633 Mon Sep 17 00:00:00 2001 From: Dmitriy Prodchenko Date: Wed, 23 Sep 2020 10:38:06 +0300 Subject: [PATCH 78/80] Update 3-bug-report.md --- .github/ISSUE_TEMPLATE/3-bug-report.md | 56 +------------------------- 1 file changed, 1 insertion(+), 55 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/3-bug-report.md b/.github/ISSUE_TEMPLATE/3-bug-report.md index aac6f3b299..05f1de2b1c 100644 --- a/.github/ISSUE_TEMPLATE/3-bug-report.md +++ b/.github/ISSUE_TEMPLATE/3-bug-report.md @@ -3,73 +3,19 @@ name: "\U0001F41E Bug report" about: Report a bug in OsmAnd --- - - -## 🐞 Bug report - -##### Is this a regression? - - - Yes, the previous version in which this bug was not present was: .... - ### Description - -##### How to reproduce? +### How to reproduce? - - 1. Open app, and click on ... - -### Exception or Error - -

-
-
-
-
### Your Environment - OsmAnd Version: - -

-
-
-
-
- Device and Android/iOS version: - - Android/iOS version: **Maps used (online or offline):** - - - - [ ] Offline maps offered within the OsmAnd app for download. - [ ] Online (tile / raster) maps - -**Anything else relevant?** From c39782e7ca869c2b49e1d629f0d5a0989dbc5199 Mon Sep 17 00:00:00 2001 From: Dmitriy Prodchenko Date: Wed, 23 Sep 2020 10:40:59 +0300 Subject: [PATCH 79/80] Update 3-bug-report.md --- .github/ISSUE_TEMPLATE/3-bug-report.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/3-bug-report.md b/.github/ISSUE_TEMPLATE/3-bug-report.md index 05f1de2b1c..80e7025212 100644 --- a/.github/ISSUE_TEMPLATE/3-bug-report.md +++ b/.github/ISSUE_TEMPLATE/3-bug-report.md @@ -15,7 +15,5 @@ Device and Android/iOS version: Android/iOS version: -**Maps used (online or offline):** -- [ ] Offline maps offered within the OsmAnd app for download. - -- [ ] Online (tile / raster) maps +**Maps used (online or offline):** +If you have an issue related to offline maps, tell us the exact name of the map file where the issue occurs and its edition date. From c9d24fc7f57b0012258d72ddb697e6a24eac94c3 Mon Sep 17 00:00:00 2001 From: Dmitriy Prodchenko Date: Wed, 23 Sep 2020 11:15:50 +0300 Subject: [PATCH 80/80] Update 3-bug-report.md --- .github/ISSUE_TEMPLATE/3-bug-report.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/3-bug-report.md b/.github/ISSUE_TEMPLATE/3-bug-report.md index 80e7025212..0fd8c3e5ff 100644 --- a/.github/ISSUE_TEMPLATE/3-bug-report.md +++ b/.github/ISSUE_TEMPLATE/3-bug-report.md @@ -11,9 +11,8 @@ about: Report a bug in OsmAnd ### Your Environment OsmAnd Version: -Device and Android/iOS version: Android/iOS version: - +Device model: **Maps used (online or offline):** If you have an issue related to offline maps, tell us the exact name of the map file where the issue occurs and its edition date.