diff --git a/OsmAnd-java/test/java/net/osmand/router/RouteResultPreparationTest.java b/OsmAnd-java/test/java/net/osmand/router/RouteResultPreparationTest.java index 608685449d..a5f3a5b9ad 100644 --- a/OsmAnd-java/test/java/net/osmand/router/RouteResultPreparationTest.java +++ b/OsmAnd-java/test/java/net/osmand/router/RouteResultPreparationTest.java @@ -3,7 +3,6 @@ package net.osmand.router; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import net.osmand.PlatformUtil; -import net.osmand.router.TestEntry; import net.osmand.binary.BinaryMapIndexReader; import net.osmand.data.LatLon; import org.apache.commons.logging.Log; @@ -89,6 +88,7 @@ public class RouteResultPreparationTest { public void testLanes() throws Exception { List routeSegments = fe.searchRoute(ctx, startPoint, endPoint, null); + Set reachedSegments = new TreeSet(); int prevSegment = -1; for (int i = 0; i <= routeSegments.size(); i++) { @@ -110,6 +110,15 @@ public class RouteResultPreparationTest { } prevSegment = i; } + + if (i < routeSegments.size()) { + reachedSegments.add(routeSegments.get(i).getObject().getId()); + } + } + + Set expectedSegments = expectedResults.keySet(); + for (Long expSegId : expectedSegments){ + Assert.assertTrue("Expected segment " + expSegId + " weren't reached in route segments " + reachedSegments.toString(), reachedSegments.contains(expSegId)); } } diff --git a/OsmAnd/AndroidManifest-free.xml b/OsmAnd/AndroidManifest-free.xml index 78feabaa29..6782e2ec24 100644 --- a/OsmAnd/AndroidManifest-free.xml +++ b/OsmAnd/AndroidManifest-free.xml @@ -1,11 +1,19 @@ - - - - + xmlns:tools="http://schemas.android.com/tools"> + + + + + + + \ No newline at end of file diff --git a/OsmAnd/AndroidManifest-freedev.xml b/OsmAnd/AndroidManifest-freedev.xml index addf561555..bc527a3eed 100644 --- a/OsmAnd/AndroidManifest-freedev.xml +++ b/OsmAnd/AndroidManifest-freedev.xml @@ -1,11 +1,17 @@ - - - - + xmlns:tools="http://schemas.android.com/tools"> + + + + + diff --git a/OsmAnd/AndroidManifest.xml b/OsmAnd/AndroidManifest.xml index 4b1721d410..088c5652ae 100644 --- a/OsmAnd/AndroidManifest.xml +++ b/OsmAnd/AndroidManifest.xml @@ -64,7 +64,7 @@ - \ No newline at end of file diff --git a/OsmAnd/res/layout/dialog_live_updates_item_settings.xml b/OsmAnd/res/layout/dialog_live_updates_item_settings.xml index 2f82b9d7c4..16e0c0ff14 100644 --- a/OsmAnd/res/layout/dialog_live_updates_item_settings.xml +++ b/OsmAnd/res/layout/dialog_live_updates_item_settings.xml @@ -68,7 +68,7 @@ android:textSize="16sp"/> + tools:visibility="visible"/> \ No newline at end of file diff --git a/OsmAnd/res/layout/drawer_list_doubleitem.xml b/OsmAnd/res/layout/drawer_list_doubleitem.xml index 55ddb815c5..7f0a295f7a 100644 --- a/OsmAnd/res/layout/drawer_list_doubleitem.xml +++ b/OsmAnd/res/layout/drawer_list_doubleitem.xml @@ -39,7 +39,7 @@ android:textSize="@dimen/default_desc_text_size"/> - - - - - - - \ No newline at end of file diff --git a/OsmAnd/res/layout/expandable_list_item_category.xml b/OsmAnd/res/layout/expandable_list_item_category.xml index 2abf56e843..b4fbe9f09f 100644 --- a/OsmAnd/res/layout/expandable_list_item_category.xml +++ b/OsmAnd/res/layout/expandable_list_item_category.xml @@ -8,7 +8,7 @@ android:paddingLeft="@dimen/list_header_padding"> + + + + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/layout/list_item_text_button.xml b/OsmAnd/res/layout/list_item_text_button.xml new file mode 100644 index 0000000000..7611b0883b --- /dev/null +++ b/OsmAnd/res/layout/list_item_text_button.xml @@ -0,0 +1,32 @@ + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/layout/list_menu_item.xml b/OsmAnd/res/layout/list_menu_item.xml index a00ce3eb19..4e8a6e07cc 100644 --- a/OsmAnd/res/layout/list_menu_item.xml +++ b/OsmAnd/res/layout/list_menu_item.xml @@ -49,7 +49,7 @@ android:focusable="false" /> - - - - - + + + + \ No newline at end of file diff --git a/OsmAnd/res/menu/refresh_menu.xml b/OsmAnd/res/menu/refresh_menu.xml new file mode 100644 index 0000000000..afc9b60a3d --- /dev/null +++ b/OsmAnd/res/menu/refresh_menu.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/OsmAnd/res/values-be/phrases.xml b/OsmAnd/res/values-be/phrases.xml index 1410e5f201..5ec828f2fe 100644 --- a/OsmAnd/res/values-be/phrases.xml +++ b/OsmAnd/res/values-be/phrases.xml @@ -31,7 +31,7 @@ Мэбля Сад і агарод Газ у балонах - Крама + Крама Падарункі, сувеніры Тавары для дзяцей Сантэхніка, ванныя diff --git a/OsmAnd/res/values-bg/phrases.xml b/OsmAnd/res/values-bg/phrases.xml index 5803d9561f..597f888910 100644 --- a/OsmAnd/res/values-bg/phrases.xml +++ b/OsmAnd/res/values-bg/phrases.xml @@ -88,7 +88,7 @@ Магазин за мебели Градински център Магазин за втечнен газ - Смесен магазин + Смесен магазин Магазин за подаръци Железария Слухови апарати diff --git a/OsmAnd/res/values-ca/phrases.xml b/OsmAnd/res/values-ca/phrases.xml index 295e5716c8..29527917dd 100644 --- a/OsmAnd/res/values-ca/phrases.xml +++ b/OsmAnd/res/values-ca/phrases.xml @@ -484,7 +484,7 @@ Granja Àrea ferroviària - Basar + Basar Mini-rotonda Pou de mina Boca de mina @@ -2035,7 +2035,7 @@ Objecte històric Vigilància: sí - Amb botiga + Amb botiga Amb ascensor Sense ascensor diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index 607ba642fb..a3138d5052 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -1170,8 +1170,8 @@ Pausa la música Identificador únic del dispositiu Configureu els paràmetres de monitorització i el canal de seguiment personal - "Aquest connector us ofereix la funcionalitat del seguiment avançat en temps real anomenat OsMo, consulteu http://osmo.mobi.\n\nPodeu fer el seguiment de tots els dispositius que integrin un grup i comunicar-vos amb qualsevol d\'ells. Hi ha diferents paràmetres segons el tipus de seguiment: puntual o permanent.\n\nEls grups anònims es poden crear al moment per un nombre de dies especificat i tenen les funcionalitats limitades, p. ex. no tenen control remot ni administració del grup. Els grups totalment operatius, per altra banda, poden crear-se des del lloc web i només els usuaris registrats hi tenen accés. " - OsMo (Monitorització OSM) + "Aquest connector us ofereix parcialment la funcionalitat de la Monitorització OpenStreetmap, consulteu http://osmo.mobi.\n\nPodeu fer el seguiment de tots els dispositius que integrin un grup en temps real. També podeu consultar les fites i traces pujades en el grup on sigueu.\n\nEl grups creats fa mesos s\'han d\'actualitzar amb les normes actuals de creació de grups a la seu OsMo.mobi " + Monitorització OpenStreetMap OsMo Problema de connexió amb OSMo: Atura la sessió a OsMo @@ -1190,10 +1190,10 @@ Compartir Preferits compartits via OsmAnd Calcula la ruta entre punts - Inici automàtic del registre de la traça i del enviament de les posicions tot just iniciar l\'aplicació - Inici automàtic del registre de la traça - Identificació personal de seguiment - Prem per veure o compartir la identificació del traçador. Utilitzant la identificació del traçador altres dispositius connectats podran monitoritzar tots els moviments d\'aquest aparell. Per desconnectar seleccioni l\'opció Regenerar. + Inici automàtic de la traça i del enviament de les posicions tot just iniciar l\'aplicació + Inici automàtic de la traça + Identificació del traçador + Premeu per veure la identificació del traçador Testimoni de la sessió: %1$s S\'està esperant l\'autorització… "%1$d ubicacions enviades (%2$d a la memòria intermèdia) " @@ -1207,7 +1207,7 @@ Identificador de la traça Enllaça amb el dispositiu Dispositius connectats - Grups/dispositius d\'OsMo + Grups OsMo Informació Grup OsMo Per connectar amb el grup %2$s, indiqueu l\'identificador de grup (%1$s) o feu clic a %3$s. @@ -1227,7 +1227,7 @@ Identificador de grup Nom del grup Enllaça amb el grup - Connecta a + Uneix-te Crea un grup Ha fallat l\'operació del servidor OsMo Monitorització d\'OpenStreetMap @@ -1244,7 +1244,7 @@ Centra a la pantalla Estableix com a objectiu en moviment Nom registrat - El vostre àlies + Àlies Usuari rosa @@ -1306,7 +1306,8 @@ S\'ha baixat la traça OsMo %1$s. Ha fallat l\'inici de sessió OsMo Entreu per convidar - " - Tots els grups creats són públics! Si es vol ser anònim, afegiu directament els aparells via identificació de Tracker.\n - Els grups privats estan limitats fins un màxim de 8 persones.\n - Cas d\'inactivitat o d\'activitat d\'una sola persona durant 2 setmanes, el grup serà esborrat.\n - Es pot restringir l\'entrada al grup, a només per invitació, però per controlar el grup es necessitarà accedir a la consola d\'administració.\n - Si us cal crear un grup, però amb altres condicions, contacteu http://osmo.mobi" + " - En crear un grup li hauríeu de donar-li un nom i omplir una descripció\n - Des la gestió de grups només se\'n poden crear de tipus Simple, amplieu-ho a la web https://osmo.mobi/g/new +\n - Mitjançant la web es pot gestionar un grup, posar rutes i ubicacions que tots poden accedir\n - No es recolzen els grups d\'un sol usuari si no és el grup POI\n - Els grups privats estan limitats fins un màxim de 8 persones.\n - Els termes i condicions detallats hi són sempre a la web OsMo.mobi\n - Si us calen condicions especials, contacteu amb el suport: osmo.mobi@gmail.com " Cal que ho llegiu abans de crear un grup. Ha fallat l\'autorització S\'ha trobat un error d\'autorització OsMo: %1$s.\n Pot ser per una caiguda temporal del servei o bé pel venciment del vostre usuari.\n Voleu crear un nou usuari nou? @@ -1407,8 +1408,8 @@ Tolerància sobre el límit de velocitat Trieu el marge de tolerància al límit de velocitat per sobre del que rebreu un avís de veu. No s\'ha trobat el dispositiu - El servei OsMo no està disponible:\n- verifiqueu la connexió;\n- verifiqueu la configuració;\n- consulteu el nostre Twitter: https://twitter.com/OsMomobi - Un usuari anònim no pot:\n- crear grups;\n- sincronitzar grups i dispositius amb el servidor;\n- gestionar grups i dispositius en privat. + No s\'ha pogut connectar al servei OsMo :\n- verifiqueu la connexió a internet;\n- verifiqueu la configuració;\n- consulteu el nostre Twitter: https://twitter.com/OsMomobi + Un usuari anònim no pot:\n- crear grups;\n- sincronitzar grups i dispositius amb el servidor;\n- gestionar grups i dispositius en un tauler personal a la web. Usuari anònim S\'ha iniciat sessió com a %1$s Detalls @@ -1607,7 +1608,7 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu Indiqueu l\'alçada del vehicle que les rutes han d\'admetre Recàlcul intel·ligent de la ruta Torna a calcular només la part inicial de la ruta si són viatges llargs - Comparteix la meva posició + Transmet la posició Surt Desactivat Acoloreix les rutes segons la seva importància @@ -1960,4 +1961,7 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu Evita la via La carpeta d\'emmagatzemament de dades seleccionada només permet la lectura. S\'ha modificat temporalment la carpeta d\'emmagatzemament a la memòria interna . Seleccioneu un directori d\'emmagatzemament vàlid. Memòria compartida + No s\'ha trobat cap fita + Informe + L\'aplicació ja permet escriure a un emmagatzemament extern. Cal una reinicialització manual de l\'aplicació. diff --git a/OsmAnd/res/values-cs/phrases.xml b/OsmAnd/res/values-cs/phrases.xml index 5e6d703c92..e7b273142e 100644 --- a/OsmAnd/res/values-cs/phrases.xml +++ b/OsmAnd/res/values-cs/phrases.xml @@ -292,7 +292,7 @@ Sexshop Rybářské potřeby Obrazy a rámy - Smíšený obchod + Smíšený obchod Suvenýry/Dárky Audiotechnika Zdravotnické potřeby diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 0d393c6aca..22b0533637 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -45,7 +45,7 @@ Møbelforretning Havecenter Flaskegas - Landhandel + Landhandel Gavebutik Glarmester Værktøj @@ -1958,7 +1958,7 @@ Historisk objekt Overvågning: ja - Med butik + Med butik Cykelsalg: ja Cykelsalg: nej @@ -2749,4 +2749,5 @@ Freeflying funktionær: nej Freeflying fastvinge: ja Freeflying fastvinge: nej - + + diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index d7034caa80..75f51cdd23 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -222,7 +222,7 @@ Gärtner Flüssiggas Tor - Gemischtwarenhandlung + Gemischtwarenhandlung Geisir Geschenkeladen Gletscher @@ -2145,7 +2145,7 @@ Historisches Objekt Überwacht: Ja - mit Geschäften + mit Geschäften Fahrradeinzelhandel: Ja Fahrradeinzelhandel: Nein @@ -2595,4 +2595,81 @@ Explosionsart: unter Wasser Solarium - +Explosionstyp: Untergrund, Welle + Explosionstyp: atmosphärisch, Luft + Explosionstyp: atmosphärisch, Oberfläche, Turm + Explosionstyp: atmosphärisch, Ballon + Explosionstyp: atmosphärisch, Wasseroberfläche , Barge + Explosionstyp: Kraterbruch (flache Untergrund ) + Explosionstyp: atmosphärisch, Rakete oder Raketen + Explosionsdatum (UTC) + Schussname (en) + Explosionsserie + Explosionzweck: Atomwaffen verbunden + Explosionszweck: Waffeneffekte + Explosionszweck: Sicherheitsexperiment + Explosionszweck: Forschung für friedliche Anwendungen + Explosionszweck: Grundlagenforschung + Explosionszweck: industrielle Anwendung, Aushub Hohlraum + Explosionszweck: industrielle Anwendung, seismisch klingend + Explosionszweck: industrielle Anwendung, Öl Stimulation + Explosionszweck: industrielle Anwendung + Explosionszweck: industrielle Anwendung, Erdbewegung + Explosionszeit (UTC) + Explosionsausbeute + Explosionsloch + Höhe der Explosion + Höhe des Zentrums + Körperwelle Größe + Explosionsalve: erste Detonation eines Salvetests + Explosionsalve: zweite Detonation eines Salvetests + Explosion: Kraterdurchmesser + Explosion: Sprengkopf + Explosion: Gerät + + Religiöse Waren + + Baumschule + + Druckluft : Ja + Druckluft : Nein + + Autowäsche: Ja + + Staubsauger: Ja + Staubsauger: Nein + Staubsauger + + Freie Fliegen (Sport) + Selbstreparaturstation für Fahrräder + Wasserhahn + Tastenbetätigung: Ja + Tastenbetätigung: Nein + + Freies Flugfeld : Start + Freies Flugfeld : Landeplatz + Freies Flugfeld: Landepunkt + Freies Flugfeld: Abschleppen + Freies Flugfeld: Ausbildung + Freies Fliegen offiziell: Ja + Freies Fliegen offiziell: Nein + Paragleiten: Ja + Paragleiten: Nein + Drachenfliegen: Ja + Drachenfliegen: Nein + Freies Fliegen strikt: Ja + Freies Fliegen strikt: Nein + Freier Flugplatz Ausrichtung: N + Freier Flugplatz Ausrichtung: NO + Freier Flugplatz Ausrichtung: O + Freier Flugplatz Ausrichtung: SO + Freier Flugplatz Ausrichtung: S + Freier Flugplatz Ausrichtung: SW + Freier Flugplatz Ausrichtung: W + Freier Flugplatz Ausrichtung: NW + Keine Flugzeit (freies Fliegen) + Gästerichtlinien für das freie Fliegen: Ja + Gästerichtlinien für das freie Fliegen: Nein + + Schutztitel + diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 2af2a2c266..8d75e59dcc 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -1407,7 +1407,7 @@ Für Hilfe mit der OsmAnd-App kontaktieren Sie bitte unser Support-Team unter su Geräte-ID Konfigurieren der Überwachungseinstellungen und des persönlichen Überwachungskanals - "Dieses Plugin stellt den Funktionsumfang der sogenannten OsMo-Live-Überwachung bereit, siehe http://osmo.mobi.\n\nEs ermöglicht die temporäre oder dauerhafte Positionsdarstellung und Kommunikation einer Gruppe teilnehmender Geräte in Echtzeit. Es gibt verschiedene Einstellungen für zeitlich begrenzte oder Dauer-Aufzeichnung.\n\nAnonym erstellte Gruppen können spontan eingerichtet werden, hier sind die Optionen etwas eingeschränkt: Lebensdauer der Gruppe nur für einige Tage, auch ist keine zentrale Steuerung der Gruppe möglich. Voll funktionsfähige Gruppen müssen auf der genannten Internetseite erstellt werden, auf die Gruppe haben nur registrierte Nutzer Zugriff. " + "Dieses Plugin stellt teilweise den Funktionsumfang der sogenannten OsMo-Live-Überwachung bereit, siehe http://osmo.mobi.\n\nSie können in Echtzeit alle Geräte einer teilnehmenden Gruppe verfolgen. Sie können auch den Punkt und die Tracks sehen, welche in der Gruppe hochgeladen worden sind, der Sie angehören.\n\nAnonym erstellte Gruppen können spontan eingerichtet werden, hier sind die Optionen etwas eingeschränkt: Lebensdauer der Gruppe nur für einige Tage, auch ist keine zentrale Steuerung der Gruppe möglich. Voll funktionsfähige Gruppen müssen auf der genannten Internetseite erstellt werden, auf die Gruppe haben nur registrierte Nutzer Zugriff. " OpenStreetMap Überwachung OsMo "OsMo-Verbindungsproblem: " @@ -2128,4 +2128,6 @@ Für Hilfe mit der OsmAnd-App kontaktieren Sie bitte unser Support-Team unter su Hoch bewegen Runter bewegen Datenname beinhaltet nicht erlaubte Zeichen - +Keine Wegpunkte gefunden + Bitte eine Kartenmarkierung via Karte setzen + diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index c46e1bbb53..3580c5808f 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -152,7 +152,7 @@ QR-kodo Kaŝi proponitajn objektojn - Kunhavigi lokon + Kunhavigi pozicion Sendi Monda bazmapo (kiu kovras tutan mondon ĉe etaj zomoj) mankas aŭ estas neĝisdata. Bonvolu konsideri elŝuti mondan bazmapon por havi plenan ĉirkaŭaĵon. Mapo elŝutita @@ -216,7 +216,7 @@ Tavolo de nivel-ombrumo kaŝita Aldoni novan Elekti kategorion - Difinas unuon de rapideco + Difinas unuon de rapido Rapideca mezuro nm Marmejloj @@ -408,18 +408,18 @@ Elektu etoson de aplikaĵo Nivelkurboj " - Por krei grupon, bonvolu nomi kaj priskribi ĝin\n - Uzante la aplikaĵon nur Simplaj specoj de grupoj estas kreitaj, legu pli en la retpaĝo https://osmo.mobi/g/new\n - Per-retpaĝe vi povas administri grupon, loki kursojn kaj punktojn videblajn por ĉiujn\n - Ni ne rekomendas uzi gropon nur per unu persono, se tiu ne estas Intereseja gropo\n - Nekomunaj grupoj estas limitaj ĝis 8 personoj\n - Detalaj kondiĉoj estas ĉiam disponeblaj en retejo OsMo.mobi\n- Se vi bezonos specialajn kondiĉojn - bonvolu kontakti subtenantojn: osmo.mobi@gmail.com " - Bonvolu difini ID-on + Bonvolu difini identigilon Ne povas konekti al la servilo de OsMo:\n- kontrolu vian retkonekton;\n- kontrolu agordojn;\n- vizitu na nia Twitter: https://twitter.com/OsMomobi Anonima uzanto ne povas:\n- krei grupojn;\n- samtempigi grupojn kaj aparatojn kun la servilo;\n- administri grupojn kaj aparatojn per persona stirpanelo en retejo. Raporti Grupa ID - Ŝanĝospurila ID + Kursospurila ID Konekti Grupoj OsMo Aŭtomate komencas registrigi ekskurson kaj sendas poziciojn dum starto de aplikaĵo Aŭtomate eki ekskurs-registrilon - Ŝanĝospurila ID - Alklaku por vidi identigilon de ŝanĝospurilo + Kursospurila ID + Alklaku por vidi identigilon de kursospurilo Kaŝnomo OpenStreetMap Observado "Tiu ĉi kromprogramo parte liveras eblecojn de la OpenStreetMap Observado, rigardu https://osmo.mobi\n\nVi povas spuri ĉiujn aparatojn de partoprenanta grupo realtempe. Ankaŭ vi povas vidi interesejojn kaj kursojn alŝutitajn al la grupo al kiu vi apartenas. " @@ -434,7 +434,7 @@ OSM-mapiga helpilo Administri Lasta elŝuto de A-GPS datumoj: %1$s - En multaj landoj (Germanujo, Francujo, Italujo, kaj aliaj) uzado de sciigoj pri rapid-kontroloj estas kontraŭleĝaj. Aŭtoroj de OsmAnd ne responsos se vi rompos leĝon. Bonvolu elekti \"Jes\" nur tiam kiam vi havas rajton por uzi tiu ĉi funkcio. + En multaj landoj (Germanujo, Francujo, Italujo, kaj aliaj) uzado de sciigoj pri rapid-kontroloj estas kontraŭleĝaj. Aŭtoroj de OsmAnd ne responsos se vi rompos leĝon. Bonvolu elekti \"Jes\" nur tiam kiam vi havas rajton por uzi tiun ĉi funkcion. Por korekte prezenti viajn trafiksignojn kaj regulojn, bonvolu elekti vian trafikan regionon: OsmAnd ebligas uzi tutmondajn mapojn kaj navigadon eksterrete! Nuna kurso @@ -480,7 +480,7 @@ Miaj ŝatataj Aktuale registranta kurso Punktoj de kurso - Segmentoj de kurso + Kurs-sekcioj Punktoj de kurso Enretaj mapoj Renomado malsukcesis. @@ -541,7 +541,7 @@ Lokaj Elŝutado ne eblas, bonvolu kontroli vian retkonekton. Registrado de kursoj - "Tiu ĉi kromprogramo ebligas al vi registri kaj konservi viajn kursojn per permana elektado de GPX-registrada fenestraĵo sur la mapekrano, aŭ ankaŭ aŭtomate registri ĉiujn viajn navigadajn kursojn al GPX-dosiero.\n\nRegistritaj kursoj povas esti kunhavigitaj kun viaj amikoj aŭ esti uzita por kontribui la OSM-on. Atletoj povas uzi registritajn kursojn por monitori siajn ekzercojn. Kelkaj bazaj ecoj oni povas analizi senpere per OsmAnd, kiel: tempoj de ĉirkaŭoj, muzumaj rapidecoj, ktp, kaj kursoj oni povas poste analizi uzante specialajn eksterajn programojn. " + "Tiu ĉi kromprogramo ebligas al vi registri kaj konservi viajn kursojn per permana elektado de GPX-registrada fenestraĵo sur la mapekrano, aŭ ankaŭ aŭtomate registri ĉiujn viajn navigadajn kursojn al GPX-dosiero.\n\nRegistritaj kursoj povas esti kunhavigitaj kun viaj amikoj aŭ esti uzita por kontribui la OSM-on. Atletoj povas uzi registritajn kursojn por monitori siajn ekzercojn. Kelkaj bazaj ecoj oni povas analizi senpere per OsmAnd, kiel: tempoj de ĉirkaŭoj, mezumaj rapidoj, ktp, kaj kursoj oni povas poste analizi uzante specialajn eksterajn programojn. " Uzi OpenGL-bildigon Uzas aparatan plirapidigan OpenGL-bildigon (povas ne funkcii je iuj aparatoj) Ne trovis ĉirkaŭvojon @@ -648,7 +648,7 @@ Eki GPX-registradon Ĉesigi enretan kurs-registradon Ĉesigi GPX-registradon - Eki novan segmenton + Eki novan sekcion Kaŝi konstruaĵojn Kaŝi vojojn ne por aŭtoj Kaŝi priskribojn @@ -725,4 +725,67 @@ Ukraina Vjetnama Kimra + Ne trovis navigadpunktojn + Bonvolu aldoni markojn per mapo + Interesejaj etikedoj + Ŝarganta %1$s… + Nuna tempo + Navigadpunkto + \n\nPremtrenu por vidi sur la mapo + Eki turnon post turno navigadon aŭtomate + \n\nPremtrenu por montri agordojn + "Navigadpunktoj: %1$s " + "Subkursoj: %1$s " + "Distanco: %1$s (%1$s punktoj) " + "Komenco je: %1$tF, %1$tT " + "Fino je: %1$tF, %1$tT " + "Mezuma rapido: %1$s " + "Maksimuma rapido: %1$s " + Mezuma altitudo: %1$s + Altituda intervalo: %1$s + Tempa intervalo: %1$s + Desupro/alsupro: %1$s + Tempo movante: %1$s + Sekcio + " %1$s punktoj" + Punkto %1$s + %1$s\nPunktoj de kurso: %2$s + %1$s\nPunktoj + %1$s\nKurso %2$s + GPX-kursdosiero estas malplena + Uzanto %1$s aniĝis grupon %2$s + Uzanto %1$s forlasis grupon %2$s + Montras atentigojn kiam uzanto aniĝas aŭ forlasas la grupon + Sekvi + Registri + Por krei grupojn vi devas registri sin kiel uzanto de OsMo. + Viaj ensalutiloj al OsMo malkorektas. + Ĉu vi certe volas rekrei personan identigilon? Ĉiuj aparatoj kiuj konektas al vi, ne povos plue spuri vin. + Rekrei uzantan identigilon + Nuligi movadan celon + Centrigi sur la ekrano + Agordi kiel movadan celon + Uzanto + Registrita nomo + Ŝanĝi ecojn de uzanto + Vidiga koloro + Informoj + Grupo OsMo + Por konekti la grupon %2$s difinu grupan identigilon aŭ alklaku %3$s. + Permesu por permanenta spurado de tiu ĉi aparato + Kunhavigi nuntempan seancon per retumilo + Kunhavigi seancon + Seanco ne disponebla, bonvolu kontroli ĉu \'Sendi poziciojn\' estas ŝaltita. + Montri atentigojn pri grupo + Seanca retadreso por spuri aparaton (%1$s) + Por konekti al cela aparato %2$s, alklaku ligilon %3$s aŭ difinu identigilon de kursospurilo (%1$s) + Protokolada intervalo + Agordu oftecon de sendado de pozicio + tagoj + Konekti + Priskribo + Senvalidiĝos post + Politiko + Uzantnomo + Grupnomo diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index 90cb2213e5..6798859141 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -62,7 +62,7 @@ Librería (libros) Bicicletería - Tienda de anime + Artículos de anime Antigüedades Venta de arte Artículos para bebés @@ -86,11 +86,11 @@ Sexshop Equipos de pesca Florería - Tienda de marcos + Marcos para cuadros Mueblería Vivero (venta) Gas líquido - Pulpería + Pulpería Regalería Vidriería Ferretería @@ -114,7 +114,7 @@ Pinturería Mascotas Servicio fotográfico - Tienda de radiotecnia + Venta de radiotecnia Local de segunda mano Proveedor naval Artículos deportivos @@ -127,7 +127,7 @@ Aspiradoras Todo por $2 Videoclub - Tienda de persianas + Persianas Grandes almacenes Electrónicos Concesionario de automóviles @@ -163,7 +163,7 @@ Chicana Banda sonora Peatonal elevada - Gargantilla + Calzada reducida Semáforo Taller mecánico @@ -855,7 +855,7 @@ Quesería Chocolatería - Tienda de café + Venta de café en granos Fábrica de pastas Pastelería Artículos de calefacción @@ -1934,7 +1934,7 @@ Estructura del puente: Madera simple Objeto histórico Vigilado - Con negocio + Con negocio Vende bicicletas No vende bicicletas @@ -2399,7 +2399,7 @@ Permitido bañarse Prohibido bañarse -Mediana (tráfico) +Calzada dividida Guardería náutica diff --git a/OsmAnd/res/values-es-rUS/phrases.xml b/OsmAnd/res/values-es-rUS/phrases.xml index 591196091e..8a5ea6a659 100644 --- a/OsmAnd/res/values-es-rUS/phrases.xml +++ b/OsmAnd/res/values-es-rUS/phrases.xml @@ -59,7 +59,7 @@ Vinoteca Librería Bicicletería - Tienda de anime + Artículos de anime Antigüedades Venta de arte Artículos para bebés @@ -83,11 +83,11 @@ Tienda erótica Equipos de pesca Florería - Tienda de marcos + Marcos para cuadros Mueblería Centro de jardinería Gas líquido - Pulpería + Pulpería Regalería Vidriería Ferretería @@ -111,7 +111,7 @@ Pinturería Mascotas Servicio fotográfico - Tienda de radiotecnia + Venta de radiotecnia Productos usados Proveedor naval Artículos deportivos @@ -124,7 +124,7 @@ Aspiradoras Bazar Videoclub - Tienda de persianas + Persianas Grandes almacenes Electrónicos Concesionario de automóviles @@ -158,7 +158,7 @@ Chicana Banda sonora Peatonal elevada - Gargantilla + Calzada reducida Semáforo Taller mecánico Neumáticos @@ -812,7 +812,7 @@ Cruce peatonal Quesería Chocolatería - Tienda de café + Venta de café en granos Fábrica de pastas Pastelería Artículos de calefacción @@ -1789,7 +1789,7 @@ Estructura del puente: Madera simple Objeto histórico Vigilado - Con negocio + Con negocio Vende bicicletas No vende bicicletas Repara bicicletas @@ -2198,7 +2198,7 @@ Temperatura Permitido bañarse Prohibido bañarse -Mediana (tráfico) +Calzada dividida Guardería náutica Transportadora: Si Referencia del puente diff --git a/OsmAnd/res/values-es/phrases.xml b/OsmAnd/res/values-es/phrases.xml index 08af6de33e..3642877899 100644 --- a/OsmAnd/res/values-es/phrases.xml +++ b/OsmAnd/res/values-es/phrases.xml @@ -64,7 +64,7 @@ Mueblería Vivero Gas líquido - Tienda general + Tienda general Tienda de regalos Vidriería Herboristería @@ -1948,7 +1948,7 @@ Objeto histórico Vigilado - Con negocio + Con negocio Vende bicicletas No vende bicicletas diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index b82b39abb8..f79bee833f 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -1342,8 +1342,8 @@ Expira en Descripción Política - Identificador de seguimiento - Identificador de grupo + ID de seguimiento + ID de grupo Nombre de grupo Emparejar con dispositivo Emparejar con grupo @@ -1358,8 +1358,8 @@ segundos antes Inicia el viaje y envía ubicaciones automáticamente tras el arranque de la aplicación Iniciar viaje automáticamente - Identificador de seguimiento - Pulsa para ver el identificador de seguimiento + ID de seguimiento + Pulsa para ver el ID de seguimiento Token de sesión: %1$s Reiniciar sesión OsMo Información de depuración @@ -1437,8 +1437,10 @@ Fallo en la autorización Se encontró un error de autorización OsMo: %1$s.\n Puede deberse a que el servicio esté temporalmente caído o que su registro ha expirado.\n ¿Quiere realizar un nuevo registro? Entrar por invitación - " - ¡Todos los grupos creados son públicos!. Si quiere hacerse anónimo, conecte dispositivos directamente a través de los identificadores de seguimiento.\n - Los grupos privados están limitados a 8 personas. -\n - En caso de inactividad o que sólo 1 persona esté activa durante 2 semanas, se eliminará el grupo.\n - Puede restringir la entrada al grupo, como sólo por invitación pero para controlar el grupo necesita ir a la consola de administración.\n - Si tiene que crear un grupo pero con otras condiciones, contacte con http://osmo.mobi" + " - Al crear un grupo por favor dale un nombre e introduce su descripción.\n- Desde la aplicación los grupos se crean sólo con el tipo Simple, lee más en el sitio web https://osmo.mobi/g/new +\n - A través de un sitio web puedes gestionar un grupo, para ubicar pistas y puntos disponibles para todos +\n - No apoyamos el uso de grupos de un único usuario, si no es el grupo POI +\n - Los grupos privados están limitados a 8 personas\n - Los términos y condiciones detallados siempre están en el sitio web OsMo.mobi\n - Si necesitas condiciones especiales por favor contacta con soporte: osmo.mobi@gmail.com " ¡Lee antes de crear un grupo! Fallo al iniciar sesión en OsMo Puntos OsMo %1$s descargados. @@ -1481,7 +1483,7 @@ Dibujar caminos de acuerdo a las trazas de OSMC Invitar… ¿Quiere abandonar el grupo %1$s? - Especifique el id + Por favor especifica ID Pronto Normal Tarde @@ -1532,8 +1534,8 @@ Tolerancia de límite de velocidad Seleccione el margen de tolerancia sobre el límite de velocidad con el cual recibirá un aviso de voz. Dispositivo no encontrado - Servicio OsMo no disponible:\n- compruebe la conexión;\n- compruebe los ajustes;\n- compruebe nuestro Twitter: https://twitter.com/OsMomobi - Un usuario anónimo no puede:\n- crear grupos;\n- sincronizar grupos y dispositivos con el servidor;\n- gestionar grupos y dispositivos en una sala privada. + No puedo contactar con el servidor OsMo:\n- comprueba la conexión a Internet;\n- comprueba la configuración;\n- comprueba nuestro Twitter: https://twitter.com/OsMomobi + Un usuario anónimo no puede:\n- crear grupos;\n- sincronizar grupos y dispositivos con el servidor;\n- gestionar grupos y dispositivos desde un cuadro de mando personal en el sitio web. Usuario anónimo Iniciado la sesión como %1$s Detalles @@ -2127,4 +2129,7 @@ Informe completo Usuario y contraseña de OpenStreetMap Informe - + Por favor, añade marcadores de mapa via mapa + No se han encontrado puntos intermedios + El nombre de archivo contiene caracteres ilegales + diff --git a/OsmAnd/res/values-fa/phrases.xml b/OsmAnd/res/values-fa/phrases.xml index f1da6cd2ab..e7323c682a 100644 --- a/OsmAnd/res/values-fa/phrases.xml +++ b/OsmAnd/res/values-fa/phrases.xml @@ -49,7 +49,7 @@ فروشگاه مبلمان لوازم باغبانی فروشگاه کپسول گاز -فروشگاه عمومی +فروشگاه عمومی مغازه کادو فروشی Glaziery فروشگاه سخت افزار diff --git a/OsmAnd/res/values-fr/phrases.xml b/OsmAnd/res/values-fr/phrases.xml index 8fabc89f45..95f31e897d 100644 --- a/OsmAnd/res/values-fr/phrases.xml +++ b/OsmAnd/res/values-fr/phrases.xml @@ -159,7 +159,7 @@ Voie de funiculaire Magasin d\'ameublement Jardinerie - Magasin généraliste + Magasin généraliste Boutique de cadeaux Glacier Vitrier @@ -1507,7 +1507,7 @@ Objet historique Surveillance : oui - Avec boutique + Avec boutique Lieu d\'observation de la vie sauvage diff --git a/OsmAnd/res/values-he/phrases.xml b/OsmAnd/res/values-he/phrases.xml index 4a79046b62..7acb6dc1a6 100644 --- a/OsmAnd/res/values-he/phrases.xml +++ b/OsmAnd/res/values-he/phrases.xml @@ -101,7 +101,7 @@ מרכז גינון רהיטי גן חנות גז - כל-בו + כל-בו חנות מתנות חנות מערכות סטראו חנות מוצרי בית diff --git a/OsmAnd/res/values-hu/phrases.xml b/OsmAnd/res/values-hu/phrases.xml index 584d4085b7..f2337e0f48 100644 --- a/OsmAnd/res/values-hu/phrases.xml +++ b/OsmAnd/res/values-hu/phrases.xml @@ -288,7 +288,7 @@ Horgászfelszerelés Képkeretbolt Bútorbolt - Vegyesbolt + Vegyesbolt Üveges Hallókészülékes Vadászfelszerelés diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index 895868ffe6..b0a3b74fbc 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -2168,4 +2168,6 @@ Klippek elvágása, ha a felhasznált hely túllépi a tárolási méretet Az egyes felvett klippek hossza nem lesz hosszabb a megadott időnél Az összes klipp által elfoglalható hely + Kérlek, vegyél fel jelölőket a térképen + Nem találhatók útpontok diff --git a/OsmAnd/res/values-it/phrases.xml b/OsmAnd/res/values-it/phrases.xml index 85a57daa40..c609f96452 100644 --- a/OsmAnd/res/values-it/phrases.xml +++ b/OsmAnd/res/values-it/phrases.xml @@ -80,7 +80,7 @@ Negozio anime Boutique - Emporio + Emporio Negozio regali Vetreria Ferramenta diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index a82fcd4083..bea5e5afda 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -1299,7 +1299,7 @@ Formato non valido: %s ID univoco del dispositivo Configura le impostazioni di monitoraggio e imposta il canale di monitoraggio personale - "Questo componente aggiuntivo fornisce le funzionalità del cosiddetto monitoraggio avanzato in diretta OsMo, vedi http://osmo.mobi.\n\nPuoi tracciare in tempo reale tutti i dispositivi di un gruppo di partecipanti e comunicare con loro. Viene fornito con varie opzioni di monitoraggio della sessione in corso o permanentemente.\n\nI gruppi anonimi possono essere creati autonomamente per uno specifico numero di giorni e sono limitati ad alcune funzioni, es. non ci sono controllo remoto e l\'amministratore del gruppo. Gruppi con tutte le funzionalità possono essere creati dal sito e solo gli utenti registrati possono accedervi. " + "Questo componente aggiuntivo fornisce le funzionalità del cosiddetto monitoraggio avanzato in diretta OsMo, vedi http://osmo.mobi.\n\nPuoi tracciare in tempo reale tutti i dispositivi di un gruppo di partecipanti. Puoi anche visualizzare i punti e le tracce caricate dal gruppo a cui appartieni.\n\nIl gruppo che non è stato rimosso da mesi viene allineato con le tue regole per la creazione di gruppi nel sito OsMo.mobi " Monitoraggio OpenStreetMap OsMO Solo manualmente (tap sulla freccia) @@ -1317,7 +1317,7 @@ Avvia automaticamente il viaggio e invia la localizzazione dopo l\'avvio dell\'applicazione Avvia automaticamente il viaggio ID tracciamento - Clicca per visualizzare l\'ID della tracciabilità. + Clicca per visualizzare l\'ID della tracciabilità Token della sessione: %1$s In attesa di autorizzazione… Localizzazioni inviate %1$d (nel buffer %2$d) @@ -1382,7 +1382,7 @@ Centra nello schermo Imposta come obiettivo mobile Nome registrato - Nick + Nick name Utente @@ -1440,7 +1440,7 @@ Scaricate %1$s tracce OsMo. Login a OsMo fallito Accedere su invito - " - Tutti i gruppi creati sono pubblici! Se volete rimanere anonimi connettete i dispositivi direttamente tramite gli id di tracciamento.\n - I gruppi privati sono limitati a 8 persone.\n - Nel caso di inattività o di attività di una sola persona per due settimane, il gruppo sarà cancellato.\n - È possibile limitare l\'accesso al gruppo, tipo solo su invito, per amministrare il gruppo devi andare al pannello di amministrazione.\n - Se avete bisogno di creare un gruppo ad altre condizioni per favore visitate http://osmo.mobi" + " - Quando crei un gruppo, per favore, dagli un nome e una descrizione\n - Dall\'app possono essere creati solo gruppi di tipo Semplice, più informazioni su sito https://osmo.mobi/g/new\n - Attraverso il sito è possibile gestire il gruppo e aggiungere tracce e punti disponibili per tutti\n - Non auspichiamo l\'utilizzo dei gruppi con un solo membro, se questo non è il gruppo dei PDI\n - I gruppi privati sono limitati a 8 persone\n - Termini e condizioni dell\'utilizzo sono sempre disponibili su OsMo.mobi\n - Se avete altre necessità particolari - per favore contattate il supporto osmo.mobi@gmail.com " Per favore leggere prima di creare un gruppo! Errore di autorizzazione OsMo: %1$s.\nPotrebbe essere un disservizio temporaneo oppure che la registrazione è scaduta.\nVuoi procedere con una nuova registrazione? Nascondi gli edifici @@ -2039,7 +2039,7 @@ Nascondi gli oggetti proposti Altro - Novità nella versione + Novità Modifiche OSM condivise tramite OsmAnd Basso sassone Macedone @@ -2156,7 +2156,7 @@ Salva le modifiche Mostra i poligoni Cerca un parcheggio - " OsmAnd Maps & Navigation - crea percorsi e trova luoghi sulla mappa senza connessione a Internet. Scarica la mappa di una nazione prima di partire per un viaggio per trovare luoghi e percorsi in un luogo sconosciuto. Opzioni base: • Mappe dettagliate di 200 nazioni • Navigatore offline con istruzioni vocali • Ricerca degli indirizzi in modalità offline • Informazioni sui luoghi della mappa: punti d\'interesse, bar, parcheggi, negozi • Aggiunta di luoghi ai preferiti • Navigazione per guida, ciclisti e pedoni Opzioni aggiuntive: • Possibilità di vedere e registrare tracciati GPX • Descrizioni Wikipedia dei PDI • Aggiunta di note audio, video e foto alla mappa • Modalità notturna e diurna della mappa per una guida più confortevole • Informazioni sui percorsi e le fermate dei trasporti pubblici • Piste ciclabili e percorsi pedonali • Sentieri turistici in tutto il mondo • Mappe online da numerose fonti • Informazioni sulla qualità del fondo stradale e sull\'illuminazione • Aggiunta, modifica e cancellazione dei PDI (per gli utenti di OpenStreetMap.org) • OsMo - monitoraggio in tempo reale degli altri dispositivi Usa un navigatore affidabile nella tua nazione - che sia Francia, Germania, Messico, Regno Unito, Spagna, Olanda, USA, Russia, Brasile qualunque altro stato. Plugin: • Curve di livello e ombreggiatura del terreno https://goo.gl/7mojP8 Visualizzazione delle curve di livello e dell\'ombreggiatura del terreno in aggiunta alla mappa base OsmAnd. • Mappe sci https://goo.gl/pX6DxJ Informazioni sulle piste da sci, sui percorsi da sci di fondo, cross-country, funivie e skilift. • Mappe nautiche https://goo.gl/0hEdxm Stile speciale della mappa per mostrare i simboli per la navigazione nautica marine a lungo o breve raggio. • Posizione di parcheggio https://goo.gl/6JxQXF Ti aiuta a segnare la posizione del tuo veicolo parcheggiato e vedere quanto tempo manca se il parcheggio ha limiti di tempo. Resta sintonizzato! Twitter: https://twitter.com/osmandapp Facebook: https://www.facebook.com/osmandapp Sito: http://osmand.net Se hai bisogno di assistenza con l\'app OsmAnd, contatta il nostro team di supporto: support@osmand.net. " + " OsmAnd Maps & Navigation - trova luoghi sulla mappa e crea percorsi senza connessione a Internet. Scarica la mappa di una nazione prima di partire per un viaggio per trovare luoghi e percorsi in un luogo sconosciuto. Opzioni base: • Mappe dettagliate di 200 nazioni • Navigatore offline con istruzioni vocali • Ricerca degli indirizzi in modalità offline • Informazioni sui luoghi della mappa: punti d\'interesse, bar, parcheggi, negozi • Aggiunta di luoghi ai preferiti • Navigazione per guida, ciclisti e pedoni Opzioni aggiuntive: • Possibilità di vedere e registrare tracciati GPX • Descrizioni Wikipedia dei PDI • Aggiunta di note audio, video e foto alla mappa • Modalità notturna e diurna della mappa per una guida più confortevole • Informazioni sui percorsi e le fermate dei trasporti pubblici • Piste ciclabili e percorsi pedonali • Sentieri turistici in tutto il mondo • Mappe online da numerose fonti • Informazioni sulla qualità del fondo stradale e sull\'illuminazione • Aggiunta, modifica e cancellazione dei PDI (per gli utenti di OpenStreetMap.org) • OsMo - monitoraggio in tempo reale degli altri dispositivi Usa un navigatore affidabile nella tua nazione - che sia Francia, Germania, Messico, Regno Unito, Spagna, Olanda, USA, Russia, Brasile qualunque altro stato. Plugin: • Curve di livello e ombreggiatura del terreno https://goo.gl/7mojP8 Visualizzazione delle curve di livello e dell\'ombreggiatura del terreno in aggiunta alla mappa base OsmAnd. • Mappe sci https://goo.gl/pX6DxJ Informazioni sulle piste da sci, sui percorsi da sci di fondo, cross-country, funivie e skilift. • Mappe nautiche https://goo.gl/0hEdxm Stile speciale della mappa per mostrare i simboli per la navigazione nautica marine a lungo o breve raggio. • Posizione di parcheggio https://goo.gl/6JxQXF Ti aiuta a segnare la posizione del tuo veicolo parcheggiato e vedere quanto tempo manca se il parcheggio ha limiti di tempo. Resta sintonizzato! Twitter: https://twitter.com/osmandapp Facebook: https://www.facebook.com/osmandapp Sito: http://osmand.net Se hai bisogno di assistenza con l\'app OsmAnd, contatta il nostro team di supporto: support@osmand.net. " Mostra i percorsi MTB Scegli i marcatori della mappa Inverti l\'ordine @@ -2213,10 +2213,17 @@ Termina la navigazione Evita la strada Memoria condivisa - La carella di memorizzazione selezionata è in sola lettura. La cartella di memorizzazione sarà temporaneamente cambiata nella memoria interna. Per favore scegliere una cartella di destinazione valida. + La cartella di memorizzazione selezionata è in sola lettura. La cartella di memorizzazione sarà temporaneamente cambiata nella memoria interna. Per favore scegliere una cartella di destinazione valida. Rapporto Ora l\'applicazione ha i permessi per scrivere sulla memoria esterna. È necessario riavviare l\'applicazione. Rapporto completo Nome utente e password OpenStreetMap Il nome del file contiene caratteri non ammessi - +Aggiungi i marcatori della mappa dalla mappa + Nessun punto intermedio trovato + " • OSM Live. Sostiene i contributori della mappa e gli sviluppatori e si hanno gli aggiornamenti orari della mappa.\n\n • Marcatori mappa. Un nuovo modo per selezionare facilmente i luoghi sulla mappa.\n\n • Mappe OSM più dettagliate con scudetti specifici per ogni nazione dei nomi delle strade e molte nuove caratteristiche. +\n\n • Aspetto e gestione migliorati della preparazione del percorso. +\n\n • Molti miglioramenti nel menu contestuale della mappa e nella ricerca contestuale degli indirizzi.\n\n e altro… " + Frazionatore delle registrazioni + Usa il frazionamento delle registrazioni + diff --git a/OsmAnd/res/values-ja/phrases.xml b/OsmAnd/res/values-ja/phrases.xml index 43e5600839..0945e4be73 100644 --- a/OsmAnd/res/values-ja/phrases.xml +++ b/OsmAnd/res/values-ja/phrases.xml @@ -16,7 +16,7 @@ パブ・居酒屋(Pub) サウナ(Sauna) 学校(School) - 雑貨店(General store) + 雑貨店(General store) タクシー乗り場(Taxi) テーマパーク(Theme park) 大学(University) diff --git a/OsmAnd/res/values-ja/strings.xml b/OsmAnd/res/values-ja/strings.xml index db9e860dc6..0ee2378de3 100644 --- a/OsmAnd/res/values-ja/strings.xml +++ b/OsmAnd/res/values-ja/strings.xml @@ -297,7 +297,7 @@ MB)をダウンロードしますか? 位置プロバイダ バックグラウンドサービスを有効化して 長期間位置を追跡します OsmAndをバックグラウンドで実行 - バックグラウンドナビゲーション機能を有効にするには、位置取得機能(GPS等)をオンにする必要があります。 + バックグラウンドナビゲーション機能を有効にするには、位置取得機能(現在地、GPS、位置情報サービス等)をオンにする必要があります。 ルート計算方法、ナビゲーションに関する設定をします ナビゲーション設定 フィルタを非表示 @@ -524,7 +524,7 @@ POIの更新は利用できません マップ参照 自動車 自転車 -歩行者 +徒歩 中央 選択した形式で緯度 & 経度を入力 @@ -735,7 +735,7 @@ POIの更新は利用できません OSMの修正 その他のアクション - 陰影起伏層 + 陰影起伏図表示レイヤー GPS情報 到着時間 選択済 @@ -746,7 +746,7 @@ POIの更新は利用できません 高速道路を優先します なし - 陰影起伏 + 陰影起伏図 等高線 @@ -1099,7 +1099,7 @@ POIの更新は利用できません 写真撮影時に撮影音を使用 フォーカスを無限遠(∞)にセット マクロ(近距離)フォーカスモード - "このプラグインは、等高線のオーバーレイと陰影起伏層(補助)の両方がOsmAndの標準マップ上に表示出来るように用意されています。\nこの機能は地形の構造を知る必要のある、アスリート、ハイカー、登山者、そしてその他の多くの人々の助けになるでしょう。 + "このプラグインは、等高線のオーバーレイ表示と陰影起伏図(浮き彫り表示)の両方がOsmAndの標準マップ上に表示出来るように用意されています。\nこの機能は地形の構造を知る必要のある、アスリート、ハイカー、登山者、そしてその他の多くの人々の助けになるでしょう。 \n\nこのグローバルデータ(北緯70°から南緯70°の間)はSRTM(スペースシャトル立体地形データ)とASTER(資源探査用将来型センサ)、NASAの地球観測システムである、テラ上のオンボードイメージング機器をベースにしたものです。 ASTERはNASAと日本の経済産業省(METI)、そして宇宙システム開発利用推進機構(J-spacesystems)の共同作業によるものです。 " メモを取る地点が指定されていません。メモをとるためには\'ロケーションメニュー\'から任意の項目を呼び出してください。 音声メモ @@ -1107,7 +1107,7 @@ POIの更新は利用できません 音声/ビデオメモ パート 等高線 - "このプラグインは、等高線のオーバーレイと陰影起伏層(補助)の両方がOsmAndの標準マップ上に表示出来るように用意されています。\nこの機能は地形の構造を知る必要のある、アスリート、ハイカー、登山者、そしてその他の多くの人々の助けになるでしょう。 + "このプラグインは、等高線のオーバーレイ表示と陰影起伏図(浮き彫り表示)の両方がOsmAndの標準マップ上に表示出来るように用意されています。\nこの機能は地形の構造を知る必要のある、アスリート、ハイカー、登山者、そしてその他の多くの人々の助けになるでしょう。 \n\nこのグローバルデータ(北緯70°から南緯70°の間)はSRTM(スペースシャトル立体地形データ)とASTER(資源探査用将来型センサ)、NASAの地球観測システムである、テラ上のオンボードイメージング機器をベースにしたものです。 ASTERはNASAと日本の経済産業省(METI)、そして宇宙システム開発利用推進機構(J-spacesystems)の共同作業によるものです。 " 等高線 他のマップ @@ -1150,7 +1150,7 @@ POIの更新は利用できません グローバル設定 アプリケーション全般の設定 ダウンロードするのに十分な空き領域がありません。%1$sMB(空き容量:%2$s) - {0}個のダウンロード/必要な容量{1}MB/現在の空き容量{2}MB + {0}個のファイルをダウンロード/必要な容量{1}MB/現在の空き容量{2}MB 透明なテーマ ネイティブライブラリは、このデバイスでサポートされていません。 ネイティブライブラリを初期化しています… @@ -1290,7 +1290,7 @@ POIの更新は利用できません マップ上の土地の特徴を透明にする - "このプラグインを使用すると、標準のOpenStreetMapタイル(Mapnik風)から衛星画像、天気図、気候マップ、地質図、陰影起伏層など、目的に応じた様々な(タイル又はラスタと呼ばれる)オンラインマップにアクセスし、レイヤーに反映することができます。\n\nこれらのマップのいずれも(OsmAnd標準オフラインマップの様に)ベースマップとして使用でき、オーバーレイマップ、アンダーレイマップとしてもOsmAndマップ画面に表示させることが出来ます。アンダーレイマップを見やすくしたい時は、OsmAndベクターマップの特定の要素を必要に応じて\'マップ設定\'メニューから簡単に非表示にすることができます。\n\nタイルマップはオンライン経由で直接取得することが可能です、また様々なサードパーティ製マップ作成ツールで作成したSQLiteデータベースをオフラインで使用するために調整することができます。(手動でOsmAndのデータフォルダにコピーする必要があります) " + "このプラグインを使用すると、標準のOpenStreetMapタイル(Mapnik風)から衛星画像、天気図、気候マップ、地質図、陰影起伏図など、目的に応じた様々な(タイル又はラスタと呼ばれる)オンラインマップにアクセスし、レイヤーに反映することができます。\n\nこれらのマップのいずれも(OsmAnd標準オフラインマップの様に)ベースマップとして使用でき、オーバーレイマップ、アンダーレイマップとしてもOsmAndマップ画面に表示させることが出来ます。アンダーレイマップを見やすくしたい時は、OsmAndベクターマップの特定の要素を必要に応じて\'マップ設定\'メニューから簡単に非表示にすることができます。\n\nタイルマップはオンライン経由で直接取得することが可能です、また様々なサードパーティ製マップ作成ツールで作成したSQLiteデータベースをオフラインで使用するために調整することができます。(手動でOsmAndのデータフォルダにコピーする必要があります) " このプラグイン経由でPOIオブジェクトの作成や変更、OSMのバグの開示やコメント、記録したGPXファイルを使用しOSMの改善に貢献することが出来ます。OSM(OpenStreetMap)はコミュニティ主導で行われる、世界規模のパブリックドメイン(特定の知的財産権に影響されない)マップ作成のプロジェクトです。詳しくはhttp://openstreetmap.orgを参照してください。アプリに必要な情報を入力することでOsmAndからもいくつかの作業を直接行うことができます。積極的な参加を歓迎いたします。 @@ -1378,7 +1378,9 @@ POIの更新は利用できません OsMoの認証エラーが発生しました:%1$s\nサーバーが一時的にダウンしているか、あなたの登録情報が失効している可能性があります。\n新しく登録しますか? 招待枠での認証 停止 - " - 作成した全てのグループは公開されます、匿名を希望する場合はトラッカーIDを経由して直接デバイスを接続します。\n - プライベートグループは8人に制限されています。\n - 非アクティブであるか2週間に1人しかアクティブされなかった場合グループは削除されます。\n - あなたが招待した人のみ入れるようグループの入り口を制限することができますが、グループを制御するために管理コンソールに移動する必要があります。\n - グループを作成する際、他の条件を必要としたいので 以下のURLまでご連絡下さい。http://osmo.mobi" + " - グループを作成する際、名前とグループに関する説明を入力してください。\n - アプリから作成した際は簡易タイプでグループが作成されます。詳細はウェブサイトで https://osmo.mobi/g/new +\n - グループはウェブサイトを通じて場所、経路、地点の全てを管理できます。 +\n - POIグループでない場合は、グループ内1人だけの管理は推奨しません。\n - プライベートグループは8人に制限されています。\n - 詳細な使用条件は以下ウェブサイトにて https://OsMo.mobi\n - 特殊な使用条件の場合はサポートまでお問い合わせください: osmo.mobi@gmail.com " グループを作成する前に必ずお読み下さい! 新しいセグメントの開始 OsMoログインの失敗 @@ -1398,7 +1400,7 @@ POIの更新は利用できません ナビゲーション中にズームボタンを表示します ズームボタンを表示 お気に入りのグループとして保存 - 経由地点を選択 + 目的地を選択 施設の名称 ロード中 %1$s … 現在時刻 @@ -1482,7 +1484,7 @@ POIの更新は利用できません グループ名 デバイスとリンク グループとリンク - 接続する + 参加 グループの作成 OsMoのサーバー操作に失敗しました OpenStreetMapモニタリング @@ -1492,11 +1494,11 @@ POIの更新は利用できません 分前 秒前 デバイスと接続されました - OsMoグループ/デバイス - アプリケーション起動後に自動的にトラッカーセッションを開始し場所を送信します - 自動的にトラッカーセッションを開始 - パーソナルトラッカーID - クリックでトラッカーIDを表示したり共有したりします。トラッカーIDにて接続されたデバイスを使用すると、このデバイスのすべての移動を監視することができます!解除するには[再作成]オプションを選択してください。 + OsMoグループ + アプリケーション起動後に自動的に旅行中の場所を送信します + 自動的に旅行を開始 + トラッカーID + クリックでトラッカーIDを表示 セッショントークン: %1$s 認証を待っています… "位置の送信 %1$d (バッファ内 %2$d) " @@ -1515,8 +1517,8 @@ POIの更新は利用できません ナビゲーション指示を繰り返す間隔を設定します 目的地周辺でのアナウンスタイミング 目的地周辺でのアナウンスをするタイミングを設定します - "このプラグインはOsMoと呼ばれる高度なライブモニタリング機能を提供します、http://osmo.mobiを参照して下さい。\n\n参加しているグループ全てのデバイス経路をリアルタイムで追跡することが出来るので、互いにコミュニケーションを取ることができます。期間を限定した追跡、または恒久的な追跡のためにさまざまなオプションが付属しています。\n\n匿名のグループは簡単に作成できますが、指定された数日間いくつかの機能が制限されており、その場合遠隔操作は出来ずグループ管理者は存在しません。完全な機能のグループはウェブサイト上で別に作成する必要があり、登録ユーザーのみがそれらにアクセスすることができます。 " - OsMo(OSMモニタリング) + "このプラグインはOpenStreetMapモニタリング機能の一部を提供します。 https://osmo.mobi を参照して下さい。\n\nあなたはグループに参加している全てのデバイスをリアルタイムで追跡することが可能です。あなたが属しているグループのアップロードされた地点や経路を見ることも出来ます。\n\nあなたが OsMo.mobi のウェブサイト上で規則に従い作成したグループは、数ヶ月削除されることはありません。 " + OpenStreetMapモニタリング 位置を常に中央表示 音声関連設定 その他の設定 @@ -1625,7 +1627,7 @@ POIの更新は利用できません マップの閲覧 自転車 - 歩行者 + 徒歩 "このプラグインはマップ画面のGPXログウィジェットをタッチして経路の記録と保存が出来る機能を有効化します、またログとして自動的にナビゲーションルートをGPXファイルに記録することもできます。\n\n記録された経路は、友人と共有することができ、またOSM発展のためにも使用されます。アスリートなら記録した経路をトレーニングモニターとして利用することが出来ます。ラップタイムや平均速度等いくつかの基本的な経路分析ならOsmAndから直接行うことができ、記録した経路を後で特別なサードパーティ製解析ツールで分析することも出来ます。 " 旅程記録 時間 @@ -1683,10 +1685,10 @@ POIの更新は利用できません 左パネル 表示に関する設定 マップ設定 - 付近に + 検索範囲 デバイスが見つかりません - OsMoサービスが有効ではありません:↵\n- 接続を確認して下さい;↵\n- 設定を確認して下さい;↵\n- 私達のTwitterをご参照下さい: https://twitter.com/OsMomobi - 以下は匿名ユーザーでは使用できません:↵\n- グループ作成;↵\n- サーバを利用してのグループやデバイスの同期;↵\n- 専用の場所でのグループやデバイスの管理. + OsMoサーバーに接続できません:↵\n- インターネット接続を確認して下さい;↵\n- 設定を確認して下さい;↵\n- 私達のTwitterをご参照下さい: https://twitter.com/OsMomobi + 以下は匿名ユーザーでは使用できません:↵\n- グループ作成;↵\n- サーバを利用してのグループやデバイスの同期;↵\n- ウェブサイト上の個別ダッシュボードでのグループやデバイスの管理. 匿名ユーザー %1$sとしてログインしました ホーム画面 @@ -1737,7 +1739,7 @@ POIの更新は利用できません 更新 ローカル ダウンロード出来ません、インターネット接続を確認してください。 - 何もしない + 維持 すべてのファイルを最新状態に OpenGLレンダリングを使用 ハードウェアのOpenGLレンダリングを使用します(デバイスによっては動作しません) @@ -1845,7 +1847,7 @@ POIの更新は利用できません ハイコントラスト道路 番地を非表示 OsmAndとそのデータファイルを新しい保存先にコピーしますか? - 指定したディレクトリ内にマップを作成できませんでした + 指定したディレクトリ内にマップを作成(あるいは書き込みが)できませんでした ファイルのコピーに失敗しました 外部ストレージ マルチユーザーストレージ @@ -1856,7 +1858,7 @@ POIの更新は利用できません コピー OSMの編集を削除 無効 - 現在地の共有 + 現在地の送信 ログオフ 国境越えを避ける @@ -1916,7 +1918,7 @@ POIの更新は利用できません 変更を適用するには手動でアプリケーションを再起動する必要があります。 互換性のない古いWikipediaデータがあります。アーカイブ化しますか? Wikipediaの追加データ(%1$s MB)をダウンロードしますか? - 位置情報サービス(GPS)がオフになっています。オンにしますか? + 位置取得機能(現在地、GPS、位置情報サービス等)がオフになっています。オンにしますか? スタンドアロン動作時のログ記録を停止 タスクリストからアプリが停止された場合、GPX記録を一時停止します(OsmAndバックグラウンド動作表示が、Androidの通知エリアに表示されなくなります) デフォルト (13) @@ -1989,13 +1991,13 @@ POIの更新は利用できません 広域マップ 世界地図 - 陰影起伏層無効 + 陰影起伏図レイヤー表示無効 等高線無効 新規追加 カテゴリを選択 移動速度の表示形式を設定します 速度表示形式 - nm + nmi 海里 キロメートル毎時(km/h) マイル毎時(mph・mi/h) @@ -2003,7 +2005,7 @@ POIの更新は利用できません キロメートル毎分(km/min) マイル毎分(mi/min) 海里毎時(ノット) - nmh + nm/h min/m min/km m/s @@ -2038,7 +2040,7 @@ POIの更新は利用できません QRコード %1$sのマップはダウンロード済みです。対応した地点を参照することでマップを使用できます。 マップに移動します - "正しいPOIの種類を指定するか、そうでなければ省略してください。 " + 正しいPOIの種類を指定するか、そうでなければ省略してください メニューボタンでメニューではなくダッシュボードを開きます マップ画面から開く OFFの場合、起動時マップのみ表示します @@ -2176,4 +2178,77 @@ POIの更新は利用できません マップマーカーにすべての地点を追加しますか? マップマーカーに追加 マップマーカーを選択 + マップ画面でマップマーカーを追加してください + 経由地点が見つかりませんでした + 情報提供への謝礼を示すためにあなたの情報を必要としています + 逆順にする + マップマーカー機能を有効化します + アクティブマーカーをすべて削除しますか? + マップマーカーの履歴を消去しますか? + アクティブマーカー + マップマーカー + マップマーカー + ポリゴンによる描画をオフにすることを推奨します。 + MTB用ルートを表示 + ポリゴンを表示 + 駐車場を探す + 通行止め + 分割記録 + 分割記録を使用 + ストレージの最大記録サイズを超えた記録ファイル(動画等)を分割して書き込みます + 分割するファイルサイズ + 全ての記録ファイルが指定したサイズ以上になることはありません + ストレージ容量 + 全ての記録ファイルが使用できる空き容量 + ライブ更新 + 利用可能なマップ + 音声案内を選択 + 使用したい言語の音声案内を選択しダウンロードします + ナビゲーション中に避けたい道路を選択します + 音声 + 指定されたデータ保存場所にアクセスする権限がありません。 + カメラ機能を使用する権限がありません。 + マイク機能を使用する権限がありません。 + 距離: + 時間: + 乗馬用ルート + 付近 + 非表示 + 最低画質 + 最高画質 + ビデオ出力時の画質 + ビデオの出力画質を選択します + 音声出力形式 + 音声出力形式を選択します + 音声ビットレート + 音声のビットレートを選択します + 住所を検索 + " OsmAnd Maps & Navigation - インターネットに接続することなく目的の場所を探したりルートを検索することが出来ます。なじみのない場所やルートを検索出来るように旅行の前に、その地域の地図をダウンロードしてください。基本的な機能:・200カ国の詳細なマップ・オフラインでの音声ナビゲーション・オフラインでの住所検索・地図上の場所についての情報、観光、喫茶店、駐車場、店舗・お気に入りの場所の追加・自動車、自転車、徒歩移動ごとのナビゲーション設定・GPX経路を表示、記録機能・POIに関するWikipedia情報利用・マップに追加できる音声やビデオメモ機能・運転時に分かりやすい昼と夜のマップモード・公共交通機関のルートや停留所・自転車道や歩道小道・世界中の観光向けトレイルコース・様々なオンラインマップにも対応・道路の舗装状況や街路照明の情報・POIの追加、編集、削除(OpenStreetMap.orgユーザー向け)・OSM - 他のデバイスのライブモニタリング機能はその国に通じた信頼性の高いナビゲーターを得るのと同等 - フランス、ドイツ、メキシコ、イギリス、スペイン、オランダ、アメリカ、ロシア、ブラジルやその他の地域。プラグイン:・等高線 https://goo.gl/7mojP8 既存マップに等高線や地形の陰影表示を追加で描写可能。・スキーマップ https://goo.gl/pX6DxJ スキーゲレンデ、クロスカントリースキーコース、ロープウェイやリフトの情報。・航海マップ https://goo.gl/0hEdxm 沿岸や航海時のナビゲーションを補助する特殊スタイルマップ。・駐車位置 https://goo.gl/6JxQXF 車両の駐車位置や駐車料金、残り駐車時間などの表示。等々乞うご期待!Twitter: https://twitter.com/osmandapp Facebook: https://www.facebook.com/osmandapp サイト: http://osmand.net OsmAndアプリについてのヘルプが必要な場合はサポートチームにご連絡ください: support@osmand.net. " + OsmAndの最初のステップ + 使用方法の簡易説明 + 更新 + Wi-Fi経由でのみダウンロード + ライブ更新 + 今すぐ更新 + SDカードにアクセスする権限がありません + 最後の更新: %s + 更新時間 + 更新ファイルのサイズ + 最後のマップ更新: %s + 毎時間 + 毎日 + 毎週 + + + 月と国を選択 + ファイル名に使用できない文字が含まれています +受信者数 + OSM Live購読 + 購読 + 購読設定 + 最初にOSM Live購読の手続きをしてください + + この購読により世界中のマップを時間毎更新することが可能です。購読収入の大半はOSMコミュニティに還元され、OSMに貢献した各ユーザーにも支払われます。OsmAndとOSMをサポートする方法として現状最適な方法であると思われます。 + + 設定しない diff --git a/OsmAnd/res/values-ko/phrases.xml b/OsmAnd/res/values-ko/phrases.xml index 8c5dc13ada..68d93ecac9 100644 --- a/OsmAnd/res/values-ko/phrases.xml +++ b/OsmAnd/res/values-ko/phrases.xml @@ -47,7 +47,7 @@ 가구점 정원 센터 LPG 주유소 - 일반 상점 + 일반 상점 선물 가게 글라지어리 하드웨어 스토어 diff --git a/OsmAnd/res/values-ml/phrases.xml b/OsmAnd/res/values-ml/phrases.xml index c48b824be3..9232075c52 100644 --- a/OsmAnd/res/values-ml/phrases.xml +++ b/OsmAnd/res/values-ml/phrases.xml @@ -99,7 +99,7 @@ ഗാര്‍ഡന്‍ സെന്റര്‍ "ഗാര്‍ഡന്‍ ഫര്‍ണിച്ചര്‍ കട " "ഗ്യാസ് ഏജന്സി " - "പലവ്യഞ്ജന കട " + "പലവ്യഞ്ജന കട " "ഗിഫ്ട് കട " "ഗ്ലേസിയെരി " diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml index c92d19443c..5153345015 100644 --- a/OsmAnd/res/values-nb/strings.xml +++ b/OsmAnd/res/values-nb/strings.xml @@ -704,7 +704,7 @@ Beregn OsmAnd-rute for første og siste rutesegment Unik enhets-id Still inn overvåking og personlig overvåkingskanal - OsMo (OSM-overvåking) + OpenStreetMap-overvåking OsMo Statuslinje Foretrukket språk for påskrifter på kartet (hvis det ikke er tilgjengelig skiftes til engelsk eller til lokale navn) @@ -720,7 +720,7 @@ Ruteplanleggingsinnstillinger Skjul grenser Fartsgrense - Gjennomsiktig layout + Gjennomsiktige moduler Skjul polygoner Programtillegg Programtillegg aktiverer avanserte innstillinger og flere funksjoner @@ -1303,7 +1303,7 @@ Vis detaljer Slett OSM-redigering Deaktivert - Del min posisjon + Send posisjonen Piemontesisk Bengali Tagalog @@ -1524,4 +1524,16 @@ Bytt om på startpunkt og reisemål Topplinje Beregn rute på nytt + Legg til kartmarkører via kart + Ingen rutepunkter funnet + Flytt opp + Flytt ned + Avslutt navigering + Unngå vei + Delt minne + Fullstendig rapport + Moduler + Det anbefales å slå av opptegning av polygoner. + Foto %1$s %2$s + Velg måned og land diff --git a/OsmAnd/res/values-nl/phrases.xml b/OsmAnd/res/values-nl/phrases.xml index d48e190933..9099e6e46b 100644 --- a/OsmAnd/res/values-nl/phrases.xml +++ b/OsmAnd/res/values-nl/phrases.xml @@ -53,7 +53,7 @@ Hengelsportzaak Lijstenmakerij Meubelwinkel - Winkel in diverse goederen + Winkel in diverse goederen Kruidenwinkel Hi-Fi-winkel Huishoudzaak diff --git a/OsmAnd/res/values-nl/strings.xml b/OsmAnd/res/values-nl/strings.xml index fa71c1522a..edcee1b7ae 100644 --- a/OsmAnd/res/values-nl/strings.xml +++ b/OsmAnd/res/values-nl/strings.xml @@ -2244,4 +2244,6 @@ OpenStreetMap loginnaam and wachtwoord Verslag Bestandsnaam bevat verkeerd teken - +Markeervlaggetjes kun je via de kaart toevoegen + Geen punten gevonden + diff --git a/OsmAnd/res/values-pl/phrases.xml b/OsmAnd/res/values-pl/phrases.xml index 6061c1bef9..d75d3e264f 100644 --- a/OsmAnd/res/values-pl/phrases.xml +++ b/OsmAnd/res/values-pl/phrases.xml @@ -47,7 +47,7 @@ Sklep meblowy Centrum ogrodnicze Magazyn gazu płynnego - Sklep wielobranżowy + Sklep wielobranżowy Sklep z pamiątkami Szklarz Sklep z narzędziami diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index 0f0521f308..e36f301119 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -67,7 +67,7 @@ Inne Niepotrzebne Podstawowa mapa świata jest niezainstalowana. Pobierz plik World_basemap_x.obf. - Brak danych (\'offline\') w urządzeniu na karcie SD. Musisz je najpierw pobrać, by używać map offline. + Brak danych (\'offline\') w urządzeniu na karcie SD. Proszę zwrócić uwagę pobierając ją, aby używać map w trybie offline. \n\nProszę nacisnąć i przytrzymać, aby wyświetlić opcje @@ -765,7 +765,7 @@ Nie ma wystarczająco miejsca, aby pobrać %1$s MB (dostępne miejsce: %2$s). - Czy pobrać {0} plik(-i/-ów)? To potrzebuje {1} MB na stałe? Obecnie posiadasz dostępne {2} MB. + Czy pobrać {0} plik(-i/-ów)? To potrzebuje {1} MB na stałe. Obecnie posiadasz dostępne {2} MB. Znaleziono kilka kategorii POI odpowiadających zapytaniu: Nazwa Kategoria @@ -855,7 +855,7 @@ Prędkość Cel Wysokość - Czas do osiągnięcia celu + Czas do celu Następny zakręt Następny zakręt (mały) Drugi zakręt @@ -954,7 +954,7 @@ Usługa w tle jest nadal aktywna. czy również ją zatrzymać? Zamknij zestaw zmian - Skaner kodów kreskowych ZXing nie jest zainstalowany. Poszukać w Market? + Skaner kodów kreskowych ZXing nie jest zainstalowany. Poszukać w Google Play? niekompletne Mapa zwykła Ukrywanie granic @@ -1011,7 +1011,7 @@ Pomiar odległości - Wtyczka Dropbox umożliwia synchronizację ścieżek i notatek audio/wideo z twoim kontem Dropbox. + Wtyczka Dropbox umożliwia Tobie synchronizację ścieżek i notatek audio/wideo z twoim kontem Dropbox. Wtyczka Dropbox Zmień kolejność @@ -1253,7 +1253,7 @@ Ustawienia trasy Informacje o trasie Wyznacz trasę offline w OsmAnd - Dodaj jako cel podróży + Dodaj jako ostatni cel podróży Wykorzystać wyświetlaną trasę do nawigacji? Wyznacz segment trasy OsmAnd offline @@ -1311,7 +1311,7 @@ Światowa mapa tras narciarskich Wstrzymuje odtwarzanie muzyki podczas komunikatów Przerywanie muzyki - Zawsze wyśrodkowane położenie + Zawsze wyśrodkowana pozycja Głos Różne Lokalizacja @@ -1320,8 +1320,7 @@ Nieprawidłowy format: %s Unikatowy identyfikator urządzenia Skonfiguruj monitorowanie i ustaw osobisty kanał monitorowania - "Wtyczka zapewnia funkcjonalność usługi OsMo - zaawansowanego monitorowania na żywo. Więcej szczegółów na http://osmo.mobi. -\n\nZa jej pomocą można śledzić inne urządzenia lub samemu być śledzonym w obrębie grupy w czasie rzeczywistym oraz komunikować się ze sobą. Dostarcza różne opcje dla śledzenia sesji i śledzenia stałego.\n\nAnonimowe grupy tworzone są na określoną liczbę dni i limitowane są określonymi opcjami, np. brak zdalnego sterowania i brak administratora grupy. Natomiast w pełni funkcjonalne grupy mogą zostać utworzone na stronie, a dostęp do nich będą mieć tylko zarejestrowani użytkownicy. " + "Wtyczka ta częściowo zapewnia funkcjonalność monitoringu OpenStreetMap, zobacz https://osmo.mobi\n\nMożesz śledzić wszystkie urządzenia należące do grupy w czasie rzeczywistym. Można również zobaczyć punkt i trasy przesłane do grupy, do której należą.\n\nGrupa nie została usunięta po kilku miesiącach, wprowadza ją zgodnie z regułą tworzenie grup na stronie OsMo.mobi " Monitoring OpenStreetMap OsMo Tylko ręcznie (naciśnij strzałkę) @@ -1364,7 +1363,7 @@ Zmień właściwości użytkownika - Kolor wyświetlacza + Kolor wyświetlania Informacje Grupa OsMo W celu dołączenia do grupy %2$s, proszę określić identyfikator grupy (%1$s) lub kliknąć %3$s. @@ -1391,7 +1390,7 @@ Wysyłaj moją pozycję Szybki dostęp do OsMo - Zapisać punkty jako plik GPX czy zaimportować je do ulubionych? + Zapisać dane jako plik GPX czy zaimportować je do Ulubionych? Śledź Zarejestruj @@ -1415,7 +1414,7 @@ Moje trasy Ulubione - Miejsca + Moje Miejsca "Ślady podrzędne: %1$s " Punkty trasy: %1$s @@ -1457,7 +1456,7 @@ Wybierz aby wyświetlić Dołącz do grupy przez zaproszenie - " - Wszystkie utworzone grupy są publiczne! Jeśli chcesz być anonimowy, podłącz urządzenia bezpośrednio poprzez identyfikator Tracker id.\n - Prywatne grupy są ograniczone do 8 osób.\n - W przypadku bezczynności lub aktywności tylko 1 osoby przez okres 2 tygodni, grupa zostanie usunięta.\n - Można ograniczyć dostęp do grupy przez zapraszanie tylko wybranych osób, ale do zarządzania grupą potrzebujesz użyć konsoli administracyjnej.\n - Jeśli trzeba utworzyć grupę, ale z innymi warunkami, prosimy o kontakt http://osmo.mobi" + " - Tworząc grupę należy nadać mu nazwę i wypełnić opis\n - Z aplikacji są tworzone tylko grupy prostego typu, czytaj więcej na stronie https://osmo.mobi/g/new\n - W przypadku bezczynności lub aktywności tylko 1 osoby przez okres 2 tygodni, grupa zostanie usunięta.\n - Można ograniczyć dostęp do grupy przez zapraszanie tylko wybranych osób, ale do zarządzania grupą potrzebujesz użyć konsoli administracyjnej.\n - Jeśli trzeba utworzyć grupę, ale z innymi warunkami, prosimy o kontakt http://osmo.mobi " Proszę przeczytać przed założeniem grupy! Nie udało się zalogować do OsMo Pobrano %1$s punktów OsMo. @@ -1571,8 +1570,8 @@ Nazwa ulubionego punktu została zmieniona na %1$s, aby prawidłowo ułatwić zapisywanie do pliku ciągu z emotikonem. Drukuj trasę Nie odnaleziono urządzenia - Serwis OsMo jest niedostępny. Proszę sprawdzić:\n- połączenie internetowe,\n- ustawienia,\n- Twitter: https://twitter.com/OsMomobi - Anonimowy użytkownik nie może:\n- tworzyć grup,\n- synchronizować grup i urządzeń z serwerem,\n- zarządzać grupami i urządzeniami w gabinecie. + Nie można połączyć się z serwisem OsMo:\n- sprawdź połączenie internetowe,\n- sprawdź ustawienia,\n- sprawdź nasz Twitter: https://twitter.com/OsMomobi + Anonimowy użytkownik nie może:\n- tworzyć grup,\n- synchronizować grup i urządzeń z serwerem,\n- zarządzać grupami i urządzeniami osobistym pulpicie na stronie internetowej. Użytkownik anonimowy Zalogowano jako %1$s Trasy @@ -1858,8 +1857,8 @@ Błąd: {0} Położenia Wtyczki - Omijanie pociągów wahadłowych - Omijanie pociągów wahadłowych + Omijanie przejazdów kolejowych + Omijanie przejazdów kolejowych Zagrożenie Zależy nam na opinii na temat programu i jest dla nas ważne, aby ją poznać. Opcje kokpitu @@ -1907,14 +1906,14 @@ Definiuje jednostki pomiaru prędkości Pomiar prędkości Mile morskie - nm + węzły Kilometry na godzinę Mile na godzinę Metry na sekundę Minuty na kilometr Minuty na milę Mile morskie na godzinę (węzły) - węzłów + węzłów/godzinę min/m min/km m/s @@ -2096,8 +2095,8 @@ Wybierz znacznik mapy Inne znaczniki Za mało miejsca! To potrzebuje {3} MB tymczasowo i {1} MB na stałe. Obecnie posiadasz dostępne tylko {2} MB. - Czy pobrać {0} plik(-i/-ów)? To potrzebuje {3} MB tymczasowo i {1} MB na stałe? Obecnie posiadasz dostępne {2} MB. - Można przesłać swoje notatki OSM anonimowo ze swojego profilu OpenStreetMap.org. + Czy pobrać {0} plik(-i/-ów)? To potrzebuje {3} MB tymczasowo i {1} MB na stałe. Obecnie posiadasz dostępne {2} MB. + Można przesłać swoje notatki OSM anonimowo jeżeli użyjesz swojego profilu OpenStreetMap.org. Prześlij notatki OSM Wyślij anonimowo Pokaż górny pasek znaczników @@ -2129,7 +2128,7 @@ Przenieś pliki gdy wykorzystana przestrzeń przekracza rozmiar pamięci nośnika Długość każdego nagranego pliku nie będzie dłuższa niż określony przedział czasu Ilość miejsca, jaka może być zajmowana przez wszystkie nagrane pliki - " OsmAnd Mapy i Nawigacja - wyznaczaj trasy i znajduj lokalizacje na mapie bez połączenia z Internetem. Pobierz mapę danego kraju przed wyjazdem w podróż, aby znaleźć miejsca i trasy w nieznanym obszarze. Podstawowe opcje: • Szczegółowe mapy 200 krajów • Nawigacja Offline z komunikatami głosowymi • Szukaj adresy w trybie offline • Informacje o lokalizacji na mapie: interesujących miejsc, kawiarnii, parkingów, sklepów • Dodawanie lokalizacji do ulubionych • nawigacja samochodowa, rowerowa i piesza Dodatkowe opcje: • Możliwość wyświetlania i nagrywania tras GPX • Opis Wikipedii punktów POI • Dodawanie zdjęć, nagrań i wideo notatek do mapy • Dzień i nocny tryb mapy dla wygodniejszej jazdy • Informacje o trasach transportu publicznego i przystankach • Ścieżki rowerowe i chodniki • Szlaków turystyczne do podróżowania po całym świecie • Mapy online z wielu źródeł • Informacja o jakości nawierzchni dróg i stanie oświetlenia ulicznego • Dodawanie, edycja i usuwanie POI (dla użytkowników OpenStreetMap.org) • Osmo - live monitoring innych urządzeń Pobierz niezawodny nawigator w twoim kraju - czy to Francja, Niemcy, Meksyk, Wielka Brytania, Hiszpania, Holandia, USA, Rosja, Brazylia lub inne państwo. Wtyczki: • Mapy konturowe i z cieniowaniem terenu https://goo.gl/7mojP8 Dane linii konturowych i wizualizacji terenu dodane do podstawowej mapy OsmAnd. • Mapy narciarskie https://goo.gl/pX6DxJ Informacje na temat tras zjazdowych, biegowych narciarskich, kolei linowych i wyciągów narciarskich. • Żeglarskie mapy https://goo.gl/0hEdxm Specjalne style mapy do oglądania wodnych drogowskazów nawigacyjnych dla głównych i przybrzeżnych nawigacji morskich. • Pozycja parkowania https://goo.gl/6JxQXF Pomaga oznaczyć lokalizację zaparkowanego samochodu i zobaczyć informację na temat ograniczeń czasu parkowania. Bądź na bieżąco! Twitter: https://twitter.com/osmandapp Facebook: https://www.facebook.com/osmandapp Strona: http://osmand.net Jeśli potrzebujesz pomocy podczas używania OsmAnd, prosimy o kontakt z naszym zespołem wsparcia: support@osmand.net. " + " OsmAnd Mapy i Nawigacja - znajdowanie lokalizacji na mapie i obliczanie tras bez połączenia z Internetem. Pobierz mapę danego kraju przed wyjazdem w podróż, aby znaleźć miejsca i trasy w nieznanym obszarze. Podstawowe opcje: • Szczegółowe mapy 200 krajów • Nawigacja Offline z komunikatami głosowymi • Szukaj adresy w trybie offline • Informacje o lokalizacji na mapie: interesujących miejsc, kawiarnii, parkingów, sklepów • Dodawanie lokalizacji do ulubionych • nawigacja samochodowa, rowerowa i piesza Dodatkowe opcje: • Możliwość wyświetlania i nagrywania tras GPX • Opis Wikipedii punktów POI • Dodawanie zdjęć, nagrań i wideo notatek do mapy • Dzień i nocny tryb mapy dla wygodniejszej jazdy • Informacje o trasach transportu publicznego i przystankach • Ścieżki rowerowe i chodniki • Szlaków turystyczne do podróżowania po całym świecie • Mapy online z wielu źródeł • Informacja o jakości nawierzchni dróg i stanie oświetlenia ulicznego • Dodawanie, edycja i usuwanie POI (dla użytkowników OpenStreetMap.org) • Osmo - live monitoring innych urządzeń Pobierz niezawodny nawigator w twoim kraju - czy to Francja, Niemcy, Meksyk, Wielka Brytania, Hiszpania, Holandia, USA, Rosja, Brazylia lub inne państwo. Wtyczki: • Mapy konturowe i z cieniowaniem terenu https://goo.gl/7mojP8 Dane linii konturowych i wizualizacji terenu dodane do podstawowej mapy OsmAnd. • Mapy narciarskie https://goo.gl/pX6DxJ Informacje na temat tras zjazdowych, biegowych narciarskich, kolei linowych i wyciągów narciarskich. • Żeglarskie mapy https://goo.gl/0hEdxm Specjalne style mapy do oglądania wodnych drogowskazów nawigacyjnych dla głównych i przybrzeżnych nawigacji morskich. • Pozycja parkowania https://goo.gl/6JxQXF Pomaga oznaczyć lokalizację zaparkowanego samochodu i zobaczyć informację na temat ograniczeń czasu parkowania. Bądź na bieżąco! Twitter: https://twitter.com/osmandapp Facebook: https://www.facebook.com/osmandapp Strona: http://osmand.net Jeśli potrzebujesz pomocy podczas używania OsmAnd, prosimy o kontakt z naszym zespołem wsparcia: support@osmand.net. " Wybrany katalog przechowywania danych umożliwia tylko ich odczyt. Katalog przechowywania został tymczasowo umieszczony w pamięci wewnętrznej. Proszę wybrać prawidłowy katalog przechowywania danych. Pamięć współdzielona Zasubskrybuj @@ -2139,11 +2138,35 @@ Liczba odbiorców Raport Omiń drogę - Wyznacz ponownie trasę + Wyznacz trasę ponownie Nazwa użytkownika i hasło OpenStreetMap Ranking edytorów OSM Proszę wprowadzić prawidłowy adres e-mail Dziękujemy za zasubskrybowanie bieżących aktualizacji! Ustawienia subskrypcji Pasek przezroczystości - + Proszę dodać znacznik na mapie + Nie znaleziono punktów + " • OSM Live. Wspieraj współtwórców map i programistów i uzyskaj godzinowe aktualizacji mapy.\n\n  • Znaczniki mapy. Nowy sposób na szybki wybór miejsca na mapie.\n\n  • Bardziej szczegółowe mapy OSM z oznaczeniami numeracji dróg specyficznymi dla konkretnego kraju oraz wiele nowych funkcji map.\n\n  • Ulepszony wygląd i przygotowanie trasy.\n\n  • Wiele ulepszeń w menu kontekstowym mapy, takie jak kontekstowe odnośniki adresu.\n\n  i więcej… " + Podnieś + Opuść + Zakończ nawigację + Belka górna + Edycji %1$s, range %2$s, zmian łącznie %3$s + Subskrypcja OSM Live + Potrzebujemy go, aby zapewnić Tobie informacje o wkładzie + Nazwa Publiczna + Nie pokazuj mnie w raportach + Wspierane regiony + Koszt miesięczny + Miesięczna płatność + Aktywny + Nieaktywny + Proszę wprowadź nazwę publiczną + Część wpłat zostanie wysłana do użytkowników OSM, którzy prześlą zmiany na mapie w tym regionie + Należy najpierw zakupić subskrypcję OSM Live + + Ten abonament umożliwia cogodzinną aktualizację dla map z całego świata. Większa część dochodów powraca do społeczności OSM i jest wypłacana za każdy wkład OSM. W przypadku, kiedy lubisz OsmAnd i OSM i chce je wspierać, jest to doskonały sposób, aby to zrobić. + + Nazwa pliku zawiera niedozwolony znak + diff --git a/OsmAnd/res/values-pt-rBR/phrases.xml b/OsmAnd/res/values-pt-rBR/phrases.xml index be7fe8aef3..463620f202 100644 --- a/OsmAnd/res/values-pt-rBR/phrases.xml +++ b/OsmAnd/res/values-pt-rBR/phrases.xml @@ -87,7 +87,7 @@ Loja de móveis Centro de jardinagem Loja de gás líquido - Loja geral + Loja geral Loja de presentes Vidraçaria Loja de material de construção @@ -1948,7 +1948,7 @@ Objeto histórico Vigilância: sim - Com loja + Com loja Venda de bicicletas: sim Venda de bicicletas: não diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml index 6e7bdff750..00eb046a91 100644 --- a/OsmAnd/res/values-pt/strings.xml +++ b/OsmAnd/res/values-pt/strings.xml @@ -1,4 +1,5 @@ -Administrativo + +Administrativo Barreira Educação Emergência @@ -1393,10 +1394,10 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A minutos atras segundos atras aparelhos ligados - OsMo Grupos/Aparelhos + Grupos OsMo Para ligar o aparelho alvo %2$s, click no link %3$s ou especifique o id do tracker(%1$s) - Inicie automaticamente a sessão do tracker e envie localização após o início da aplicação - Inicie automaticamente a sessão do tracker + Ao iniciar a aplicação, automaticamente gravar e enviar as localizações da viagem + Inicie automaticamente a viagem Identificação pessoal do tracker Clique para partilhar a identificação do tracker Ao usar a identificação do tracker, aparelhos ligados podem ver todos os movimentos deste aparelho ! Para desligar seleccione a opção regenerar. @@ -1963,8 +1964,8 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Painel esquerdo Na proximidade de Aparelho não encontrado - Serviço Osmo não está disponível:\n- Verifique a ligação;\n- Verifique as configurações;\n- Verifique o nosso Twitter: https://twitter.com/OsMomobi - Um utilizador anónimo não pode:\n- Criar grupos;\n- Sincronizar grupos e dispositivos com o servidor;\n- Gerir grupos e dispositivos num escritório privado. + Não é possível estabelecer ligação ao Servidor Osmo:\n- Verifique a ligação à internet;\n- Verifique as configurações;\n- Verifique o nosso Twitter: https://twitter.com/OsMomobi + Um utilizador anónimo não pode:\n- Criar grupos;\n- Sincronizar grupos e dispositivos com o servidor;\n- Gerir grupos e dispositivos num painel de controle pessoal no sitio web. Utilizador anónimo Ligado como %1$s Não seleccionado @@ -1973,4 +1974,8 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Modificar edição OSM Usar Painel Usar Menú - \ No newline at end of file + Por favor, adicione os marcadores no mapa + Não há pontos intermédios + Indique qual a Identidade + Relatório + diff --git a/OsmAnd/res/values-ro/strings.xml b/OsmAnd/res/values-ro/strings.xml index 75a401aa3e..682762b36a 100644 --- a/OsmAnd/res/values-ro/strings.xml +++ b/OsmAnd/res/values-ro/strings.xml @@ -1231,7 +1231,7 @@ Cladiri colorate Invită… Vrei să părăsești grupul %1$s? - Vă rugăm să specificați id + Vă rugăm să specificați ID Coninuați navigația Întrerupeți navigația Limba de afișare preferată diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index b96a4505ee..b627a86268 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -55,7 +55,7 @@ Мебель Садово-огородный магазин Газ в баллонах - Магазин + Магазин Подарки, сувениры Окна, стёкла Скобяные изделия и инструмент @@ -1772,7 +1772,7 @@ Исторический объект С видеонаблюдением - С магазином + С магазином Продажа велосипедов: да Продажа велосипедов: отсутствует diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml index a03e5b3e06..3765633c6f 100644 --- a/OsmAnd/res/values-sc/phrases.xml +++ b/OsmAnd/res/values-sc/phrases.xml @@ -47,7 +47,7 @@ Butega de mòbiles Artìculos pro su giardinu Butega de gas lìcuidu - Empòriu + Empòriu Butega de donos Bidreria Ferramenta @@ -1550,7 +1550,7 @@ Coladòrgiu pedonale a livellu Ogetu istòricu Bardiamentu: eja - Cun butega + Cun butega Bèndida de bitzicletas: eja Bèndida de bitzicletas: nono diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index fece45c749..3abde85ee4 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -1542,7 +1542,7 @@ Impitadore anònimu Identificadu comente %1$s Connessione a su server OsMo non disponìbile:\n- còmpida sa connessione ìnternet tua;\n- còmpida sas impostatziones;\n- abbista su Twitter nostru: https://twitter.com/OsMomobi - Un\'impitadore anònimu non podet:\n- creare grupos;\n- sincronizare grupos e dispositivos cun su server;\n- gestire grupos e dispositivos in un\'ufìtziu privadu. + Un\'impitadore anònimu non podet:\n- creare grupos;\n- sincronizare grupos e dispositivos cun su server;\n- gestire grupos e dispositivos in unu pannellu de controllu in su giassu/situ web. Minujas Cunfigura sa mapa A curtzu de @@ -2163,4 +2163,8 @@ \n\n • Marcadores mapa. Una manera noa de ischertare in manera lestra logos in sa mapa.\n\n • Mapas OSM prus a sa minuda cun caraterìsticas pro sas istradas pro cada istadu e unu muntone de àteras funtzionalidades.\n\n • Megioramentu de s’aparèntzia e de s’ammaniamentu de sas àndalas. \n\n • Medas megioramentos in su menù de sa mapa, comente sa chirca cuntestuale de sos indiritzos.\n\n e àteru… " Sa cartella de memorizatzione ischertada est in letura ebbia. Sa cartella de memorizatzione est istada mudada pro impreare sa mamòria interna. Pro praghere issèbera una cartella de destinatzione vàlida. - + Annanghe sos marcadores mapa dae sa mapa + Perunu puntu de coladòrgiu agatadu + Raportu + Su nùmene de su documentu cuntennit caràteres non permitidos + diff --git a/OsmAnd/res/values-sk/phrases.xml b/OsmAnd/res/values-sk/phrases.xml index 72e154170a..c0b97077f2 100644 --- a/OsmAnd/res/values-sk/phrases.xml +++ b/OsmAnd/res/values-sk/phrases.xml @@ -68,7 +68,7 @@ Nábytok Záhradnícke centrum Skvapalnené plyny - Zmiešaný tovar + Zmiešaný tovar Suveníry/darčeky Sklenárstvo Železiarstvo diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 360bb80ed5..f8557e03ad 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -1132,8 +1132,8 @@ Welšsky (Cymraeg) Jedinečné ID zariadenia Zmeniť nastavenia monitorovania a nastaviť osobný monitorovací kanál - "Tento modul poskytuje funkcie pokročilého sledovania naživo cez OsMo, pozrite na http://osmo.mobi.\n\nMôžete sledovať všetky zariadenia účastníkov v skupine a komunikovať spolu. Obsahuje možnosti nastavenia krátkodobého a dlhodobého sledovania.\n\nAnonymné skupiny môžu byť operatívne vytvorené na určený počet dní a ich funkcie sú obmedzené, napr. nie je diaľkové ovládanie ani administrátor skupiny. Na druhej strane, plne funkčné skupiny je možné vytvoriť na webstránke a sú prístupné len registrovaným používateľom. " - OsMo (sledovanie OSM) + "Tento modul poskytuje časť funkcií pokročilého sledovania naživo cez OpenStreetMap sledovanie, pozrite na http://osmo.mobi.\n\nMôžete sledovať všetky zariadenia účastníkov v skupine. Môžete tiež vidieť body a stopy odoslané do skupiny, v ktorej ste členom.\n\nSkupiny nie sú vymazané ani po dlhej dobe. Skupiny sa vytvárajú na stránke OsMo.mobi " + OpenStreetMap sledovanie OsMo Len ručne (použiť šípku) Opakuj navigačné pokyny v pravidelných intervaloch @@ -1152,12 +1152,11 @@ ID sledovacieho zariadenia Spojiť so zariadením Pripojené zariadenia - Skupiny/Zariadenia OsMo - Automaticky spustiť reláciu sledovania a odosielať polohu po spustení aplikácie - Automaticky spustiť reláciu sledovania - Osobné ID sledovacieho zariadenia - Kliknite pre zobrazenia alebo zdieľanie ID sledovacieho zariadenia. - Pomocou ID budú pripojené zariadenia schopné sledovať všetky pohyby tohto zariadenia! Pre odpojenie použite možnosť "Pregenerovať". + Skupiny OsMo + Automaticky spustiť výlet a odosielať polohu po spustení aplikácie + Automaticky spustiť výlet + ID sledovacieho zariadenia + Kliknite pre zobrazenie ID sledovacieho zariadenia Token relácie: %1$s Čaká sa na autorizáciu… Odoslané polohy %1$d (v zásobníku %2$d) @@ -1201,7 +1200,7 @@ Na stred obrazovky Nastaviť ako pohyblivý cieľ Registrované meno - Moja prezývka + Prezývka Používateľ Na pripojenie do skupiny %2$s, zadajte ID skupiny (%1$s) alebo kliknite %3$s. Trvale sledovať toto zariadenie @@ -1261,7 +1260,9 @@ Autorizácia zlyhala Chyba pri autorizácii OsMo : %1$s.\n Možno je služba dočasne nedostupná alebo vám skončila registrácia.\n Chcete pokračovať v novej registrácii? Vstúpiť pozvaním - " - Všetky vytvorené skupiny sú verejné! Ak chcete byť anonymný, pripojte zariadenia priamo cez Tracker id.\n - Súkromné skupiny sú obmedzené na 8 ľudí.\n - Skupina bude zrušená v prípade nečinnosti alebo aktivity len jednej osoby počas 2 týždňov.\n - Môžete obmedziť vstup do skupiny len na pozvánky, ale pre ovládanie skupiny musíte použiť administračnú konzolu.\n - Ak potrebujete vytvoriť skupinu s inými podmienkami, kontaktujte http://osmo.mobi" + " - Keď vytvárate skupinu, zadajte jej názov a popis\n - Cez aplikáciu sa vytvárajú len skupiny jednoduchého typu, prečítajte si viac na stránke https://osmo.mobi/g/new +\n - Cez webstránku môžete skupinu spravovať, pridať stopy a body dostupné pre všetkých\n - Neodporúčame používať skupinu len s jedným používateľom, ak to nie je skupina POI\n - Súkromné skupiny sú obmedzené na 8 osôb +\n - Podrobné podmienky použitia sú na stránke OsMo.mobi\n - Ak potrebujete špeciálne podmienky - prosím kontaktuje podporu: osmo.mobi@gmail.com " Prosím prečítajte si pred vytváraním skupiny! Zastaviť Zapnúť režim GPS v pozadí @@ -1361,8 +1362,8 @@ Zariadenie sa nenašlo Anonymný používateľ Prihlásený ako %1$s - Služba OsMo nie je dostupná:\n- skontrolujte pripojenie;\n- skontrolujte nastavenie;\n- pozrite na náš Twitter: https://twitter.com/OsMomobi - Anonymný používateľ nemôže:\n- vytvárať skupiny;\n- synchronizovať skupiny a zariadenia so serverom;\n- spravovať skupiny a zariadenia v súkromnej kancelárii. + Nedá sa pripojiť na server OsMo:\n- skontrolujte vaše pripojenie na internet;\n- skontrolujte nastavenia;\n- pozrite na náš Twitter: https://twitter.com/OsMomobi + Anonymný používateľ nemôže:\n- vytvárať skupiny;\n- synchronizovať skupiny a zariadenia so serverom;\n- spravovať skupiny a zariadenia na osobnej webovej stránke. Podrobnosti Doprava Iné vlastnosti mapy @@ -1609,7 +1610,7 @@ Zadajte výšku vozidla aká musí byť povolená na cestách Inteligentné prepočítanie trasy Prepočítať iba začiatočný úsek trasy pri dlhých výletoch - Zdieľať moju polohu + Odosielať polohu Odhlásiť Vypnuté Zafarbenie podľa dôležitosti trasy @@ -1739,7 +1740,7 @@ Zvoľte kategóriu Zvoľte spôsob merania rýchlosti Meranie rýchlosti - nm + nmi Námorné míle Kilometre za hodinu Míle za hodinu @@ -1747,7 +1748,7 @@ Minúty za kilometer Minúty za míľu Námorné míle za hodinu (uzly) - nm/h + nmi/h min/m min/km m/s @@ -1997,4 +1998,14 @@ Dokončiť navigáciu Posunúť hore Posunúť dolu - + Prosím pridajte mapové značky pomocou mapy + Nenašli sa žiadne body cesty + Hlásenie + Aplikácia teraz má povolenie zapisovať do externého úložiska. Je potrebný reštart aplikácie. + " • OSM Naživo. Podporte tvorcov mapy a vývojárov a získajte aktualizácie máp každú hodinu. +\n\n • Mapové značky. Nový spôsob rýchleho výberu miest na mape.\n\n • Detailnejšie mapy z OSM s ikonami ciest pre príslušné krajiny a nové objekty na mape.\n\n • Vylepšený vzhľad a použitie tvorby trasy. +\n\n • Vylepšenia v menu mapy, ako napríklad hľadanie adresy podľa kontextu.\n\n a ďalšie… " + Plné hlásenie + Meno a heslo pre OpenStreetMap + Názov súboru obsahuje nepovolený znak + diff --git a/OsmAnd/res/values-sl/phrases.xml b/OsmAnd/res/values-sl/phrases.xml index 0bf3ea6dd8..f51ce50dd2 100644 --- a/OsmAnd/res/values-sl/phrases.xml +++ b/OsmAnd/res/values-sl/phrases.xml @@ -232,7 +232,7 @@ Trgovina s potapljaško opremo Trgovina z ribiškim priborom Trgovina s pohištvom - Splošna trgovina + Splošna trgovina Trgovina z darili Steklarstvo Železnina diff --git a/OsmAnd/res/values-sl/strings.xml b/OsmAnd/res/values-sl/strings.xml index 659331c2c5..aa8605825f 100644 --- a/OsmAnd/res/values-sl/strings.xml +++ b/OsmAnd/res/values-sl/strings.xml @@ -1302,7 +1302,7 @@ Enolični ID naprave Nastavi možnosti sledenja in osebni sledilni kanal - "Vstavek OsMo omogoča napredno sledenje v živo. Za več informacij si oglejte spletno stran http://osmo.mobi.\n\nSledilnik Osmo omogoča sledenje napravam, ki objavljajo položaj. Na ta način lahko skupina omogoči sočasno sledenje mesta. Spletni sistem omogoča ustvarjanje brezimnih skupin posameznikov, ki objavljajo svoj položaj in želijo biti med seboj v stiku. Možni so različni načini sledenja od začasnega do trajnega.\n\nBrezimne skupine so omejene na nekaj dni in nekatere funkcije, npr. ni upravljanja na daljavo in ni skrbnika skupine. Polno delujoče skupine je potrebno ustvariti na spletnem mestu in le registrirani uporabniki imajo dostop do njih. " + "Vstavek OsMo omogoča delno podopo sledenja z OpenStreetMap. Za več informacij si oglejte spletno stran http://osmo.mobi.\n\nSledilnik Osmo omogoča sledenje napravam, ki objavljajo položaj in ustvarjanje točk, ki so vidne celotni skupini.\n\nSkupine, ki že mesece niso odstranjene, je treba uskladiti z novimi pravili prek spletišča OsMo.mobi. " Sledilnik OpenStreetMap Samo ročno (pritisnite na puščico) Ponovno najavi obvestila navigacije v rednih časovnih zamikih @@ -1481,7 +1481,8 @@ Prejeta je sled OsMo %1$s. Perzijščina Overitev s sledilnikom OsMo je spodletelo: %1$s.\n Problem je lahko začasen zaradi nedelovanja storitve, ali pa je vaša registracija potekla.\n Ali želite nadaljevati z obnovitvijo registracije? - " - Vse ustvarjene skupine so javne! Če si želite zagotoviti brezimnost, povežite naprave neposredno s kodo ID sledilnika.\n - V zasebnih skupinah je lahko največ 8 oseb.\n - Skupina, ki je nedejavna več kot dva tedna oziroma je v njej le ena oseba, je samodejno izbrisana.\n - Dostop je mogoče omejiti na povabilo, nadzor pa je mogoče le preko skrbniške konzole.\n - Za ustvarjanje skupin, ki ne sledijo zgornjim omejitvam, stopite v stik z razvijalci preko http://osmo.mobi" + " - Za ustvarjanje skupine vpišite ime in izpolnite opis\n - Iz programa so lahko ustvarjene le enostavne skupine. Več o tem si lahko preberete na https://osmo.mobi/g/new.\n - Prek spletnega vmesnika lahko urejate skupine, postavljate sledi in dodajate točke, ki so na voljo vsem. +\n - Ne podpiramo možnosti skupin z enim uporabnikom. To niso skupine POI.\n - V zasebnih skupinah je lahko največ 8 oseb.\n - Podrobnosti možnosti in dovoljenja uporabe so na spletni strani OsMo.mobi.\n - Za ustvarjanje skupin, ki ne sledijo zgornjim omejitvam, stopite v stik s podporo na osmo.mobi@gmail.com. " Albanščina Arabščina Srbščina @@ -2162,4 +2163,11 @@ Polno poročilo Prijavni podatki za OpenStreetMap V imenu datoteke je nedovoljen znak - +Dodajte oznake zemljevida prek zemljevida + Ni vmesnih točk + " • OSM v živo. S podporo razvijalcem in skupnosti si pridobite možnost urnih posodobitev zemljevidov. +\n\n • Oznake zemljevidov so nov hiter način izbire mest na zemljevidu.\n\n • Podrobnejši zemljevidi OSM, ki so opremljeni z specifičnimi oznakami cest in veliko novih zmožnost zemljevidov.\n\n • Izboljšana uporabniška izkušnja pri pripravi potovanj. +\n\n • Mnogo posodobitev vsebinskega menija, kot je na primer vsebinsko iskanje naslova.\n\n • Še in še in še ... " + Prijava omogoča dostop do urnih posodobitev vseh zemljevidov sveta. Večji del prihodka se vrne skupnosti OSM in se izplačuje za vsako opravljeno dejavnost. Če sta vam OsmAnd in OSM všeč, je to odlične način za začetek sodelovanja. + + diff --git a/OsmAnd/res/values-sv/strings.xml b/OsmAnd/res/values-sv/strings.xml index b9fa61e83c..a601ed254c 100644 --- a/OsmAnd/res/values-sv/strings.xml +++ b/OsmAnd/res/values-sv/strings.xml @@ -2140,4 +2140,6 @@ Avsluta navigeringen Fullständig rapport OpenStreetMap inloggning och lösenord + Lägg till kartmarkörer via kartan + Hittar inga waypoints diff --git a/OsmAnd/res/values-tr/phrases.xml b/OsmAnd/res/values-tr/phrases.xml index fa8828a2a3..a436cbdd7f 100644 --- a/OsmAnd/res/values-tr/phrases.xml +++ b/OsmAnd/res/values-tr/phrases.xml @@ -104,7 +104,7 @@ Bahçe merkezi Bahçe mobilya mağazası Tüpçü - Genel mağaza + Genel mağaza Hediyelik dükkanı Camcı Donanım mağazası diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml index c878ea3a07..432bac8a43 100644 --- a/OsmAnd/res/values-uk/phrases.xml +++ b/OsmAnd/res/values-uk/phrases.xml @@ -47,7 +47,7 @@ Меблі Сад та город Зріджений газ - Магазин + Магазин Подарунки та сувеніри Вікна, скло Будівельний магазин diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml index 6cfc6a0206..6a05b1a646 100644 --- a/OsmAnd/res/values-zh-rTW/phrases.xml +++ b/OsmAnd/res/values-zh-rTW/phrases.xml @@ -1,4 +1,4 @@ - + 商店 食品商店 緊急救助 @@ -90,7 +90,7 @@ 傢俱店 園藝中心 瓦斯行 - 雜貨店 + 雜貨店 禮品店 玻璃行 五金店 @@ -1944,7 +1944,7 @@ 歷史物件 監視器:有 - 有商店 + 有商店 自行車零售:有 自行車零售:無 @@ -2416,4 +2416,7 @@ 醫療專業:放射科 醫療專業:精神科 醫療專業:神經科 + 防波堤 + 歷史時期:村民 (時代 I, II, 1580 BC – 133 AC) + 歷史時期:城市(時代,133 AC - 374 AC) diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index cd7842b50a..ba8993859c 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -107,7 +107,7 @@ Garden center Garden furniture store Liquid gas store - General store + General store Gift shop Glaziery Hardware store @@ -1923,7 +1923,7 @@ Historical object Surveillance: yes - With shop + With shop Bicycle retail: yes Bicycle retail: no diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java index a07d1ce325..c924902889 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java @@ -5,7 +5,12 @@ import android.content.Context; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.os.Build; +import android.support.annotation.DrawableRes; +import android.support.annotation.IdRes; +import android.support.annotation.LayoutRes; import android.support.annotation.StringRes; +import android.support.v4.content.ContextCompat; +import android.support.v4.graphics.drawable.DrawableCompat; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; @@ -36,11 +41,11 @@ public class ContextMenuAdapter { public interface OnContextMenuClick { //boolean return type needed to desribe if drawer needed to be close or not - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked); + boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked); } public interface OnIntegerValueChangedListener { - public boolean onIntegerValueChangedListener(int newValue); + boolean onIntegerValueChangedListener(int newValue); } public static abstract class OnRowItemClick implements OnContextMenuClick { @@ -50,7 +55,7 @@ public class ContextMenuAdapter { //boolean return type needed to desribe if drawer needed to be close or not public boolean onRowItemClick(ArrayAdapter adapter, View view, int itemId, int pos) { - CompoundButton btn = (CompoundButton) view.findViewById(R.id.check_item); + CompoundButton btn = (CompoundButton) view.findViewById(R.id.toggle_item); if (btn != null && btn.getVisibility() == View.VISIBLE) { btn.setChecked(!btn.isChecked()); return false; @@ -74,6 +79,7 @@ public class ContextMenuAdapter { private final Context ctx; private View anchor; + @LayoutRes private int defaultLayoutId = Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB ? R.layout.list_menu_item : R.layout.list_menu_item_native; final TIntArrayList items = new TIntArrayList(); @@ -86,7 +92,8 @@ public class ContextMenuAdapter { final TIntArrayList loadingList = new TIntArrayList(); final TIntArrayList layoutIds = new TIntArrayList(); final TIntArrayList iconList = new TIntArrayList(); - final TIntArrayList iconListLight = new TIntArrayList(); + final TIntArrayList lightIconList = new TIntArrayList(); + final TIntArrayList secondaryLightIconList = new TIntArrayList(); final ArrayList itemDescription = new ArrayList(); private List visibleModes = new ArrayList(); private ConfigureMapMenu.OnClickListener changeAppModeListener = null; @@ -168,13 +175,22 @@ public class ContextMenuAdapter { if (lst != 0) { return ctx.getResources().getDrawable(lst); } - int lstLight = iconListLight.get(pos); + int lstLight = lightIconList.get(pos); if (lstLight != 0) { return ctx.getIconsCache().getIcon(lstLight, light); } return null; } + public Drawable getSecondaryImage(OsmandApplication ctx, int pos, boolean light) { + @DrawableRes + int secondaryDrawableId = secondaryLightIconList.get(pos); + if (secondaryDrawableId != 0) { + return ContextCompat.getDrawable(ctx, secondaryDrawableId); + } + return null; + } + public int getBackgroundColor(Context ctx, boolean holoLight) { if (holoLight) { return ctx.getResources().getColor(R.color.bg_color_light); @@ -204,12 +220,18 @@ public class ContextMenuAdapter { } public class Item { + @DrawableRes int icon = 0; + @DrawableRes int lightIcon = 0; + @DrawableRes + int secondaryLightIcon = 0; + @IdRes int id; String name; int selected = -1; int progress = -1; + @LayoutRes int layout = -1; int loading = -1; boolean cat; @@ -221,16 +243,20 @@ public class ContextMenuAdapter { private Item() { } - public Item icon(int icon) { + public Item icon(@DrawableRes int icon) { this.icon = icon; return this; } - public Item iconColor(int icon) { + public Item colorIcon(@DrawableRes int icon) { this.lightIcon = icon; return this; } + public Item secondaryIconColor(@DrawableRes int icon) { + this.secondaryLightIcon = icon; + return this; + } public Item position(int pos) { this.pos = pos; @@ -252,7 +278,7 @@ public class ContextMenuAdapter { return this; } - public Item layout(int l) { + public Item layout(@LayoutRes int l) { this.layout = l; return this; } @@ -284,7 +310,8 @@ public class ContextMenuAdapter { loadingList.insert(pos, loading); layoutIds.insert(pos, layout); iconList.insert(pos, icon); - iconListLight.insert(pos, lightIcon); + lightIconList.insert(pos, lightIcon); + secondaryLightIconList.insert(pos, secondaryLightIcon); checkListeners.add(pos, checkBoxListener); integerListeners.add(pos, integerListener); isCategory.insert(pos, cat ? 1 : 0); @@ -312,7 +339,8 @@ public class ContextMenuAdapter { selectedList.removeAt(pos); progressList.removeAt(pos); iconList.removeAt(pos); - iconListLight.removeAt(pos); + lightIconList.removeAt(pos); + secondaryLightIconList.removeAt(pos); checkListeners.remove(pos); integerListeners.remove(pos); isCategory.removeAt(pos); @@ -342,9 +370,8 @@ public class ContextMenuAdapter { public ArrayAdapter createListAdapter(final Activity activity, final boolean holoLight) { final int layoutId = defaultLayoutId; final OsmandApplication app = ((OsmandApplication) activity.getApplication()); - ArrayAdapter listAdapter = new ContextMenuArrayAdapter(activity, layoutId, R.id.title, + return new ContextMenuArrayAdapter(activity, layoutId, R.id.title, getItemNames(), app, holoLight); - return listAdapter; } public class ContextMenuArrayAdapter extends ArrayAdapter { @@ -383,7 +410,7 @@ public class ContextMenuAdapter { } if (convertView == null || (!lid.equals(convertView.getTag()))) { convertView = activity.getLayoutInflater().inflate(lid, parent, false); - AndroidUtils.setListItemBackground(ctx, convertView, !holoLight); +// AndroidUtils.setListItemBackground(ctx, convertView, !holoLight); convertView.setTag(lid); } TextView tv = (TextView) convertView.findViewById(R.id.title); @@ -396,7 +423,7 @@ public class ContextMenuAdapter { int color = activity.getResources() .getColor(holoLight ? R.color.icon_color : R.color.dashboard_subheader_text_dark); Drawable imageId = app.getIconsCache().getPaintedContentIcon( - iconListLight.get(position), color); + lightIconList.get(position), color); float density = activity.getResources().getDisplayMetrics().density; int paddingInPixels = (int) (24 * density); int drawableSizeInPixels = (int) (24 * density); // 32 @@ -404,15 +431,31 @@ public class ContextMenuAdapter { tv.setCompoundDrawables(imageId, null, null, null); tv.setCompoundDrawablePadding(paddingInPixels); } else { - Drawable imageId = getImage(app, position, holoLight); - if (imageId != null) { + Drawable drawable = getImage(app, position, holoLight); + if (drawable != null) { - ((ImageView) convertView.findViewById(R.id.icon)).setImageDrawable(imageId); + ((ImageView) convertView.findViewById(R.id.icon)).setImageDrawable(drawable); convertView.findViewById(R.id.icon).setVisibility(View.VISIBLE); } else if (convertView.findViewById(R.id.icon) != null) { convertView.findViewById(R.id.icon).setVisibility(View.GONE); } } + @DrawableRes + int secondaryLightDrawable = secondaryLightIconList.get(position); + if (secondaryLightDrawable != 0) { + int color = ContextCompat.getColor(ctx, + holoLight ? R.color.icon_color : R.color.dashboard_subheader_text_dark); + Drawable drawable = getSecondaryImage(app, position, holoLight); + DrawableCompat.setTint(drawable, color); + ImageView imageView = (ImageView) convertView.findViewById(R.id.secondary_icon); + imageView.setImageDrawable(drawable); + imageView.setVisibility(View.VISIBLE); + } else { + ImageView imageView = (ImageView) convertView.findViewById(R.id.secondary_icon); + if (imageView != null) { + imageView.setVisibility(View.GONE); + } + } if (isCategory(position)) { tv.setTypeface(Typeface.DEFAULT_BOLD); @@ -420,8 +463,8 @@ public class ContextMenuAdapter { tv.setTypeface(null); } - if (convertView.findViewById(R.id.check_item) != null) { - final CompoundButton ch = (CompoundButton) convertView.findViewById(R.id.check_item); + if (convertView.findViewById(R.id.toggle_item) != null) { + final CompoundButton ch = (CompoundButton) convertView.findViewById(R.id.toggle_item); if (selectedList.get(position) != -1) { ch.setOnCheckedChangeListener(null); ch.setVisibility(View.VISIBLE); diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java index 3e243160c5..5a70a0ff31 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java @@ -2004,19 +2004,27 @@ public class OsmandSettings { List ps = getPoints(); List ds = getPointDescriptions(ps.size()); int i = ps.indexOf(new LatLon(latitude, longitude)); - ds.set(i, PointDescription.serializeToString(historyDescription)); - if (historyDescription != null && !historyDescription.isSearchingAddress(ctx)) { - SearchHistoryHelper.getInstance(ctx).addNewItemToHistory(latitude, longitude, historyDescription); + if (i != -1) { + ds.set(i, PointDescription.serializeToString(historyDescription)); + if (historyDescription != null && !historyDescription.isSearchingAddress(ctx)) { + SearchHistoryHelper.getInstance(ctx).addNewItemToHistory(latitude, longitude, historyDescription); + } + return savePoints(ps, ds); + } else { + return false; } - return savePoints(ps, ds); } public boolean deletePoint(int index) { List ps = getPoints(); List ds = getPointDescriptions(ps.size()); - ps.remove(index); - ds.remove(index); - return savePoints(ps, ds); + if (index < ps.size()) { + ps.remove(index); + ds.remove(index); + return savePoints(ps, ds); + } else { + return false; + } } public boolean savePoints(List ps, List ds) { diff --git a/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java b/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java index 8ce63691fd..2e784fa62d 100644 --- a/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java +++ b/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java @@ -138,10 +138,12 @@ public class TargetPointsHelper { AddressLookupRequest lookupRequest = new AddressLookupRequest(targetPoint.point, new GeocodingLookupService.OnAddressLookupResult() { @Override public void geocodingDone(String address) { - targetPoint.pointDescription.setName(address); - settings.updateIntermediatePoint(targetPoint.point.getLatitude(), targetPoint.point.getLongitude(), - targetPoint.pointDescription); - updateRouteAndRefresh(false); + if (intermediatePoints.contains(targetPoint)) { + targetPoint.pointDescription.setName(address); + settings.updateIntermediatePoint(targetPoint.point.getLatitude(), targetPoint.point.getLongitude(), + targetPoint.pointDescription); + updateRouteAndRefresh(false); + } } }, null); ctx.getGeocodingLookupService().lookupAddress(lookupRequest); @@ -156,10 +158,12 @@ public class TargetPointsHelper { @Override public void geocodingDone(String address) { startPointRequest = null; - pointToStart.pointDescription.setName(address); - settings.setPointToStart(pointToStart.point.getLatitude(), pointToStart.point.getLongitude(), - pointToStart.pointDescription); - updateRouteAndRefresh(false); + if (pointToStart != null) { + pointToStart.pointDescription.setName(address); + settings.setPointToStart(pointToStart.point.getLatitude(), pointToStart.point.getLongitude(), + pointToStart.pointDescription); + updateRouteAndRefresh(false); + } } }, null); ctx.getGeocodingLookupService().lookupAddress(startPointRequest); @@ -174,10 +178,12 @@ public class TargetPointsHelper { @Override public void geocodingDone(String address) { targetPointRequest = null; - pointToNavigate.pointDescription.setName(address); - settings.setPointToNavigate(pointToNavigate.point.getLatitude(), pointToNavigate.point.getLongitude(), - pointToNavigate.pointDescription); - updateRouteAndRefresh(false); + if (pointToNavigate != null) { + pointToNavigate.pointDescription.setName(address); + settings.setPointToNavigate(pointToNavigate.point.getLatitude(), pointToNavigate.point.getLongitude(), + pointToNavigate.pointDescription); + updateRouteAndRefresh(false); + } } }, null); ctx.getGeocodingLookupService().lookupAddress(targetPointRequest); diff --git a/OsmAnd/src/net/osmand/plus/activities/FavoritesListFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavoritesListFragment.java index 5b8df5e411..50f0248430 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavoritesListFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavoritesListFragment.java @@ -234,7 +234,7 @@ public class FavoritesListFragment extends OsmAndListFragment implements SearchA favorite.getLatitude(), favorite.getLongitude(), screenOrientation, app, activity); name.setText(getName(favorite)); - final CheckBox ch = (CheckBox) row.findViewById(R.id.check_item); + final CheckBox ch = (CheckBox) row.findViewById(R.id.toggle_item); icon.setVisibility(View.VISIBLE); ch.setVisibility(View.GONE); return row; diff --git a/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java index 880cd07732..b71428e589 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java @@ -171,7 +171,7 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment { public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { IconsCache iconsCache = getMyApplication().getIconsCache(); if (selectionMode) { - CheckBox ch = (CheckBox) v.findViewById(R.id.check_item); + CheckBox ch = (CheckBox) v.findViewById(R.id.toggle_item); FavouritePoint model = favouritesAdapter.getChild(groupPosition, childPosition); ch.setChecked(!ch.isChecked()); if (ch.isChecked()) { @@ -580,7 +580,9 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment { sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, "Favourites.gpx:\n\n\n" + GPXUtilities.asString(gpxFile, getMyApplication())); sendIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_fav_subject)); - sendIntent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(getActivity(), "net.osmand.fileprovider", dst)); + sendIntent.putExtra(Intent.EXTRA_STREAM, + FileProvider.getUriForFile(getActivity(), + getActivity().getPackageName() + ".fileprovider", dst)); sendIntent.setType("text/plain"); startActivity(sendIntent); } catch (IOException e) { @@ -720,7 +722,7 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment { @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View row = convertView; - boolean checkBox = row != null && row.findViewById(R.id.check_item) instanceof CheckBox; + boolean checkBox = row != null && row.findViewById(R.id.toggle_item) instanceof CheckBox; boolean same = (selectionMode && checkBox) || (!selectionMode && !checkBox); if (row == null || !same) { LayoutInflater inflater = getActivity().getLayoutInflater(); @@ -733,7 +735,7 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment { label.setText(model.name.length() == 0 ? getString(R.string.shared_string_favorites) : model.name); if (selectionMode) { - final CheckBox ch = (CheckBox) row.findViewById(R.id.check_item); + final CheckBox ch = (CheckBox) row.findViewById(R.id.toggle_item); ch.setVisibility(View.VISIBLE); ch.setChecked(groupsToDelete.contains(model)); @@ -754,7 +756,7 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment { } }); } else { - final CheckBox ch = (CheckBox) row.findViewById(R.id.check_item); + final CheckBox ch = (CheckBox) row.findViewById(R.id.toggle_item); ch.setVisibility(View.GONE); } final View ch = row.findViewById(R.id.options); @@ -819,7 +821,7 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment { direction.setVisibility(View.VISIBLE); direction.setImageDrawable(arrowImage); - final CheckBox ch = (CheckBox) row.findViewById(R.id.check_item); + final CheckBox ch = (CheckBox) row.findViewById(R.id.toggle_item); if (selectionMode) { ch.setVisibility(View.VISIBLE); ch.setChecked(favoritesSelected.contains(model)); diff --git a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java index be606480f3..258166474d 100644 --- a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java @@ -1,24 +1,12 @@ package net.osmand.plus.activities; -import java.util.ArrayList; -import java.util.List; - -import net.osmand.PlatformUtil; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.OsmandSettings; -import net.osmand.plus.R; -import net.osmand.plus.Version; -import net.osmand.plus.dialogs.HelpArticleDialogFragment; - -import org.apache.commons.logging.Log; - import android.content.Intent; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.support.annotation.DrawableRes; +import android.support.annotation.IdRes; import android.support.annotation.NonNull; import android.support.annotation.StringRes; import android.support.v4.app.Fragment; @@ -36,10 +24,23 @@ import android.widget.FrameLayout.LayoutParams; import android.widget.ImageView; import android.widget.TextView; +import net.osmand.PlatformUtil; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.OsmandPlugin; +import net.osmand.plus.R; +import net.osmand.plus.Version; +import net.osmand.plus.dialogs.HelpArticleDialogFragment; + +import org.apache.commons.logging.Log; + +import java.util.ArrayList; +import java.util.List; + public class HelpActivity extends OsmandActionBarActivity { // public static final String DIALOG = "dialog"; + @IdRes public static final int DIALOG = 5; final static HelpMenuCategory[] categories = HelpMenuCategory.values(); public static final String OSMAND_POLL_HTML = "http://osmand.net/android-poll.html"; @@ -274,7 +275,7 @@ public class HelpActivity extends OsmandActionBarActivity { LayoutInflater inflater = LayoutInflater.from(ctx); v = inflater.inflate(R.layout.download_item_list_section, parent, false); } - TextView nameView = ((TextView) v.findViewById(R.id.section_name)); + TextView nameView = ((TextView) v.findViewById(R.id.title)); nameView.setText(titleId); v.setOnClickListener(null); TypedValue typedValue = new TypedValue(); diff --git a/OsmAnd/src/net/osmand/plus/activities/IntermediatePointsDialog.java b/OsmAnd/src/net/osmand/plus/activities/IntermediatePointsDialog.java index 34e8de5f01..4fb2e53245 100644 --- a/OsmAnd/src/net/osmand/plus/activities/IntermediatePointsDialog.java +++ b/OsmAnd/src/net/osmand/plus/activities/IntermediatePointsDialog.java @@ -255,7 +255,7 @@ public class IntermediatePointsDialog { R.drawable.ic_action_intermediate; tv.setCompoundDrawablesWithIntrinsicBounds(app.getIconsCache().getContentIcon(icon), null, null, null); tv.setCompoundDrawablePadding(padding); - final CheckBox ch = ((CheckBox) v.findViewById(R.id.check_item)); + final CheckBox ch = ((CheckBox) v.findViewById(R.id.toggle_item)); ch.setVisibility(View.VISIBLE); ch.setOnCheckedChangeListener(null); ch.setChecked(checkedIntermediates[position]); diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java index c4740dfda7..1b4e6216f5 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java @@ -486,6 +486,8 @@ public class MapActivity extends AccessibleActivity implements DownloadEvents, new RateUsBottomSheetDialog().show(getSupportFragmentManager(), "dialog"); } } + } else { + dashboardOnMap.updateDashboard(); } } dashboardOnMap.updateLocation(true, true, false); diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index 30bc2a3e0d..c4ffe64caf 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -279,14 +279,14 @@ public class MapActivityActions implements DialogProvider { public void contextMenuPoint(final double latitude, final double longitude, final ContextMenuAdapter iadapter, Object selectedObj) { final ContextMenuAdapter adapter = iadapter == null ? new ContextMenuAdapter(mapActivity) : iadapter; - adapter.item(R.string.context_menu_item_search).iconColor(R.drawable.ic_action_search_dark).reg(); + adapter.item(R.string.context_menu_item_search).colorIcon(R.drawable.ic_action_search_dark).reg(); if (!mapActivity.getRoutingHelper().isFollowingMode() && !mapActivity.getRoutingHelper().isRoutePlanningMode()) { - adapter.item(R.string.context_menu_item_directions_from).iconColor( + adapter.item(R.string.context_menu_item_directions_from).colorIcon( R.drawable.ic_action_gdirections_dark).reg(); } if (getMyApplication().getTargetPointsHelper().getPointToNavigate() != null && (mapActivity.getRoutingHelper().isFollowingMode() || mapActivity.getRoutingHelper().isRoutePlanningMode())) { - adapter.item(R.string.context_menu_item_last_intermediate_point).iconColor( + adapter.item(R.string.context_menu_item_last_intermediate_point).colorIcon( R.drawable.ic_action_intermediate).reg(); } OsmandPlugin.registerMapContextMenu(mapActivity, latitude, longitude, adapter, selectedObj); @@ -385,7 +385,7 @@ public class MapActivityActions implements DialogProvider { String name = path.substring(path.lastIndexOf("/") + 1, path.length()); ((TextView) convertView.findViewById(R.id.title)).setText(name); convertView.findViewById(R.id.icon).setVisibility(View.GONE); - convertView.findViewById(R.id.check_item).setVisibility(View.GONE); + convertView.findViewById(R.id.toggle_item).setVisibility(View.GONE); return convertView; } }; @@ -593,7 +593,7 @@ public class MapActivityActions implements DialogProvider { final OsmandApplication app = mapActivity.getMyApplication(); ContextMenuAdapter optionsMenuHelper = new ContextMenuAdapter(app); - optionsMenuHelper.item(R.string.home).iconColor(R.drawable.map_dashboard) + optionsMenuHelper.item(R.string.home).colorIcon(R.drawable.map_dashboard) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -604,7 +604,7 @@ public class MapActivityActions implements DialogProvider { } }).reg(); if (settings.USE_MAP_MARKERS.get()) { - optionsMenuHelper.item(R.string.map_markers).iconColor(R.drawable.ic_action_flag_dark) + optionsMenuHelper.item(R.string.map_markers).colorIcon(R.drawable.ic_action_flag_dark) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -614,7 +614,7 @@ public class MapActivityActions implements DialogProvider { } }).reg(); } else { - optionsMenuHelper.item(R.string.waypoints).iconColor(R.drawable.ic_action_intermediate) + optionsMenuHelper.item(R.string.waypoints).colorIcon(R.drawable.ic_action_intermediate) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -624,7 +624,7 @@ public class MapActivityActions implements DialogProvider { } }).reg(); } - optionsMenuHelper.item(R.string.get_directions).iconColor(R.drawable.ic_action_gdirections_dark) + optionsMenuHelper.item(R.string.get_directions).colorIcon(R.drawable.ic_action_gdirections_dark) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -643,7 +643,7 @@ public class MapActivityActions implements DialogProvider { }).reg(); // Default actions (Layers, Configure Map screen, Settings, Search, Favorites) optionsMenuHelper.item(R.string.search_button) - .iconColor(R.drawable.ic_action_search_dark) + .colorIcon(R.drawable.ic_action_search_dark) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -661,7 +661,7 @@ public class MapActivityActions implements DialogProvider { } }).reg(); - optionsMenuHelper.item(R.string.shared_string_my_places).iconColor(R.drawable.ic_action_fav_dark) + optionsMenuHelper.item(R.string.shared_string_my_places).colorIcon(R.drawable.ic_action_fav_dark) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -674,7 +674,7 @@ public class MapActivityActions implements DialogProvider { }).reg(); - optionsMenuHelper.item(R.string.show_point_options).iconColor(R.drawable.ic_action_marker_dark) + optionsMenuHelper.item(R.string.show_point_options).colorIcon(R.drawable.ic_action_marker_dark) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -684,7 +684,7 @@ public class MapActivityActions implements DialogProvider { } }).reg(); - optionsMenuHelper.item(R.string.configure_map).iconColor(R.drawable.ic_action_layers_dark) + optionsMenuHelper.item(R.string.configure_map).colorIcon(R.drawable.ic_action_layers_dark) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -694,7 +694,7 @@ public class MapActivityActions implements DialogProvider { } }).reg(); - optionsMenuHelper.item(R.string.layer_map_appearance).iconColor(R.drawable.ic_configure_screen_dark) + optionsMenuHelper.item(R.string.layer_map_appearance).colorIcon(R.drawable.ic_configure_screen_dark) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -711,7 +711,7 @@ public class MapActivityActions implements DialogProvider { d += " (" + updt.size() + ")"; } } - optionsMenuHelper.item(R.string.index_settings).name(d).iconColor(R.drawable.ic_type_archive) + optionsMenuHelper.item(R.string.index_settings).name(d).colorIcon(R.drawable.ic_type_archive) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -724,7 +724,7 @@ public class MapActivityActions implements DialogProvider { }).reg(); if (Version.isGooglePlayEnabled(app)) { - optionsMenuHelper.item(R.string.osm_live).iconColor(R.drawable.ic_action_osm_live) + optionsMenuHelper.item(R.string.osm_live).colorIcon(R.drawable.ic_action_osm_live) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -736,7 +736,7 @@ public class MapActivityActions implements DialogProvider { }).reg(); } - optionsMenuHelper.item(R.string.prefs_plugins).iconColor(R.drawable.ic_extension_dark) + optionsMenuHelper.item(R.string.prefs_plugins).colorIcon(R.drawable.ic_extension_dark) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -749,7 +749,7 @@ public class MapActivityActions implements DialogProvider { }).reg(); - optionsMenuHelper.item(R.string.shared_string_settings).iconColor(R.drawable.ic_action_settings) + optionsMenuHelper.item(R.string.shared_string_settings).colorIcon(R.drawable.ic_action_settings) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -760,7 +760,7 @@ public class MapActivityActions implements DialogProvider { return true; } }).reg(); - optionsMenuHelper.item(R.string.shared_string_help).iconColor(R.drawable.ic_action_help) + optionsMenuHelper.item(R.string.shared_string_help).colorIcon(R.drawable.ic_action_help) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -774,7 +774,7 @@ public class MapActivityActions implements DialogProvider { //////////// Others OsmandPlugin.registerOptionsMenu(mapActivity, optionsMenuHelper); -// optionsMenuHelper.item(R.string.shared_string_exit).iconColor(R.drawable.ic_action_quit_dark ) +// optionsMenuHelper.item(R.string.shared_string_exit).colorIcon(R.drawable.ic_action_quit_dark ) // .listen(new OnContextMenuClick() { // @Override // public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java index 53d5d9ae7b..f0d25628f4 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java @@ -262,7 +262,7 @@ public class MapActivityLayers { OsmandApplication app = (OsmandApplication) getApplication(); final PoiFiltersHelper poiFilters = app.getPoiFilters(); final ContextMenuAdapter adapter = new ContextMenuAdapter(activity); - adapter.item(R.string.shared_string_search).iconColor(R.drawable.ic_action_search_dark).reg(); + adapter.item(R.string.shared_string_search).colorIcon(R.drawable.ic_action_search_dark).reg(); final List list = new ArrayList(); list.add(poiFilters.getCustomPOIFilter()); for (PoiUIFilter f : poiFilters.getTopDefinedPoiFilters()) { diff --git a/OsmAnd/src/net/osmand/plus/activities/SettingsBaseActivity.java b/OsmAnd/src/net/osmand/plus/activities/SettingsBaseActivity.java index 95d2ce3bdd..e01487194c 100644 --- a/OsmAnd/src/net/osmand/plus/activities/SettingsBaseActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/SettingsBaseActivity.java @@ -44,10 +44,10 @@ import java.util.Set; public abstract class SettingsBaseActivity extends ActionBarPreferenceActivity implements OnPreferenceChangeListener, OnPreferenceClickListener { + public static final String INTENT_APP_MODE = "INTENT_APP_MODE"; - protected OsmandSettings settings; - protected final boolean profileSettings ; + protected final boolean profileSettings; protected List modes = new ArrayList(); private ApplicationMode previousAppMode; @@ -388,7 +388,14 @@ public abstract class SettingsBaseActivity extends ActionBarPreferenceActivity super.onResume(); if (profileSettings) { previousAppMode = settings.getApplicationMode(); - boolean found = setSelectedAppMode(previousAppMode); + boolean found; + if (getIntent() != null && getIntent().hasExtra(INTENT_APP_MODE)) { + String modeStr = getIntent().getStringExtra(INTENT_APP_MODE); + ApplicationMode mode = ApplicationMode.valueOfStringKey(modeStr, previousAppMode); + found = setSelectedAppMode(mode); + } else { + found = setSelectedAppMode(previousAppMode); + } if (!found) { getSpinner().setSelection(0); } diff --git a/OsmAnd/src/net/osmand/plus/activities/actions/StartGPSStatus.java b/OsmAnd/src/net/osmand/plus/activities/actions/StartGPSStatus.java index 8c762c5037..8e32dadf8f 100644 --- a/OsmAnd/src/net/osmand/plus/activities/actions/StartGPSStatus.java +++ b/OsmAnd/src/net/osmand/plus/activities/actions/StartGPSStatus.java @@ -126,7 +126,7 @@ public class StartGPSStatus extends OsmAndAction { View v = mapActivity.getLayoutInflater().inflate(layout, null); TextView tv = (TextView)v.findViewById(R.id.title); tv.setText(getItem(position).stringRes); - v.findViewById(R.id.check_item).setVisibility(View.INVISIBLE); + v.findViewById(R.id.toggle_item).setVisibility(View.INVISIBLE); return v; } }; diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioNotesLayer.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioNotesLayer.java index 62bc990b99..1ec25d1200 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioNotesLayer.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioNotesLayer.java @@ -169,7 +169,9 @@ public class AudioNotesLayer extends OsmandMapLayer implements IContextMenuProvi @Override public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List objects) { - getRecordingsFromPoint(point, tileBox, objects); + if (tileBox.getZoom() >= startZoom) { + getRecordingsFromPoint(point, tileBox, objects); + } } public void getRecordingsFromPoint(PointF point, RotatedTileBox tileBox, List am) { diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index 69d562a722..d8eaab3821 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -591,7 +591,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { } }; adapter.item(R.string.layer_recordings).selected(SHOW_RECORDINGS.get() ? 1 : 0) - .iconColor(R.drawable.ic_action_micro_dark).listen(listener).position(12).reg(); + .colorIcon(R.drawable.ic_action_micro_dark).listen(listener).position(12).reg(); } @Override @@ -600,7 +600,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { if (isRecording()) { return; } - adapter.item(R.string.recording_context_menu_arecord).iconColor(R.drawable.ic_action_micro_dark) + adapter.item(R.string.recording_context_menu_arecord).colorIcon(R.drawable.ic_action_micro_dark) .listen(new OnContextMenuClick() { @Override @@ -609,7 +609,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { return true; } }).position(6).reg(); - adapter.item(R.string.recording_context_menu_vrecord).iconColor(R.drawable.ic_action_video_dark) + adapter.item(R.string.recording_context_menu_vrecord).colorIcon(R.drawable.ic_action_video_dark) .listen(new OnContextMenuClick() { @Override @@ -618,7 +618,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { return true; } }).position(7).reg(); - adapter.item(R.string.recording_context_menu_precord).iconColor(R.drawable.ic_action_photo_dark) + adapter.item(R.string.recording_context_menu_precord).colorIcon(R.drawable.ic_action_photo_dark) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java index 4762871e70..94caadf133 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java @@ -9,10 +9,12 @@ import android.os.Build; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewCompat; import android.support.v7.widget.Toolbar; import android.util.TypedValue; import android.view.Gravity; +import android.view.MenuItem; import android.view.View; import android.view.ViewTreeObserver; import android.view.animation.Animation; @@ -31,7 +33,6 @@ import android.widget.ListView; import android.widget.ScrollView; import android.widget.TextView; -import com.github.ksoichiro.android.observablescrollview.ObservableListView; import com.github.ksoichiro.android.observablescrollview.ObservableScrollView; import com.github.ksoichiro.android.observablescrollview.ObservableScrollViewCallbacks; import com.github.ksoichiro.android.observablescrollview.ScrollState; @@ -74,6 +75,7 @@ import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.routing.RoutingHelper.IRouteInformationListener; import net.osmand.plus.views.DownloadedRegionsLayer; +import net.osmand.plus.views.MapInfoLayer; import net.osmand.plus.views.OsmandMapTileView; import net.osmand.plus.views.controls.DynamicListView; import net.osmand.plus.views.controls.DynamicListViewCallbacks; @@ -81,6 +83,7 @@ import net.osmand.plus.views.controls.StableArrayAdapter; import net.osmand.plus.views.controls.SwipeDismissListViewTouchListener; import net.osmand.plus.views.controls.SwipeDismissListViewTouchListener.DismissCallbacks; import net.osmand.plus.views.controls.SwipeDismissListViewTouchListener.Undoable; +import net.osmand.plus.views.mapwidgets.MapWidgetRegistry; import java.lang.ref.WeakReference; import java.util.ArrayList; @@ -201,7 +204,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis public void createDashboardView() { - baseColor = mapActivity.getResources().getColor(R.color.osmand_orange) & 0x00ffffff; + baseColor = ContextCompat.getColor(mapActivity, R.color.osmand_orange) & 0x00ffffff; waypointDialogHelper = new WaypointDialogHelper(mapActivity); waypointDialogHelper.setHelperCallbacks(this); mapMarkerDialogHelper = new MapMarkerDialogHelper(mapActivity); @@ -354,7 +357,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis } }); - gradientToolbar = mapActivity.getResources().getDrawable(R.drawable.gradient_toolbar).mutate(); + gradientToolbar = ContextCompat.getDrawable(mapActivity, R.drawable.gradient_toolbar).mutate(); if (AndroidUiHelper.isOrientationPortrait(mapActivity)) { this.portrait = true; scrollView.setScrollViewCallbacks(this); @@ -378,7 +381,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis fl.gravity = Gravity.BOTTOM; shadowContainer.setLayoutParams(fl); ImageView shadow = new ImageView(mapActivity); - shadow.setImageDrawable(mapActivity.getResources().getDrawable(R.drawable.bg_shadow_onmap)); + shadow.setImageDrawable(ContextCompat.getDrawable(mapActivity, R.drawable.bg_shadow_onmap)); shadow.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM)); shadow.setScaleType(ScaleType.FIT_XY); @@ -537,6 +540,26 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis } }); } + + toolbar.getMenu().clear(); + if (visibleType == DashboardType.CONFIGURE_SCREEN) { + toolbar.inflateMenu(R.menu.refresh_menu); + toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem menuItem) { + if (menuItem.getItemId() == R.id.action_refresh) { + MapWidgetRegistry registry = mapActivity.getMapLayers().getMapWidgetRegistry(); + registry.resetToDefault(); + MapInfoLayer mil = mapActivity.getMapLayers().getMapInfoLayer(); + if (mil != null) { + mil.recreateControls(); + } + updateListAdapter(registry.getViewConfigureMenuAdapter(mapActivity)); + } + return false; + } + }); + } } @@ -553,12 +576,12 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis params.gravity = landscape ? Gravity.BOTTOM | Gravity.RIGHT : Gravity.TOP | Gravity.RIGHT; actionButton.setLayoutParams(params); actionButton.setScaleType(ScaleType.CENTER); - actionButton.setBackgroundDrawable(mapActivity.getResources().getDrawable(R.drawable.btn_circle_blue)); + actionButton.setBackgroundResource(R.drawable.btn_circle_blue); hideActionButton(); DashboardActionButton myLocationButton = new DashboardActionButton(); - myLocationButton.icon = mapActivity.getResources().getDrawable(R.drawable.map_my_location); + myLocationButton.icon = ContextCompat.getDrawable(mapActivity, R.drawable.map_my_location); myLocationButton.onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { @@ -572,7 +595,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis }; DashboardActionButton navigateButton = new DashboardActionButton(); - navigateButton.icon = mapActivity.getResources().getDrawable(R.drawable.map_start_navigation); + navigateButton.icon = ContextCompat.getDrawable(mapActivity, R.drawable.map_start_navigation); navigateButton.onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { @@ -582,7 +605,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis }; DashboardActionButton routeButton = new DashboardActionButton(); - routeButton.icon = mapActivity.getResources().getDrawable(R.drawable.map_directions); + routeButton.icon = ContextCompat.getDrawable(mapActivity, R.drawable.map_directions); routeButton.onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { @@ -622,7 +645,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis }; DashboardActionButton markersSelectionButton = new DashboardActionButton(); - markersSelectionButton.icon = mapActivity.getResources().getDrawable(R.drawable.map_start_navigation); + markersSelectionButton.icon = ContextCompat.getDrawable(mapActivity, R.drawable.map_start_navigation); markersSelectionButton.onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { @@ -784,14 +807,12 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis } else { scrollView.setVisibility(View.GONE); listViewLayout.setVisibility(View.VISIBLE); - listView.scrollTo(0, 0); - listView.clearParams(); - if (listView instanceof ObservableListView) { - onScrollChanged(listView.getScrollY(), false, false); - } if (refresh) { refreshContent(false); } else { + listView.scrollTo(0, 0); + listView.clearParams(); + onScrollChanged(listView.getScrollY(), false, false); updateListAdapter(); } updateListBackgroundHeight(); @@ -836,44 +857,34 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis } } + public void updateDashboard() { + if (visibleType == DashboardType.ROUTE_PREFERENCES) { + refreshContent(false); + } + } + private void applyDayNightMode() { - if (nightMode) { - if (listBackgroundView != null) { - listBackgroundView.setBackgroundColor(mapActivity.getResources().getColor(R.color.ctx_menu_info_view_bg_dark)); - } else { - listView.setBackgroundColor(mapActivity.getResources().getColor(R.color.ctx_menu_info_view_bg_dark)); - listEmptyTextView.setBackgroundColor(mapActivity.getResources().getColor(R.color.ctx_menu_info_view_bg_dark)); - } - if (visibleType != DashboardType.WAYPOINTS && visibleType != DashboardType.MAP_MARKERS - && visibleType != DashboardType.MAP_MARKERS_SELECTION) { - Drawable d = new ColorDrawable(mapActivity.getResources().getColor(R.color.dashboard_divider_dark)); - listView.setDivider(d); - listView.setDividerHeight(dpToPx(1f)); - } else { - listView.setDivider(null); - } + final int backgroundColor; + backgroundColor = ContextCompat.getColor(mapActivity, + nightMode ? R.color.ctx_menu_info_view_bg_dark + : R.color.ctx_menu_info_view_bg_light); + Drawable dividerDrawable = new ColorDrawable(ContextCompat.getColor(mapActivity, + nightMode ? R.color.dashboard_divider_dark : R.color.dashboard_divider_light)); + + if (listBackgroundView != null) { + listBackgroundView.setBackgroundColor(backgroundColor); } else { - if (listBackgroundView != null) { - listBackgroundView.setBackgroundColor(mapActivity.getResources().getColor(R.color.ctx_menu_info_view_bg_light)); - } else { - listView.setBackgroundColor(mapActivity.getResources().getColor(R.color.ctx_menu_info_view_bg_light)); - listEmptyTextView.setBackgroundColor(mapActivity.getResources().getColor(R.color.ctx_menu_info_view_bg_light)); - } - if (visibleType != DashboardType.WAYPOINTS && visibleType != DashboardType.MAP_MARKERS - && visibleType != DashboardType.MAP_MARKERS_SELECTION) { - Drawable d = new ColorDrawable(mapActivity.getResources().getColor(R.color.dashboard_divider_light)); - listView.setDivider(d); - listView.setDividerHeight(dpToPx(1f)); - } else { - listView.setDivider(null); - } +// listView.setBackgroundColor(backgroundColor); + listEmptyTextView.setBackgroundColor(backgroundColor); + } + if (visibleType != DashboardType.WAYPOINTS && visibleType != DashboardType.MAP_MARKERS + && visibleType != DashboardType.MAP_MARKERS_SELECTION) { + listView.setDivider(dividerDrawable); + listView.setDividerHeight(dpToPx(1f)); + } else { + listView.setDivider(null); } AndroidUtils.setTextSecondaryColor(mapActivity, listEmptyTextView, nightMode); - /* - listView.setOverscrollFooter(new ColorDrawable( - nightMode ? mapActivity.getResources().getColor(R.color.ctx_menu_info_view_bg_dark) - : mapActivity.getResources().getColor(R.color.ctx_menu_info_view_bg_light))); - */ } private int dpToPx(float dp) { @@ -928,20 +939,20 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis } else { - if (DashboardType.CONFIGURE_SCREEN == visibleType) { + if (visibleType == DashboardType.CONFIGURE_SCREEN) { cm = mapActivity.getMapLayers().getMapWidgetRegistry().getViewConfigureMenuAdapter(mapActivity); - } else if (DashboardType.CONFIGURE_MAP == visibleType) { + } else if (visibleType == DashboardType.CONFIGURE_MAP) { cm = new ConfigureMapMenu().createListAdapter(mapActivity); - } else if (DashboardType.LIST_MENU == visibleType) { + } else if (visibleType == DashboardType.LIST_MENU) { cm = mapActivity.getMapActions().createMainOptionsMenu(); - } else if (DashboardType.ROUTE_PREFERENCES == visibleType) { + } else if (visibleType == DashboardType.ROUTE_PREFERENCES) { RoutePreferencesMenu routePreferencesMenu = new RoutePreferencesMenu(mapActivity); ArrayAdapter listAdapter = routePreferencesMenu.getRoutePreferencesDrawerAdapter(nightMode); OnItemClickListener listener = routePreferencesMenu.getItemClickListener(listAdapter); updateListAdapter(listAdapter, listener); - } else if (DashboardType.UNDERLAY_MAP == visibleType) { + } else if (visibleType == DashboardType.UNDERLAY_MAP) { cm = RasterMapMenu.createListAdapter(mapActivity, OsmandRasterMapsPlugin.RasterMapType.UNDERLAY); - } else if (DashboardType.OVERLAY_MAP == visibleType) { + } else if (visibleType == DashboardType.OVERLAY_MAP) { cm = RasterMapMenu.createListAdapter(mapActivity, OsmandRasterMapsPlugin.RasterMapType.OVERLAY); } if (cm != null) { @@ -1005,7 +1016,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis hideDashboard(); } } else if (click != null) { - CompoundButton btn = (CompoundButton) view.findViewById(R.id.check_item); + CompoundButton btn = (CompoundButton) view.findViewById(R.id.toggle_item); if (btn != null && btn.getVisibility() == View.VISIBLE) { btn.setChecked(!btn.isChecked()); } else { @@ -1289,10 +1300,12 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis setAlpha(dashboardView.findViewById(R.id.map_part_dashboard), malpha, baseColor); gradientToolbar.setAlpha((int) ((1 - t) * 255)); setAlpha(dashboardView, (int) (t * 128), 0); + View toolbar = dashboardView.findViewById(R.id.toolbar); if (t < 1) { - dashboardView.findViewById(R.id.toolbar).setBackgroundDrawable(gradientToolbar); + //noinspection deprecation + toolbar.setBackgroundDrawable(gradientToolbar); } else { - dashboardView.findViewById(R.id.toolbar).setBackgroundColor(0xff000000 | baseColor); + toolbar.setBackgroundColor(0xff000000 | baseColor); } } } @@ -1568,7 +1581,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis } else if (listBackgroundView != null) { tileBoxHeightPx = 3 * (mFlexibleSpaceImageHeight - mFlexibleBlurSpaceHeight) / 4; } - mapView.fitRectToMap(left, right, top, bottom, tileBoxWidthPx, tileBoxHeightPx, mFlexibleBlurSpaceHeight * 3/2); + mapView.fitRectToMap(left, right, top, bottom, tileBoxWidthPx, tileBoxHeightPx, mFlexibleBlurSpaceHeight * 3 / 2); } } } diff --git a/OsmAnd/src/net/osmand/plus/dashboard/tools/DashboardSettingsDialogFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/tools/DashboardSettingsDialogFragment.java index aedd73f46d..dab6bb3ab3 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/tools/DashboardSettingsDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/tools/DashboardSettingsDialogFragment.java @@ -99,9 +99,9 @@ public class DashboardSettingsDialogFragment extends DialogFragment } mapActivity.getDashboard().refreshDashboardFragments(); settings.SHOW_DASHBOARD_ON_START.set( - ((CompoundButton) showDashboardOnStart.findViewById(R.id.check_item)).isChecked()); + ((CompoundButton) showDashboardOnStart.findViewById(R.id.toggle_item)).isChecked()); settings.SHOW_DASHBOARD_ON_MAP_SCREEN.set( - ((CompoundButton) accessFromMap.findViewById(R.id.check_item)).isChecked()); + ((CompoundButton) accessFromMap.findViewById(R.id.toggle_item)).isChecked()); mapActivity.getMapLayers().getMapControlsLayer().initDasboardRelatedControls(); } }) @@ -121,7 +121,7 @@ public class DashboardSettingsDialogFragment extends DialogFragment final TextView subtextView = (TextView) view.findViewById(R.id.subtext); textView.setText(text); subtextView.setText(description); - final CompoundButton compoundButton = (CompoundButton) view.findViewById(R.id.check_item); + final CompoundButton compoundButton = (CompoundButton) view.findViewById(R.id.toggle_item); compoundButton.setChecked(pref.get()); textView.setTextColor(pref.get() ? textColorPrimary : textColorSecondary); @@ -247,7 +247,7 @@ public class DashboardSettingsDialogFragment extends DialogFragment this.dashFragmentAdapter = dashFragmentAdapter; this.numberOfRowsTextView = (TextView) view.findViewById(R.id.numberOfRowsTextView); this.textView = (TextView) view.findViewById(R.id.text); - this.compoundButton = (CompoundButton) view.findViewById(R.id.check_item); + this.compoundButton = (CompoundButton) view.findViewById(R.id.toggle_item); colorBlue = ctx.getResources().getColor(R.color.dashboard_blue); } diff --git a/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java b/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java index ddb8e08d8e..8f0974f212 100644 --- a/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java +++ b/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java @@ -56,7 +56,7 @@ public class OsmandDevelopmentPlugin extends OsmandPlugin { @Override public void registerOptionsMenuItems(final MapActivity mapActivity, ContextMenuAdapter helper) { if (Version.isDeveloperVersion(mapActivity.getMyApplication())) { - helper.item(R.string.version_settings).iconColor(R.drawable.ic_action_gabout_dark) + helper.item(R.string.version_settings).colorIcon(R.drawable.ic_action_gabout_dark) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index 50f9534fe9..108001cde0 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -172,20 +172,20 @@ public class ConfigureMapMenu { adapter.item(R.string.shared_string_show).setCategory(true).layout(R.layout.drawer_list_sub_header).reg(); // String appMode = " [" + settings.getApplicationMode().toHumanString(view.getApplication()) +"] "; adapter.item(R.string.layer_poi).selected(settings.SELECTED_POI_FILTER_FOR_MAP.get() != null ? 1 : 0) - .iconColor(R.drawable.ic_action_info_dark).listen(l).reg(); + .colorIcon(R.drawable.ic_action_info_dark).listen(l).reg(); adapter.item(R.string.layer_amenity_label).selected(settings.SHOW_POI_LABEL.get() ? 1 : 0) - .iconColor(R.drawable.ic_action_text_dark).listen(l).reg(); + .colorIcon(R.drawable.ic_action_text_dark).listen(l).reg(); adapter.item(R.string.shared_string_favorites).selected(settings.SHOW_FAVORITES.get() ? 1 : 0) - .iconColor(R.drawable.ic_action_fav_dark).listen(l).reg(); + .colorIcon(R.drawable.ic_action_fav_dark).listen(l).reg(); adapter.item(R.string.layer_gpx_layer).selected( app.getSelectedGpxHelper().isShowingAnyGpxFiles() ? 1 : 0) - .iconColor(R.drawable.ic_action_polygom_dark) + .colorIcon(R.drawable.ic_action_polygom_dark) .listen(l).reg(); - adapter.item(R.string.layer_map).iconColor(R.drawable.ic_world_globe_dark) + adapter.item(R.string.layer_map).colorIcon(R.drawable.ic_world_globe_dark) .listen(l).reg(); if(TransportRouteHelper.getInstance().routeIsCalculated()){ adapter.item(R.string.layer_transport_route).selected(1) - .iconColor(R.drawable.ic_action_bus_dark).listen(l).reg(); + .colorIcon(R.drawable.ic_action_bus_dark).listen(l).reg(); } OsmandPlugin.registerLayerContextMenu(activity.getMapView(), adapter, activity); diff --git a/OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java index 36f6d8bd5f..e94a3f264e 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/RasterMapMenu.java @@ -21,7 +21,7 @@ public class RasterMapMenu { public static ContextMenuAdapter createListAdapter(final MapActivity mapActivity, final OsmandRasterMapsPlugin.RasterMapType type) { ContextMenuAdapter adapter = new ContextMenuAdapter(mapActivity, false); - adapter.setDefaultLayoutId(R.layout.drawer_list_material_item); + adapter.setDefaultLayoutId(R.layout.list_item_icon_and_menu); createLayersItems(adapter, mapActivity, type); return adapter; } @@ -129,7 +129,7 @@ public class RasterMapMenu { // android:max="255" in layout is expected contextMenuAdapter.item(mapTypeStringTransparency) .layout(R.layout.progress_list_item) - .iconColor(R.drawable.ic_action_opacity) + .colorIcon(R.drawable.ic_action_opacity) .progress(mapTransparencyPreference.get()) .listen(l) .listenInteger(integerListener).reg(); diff --git a/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java b/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java index e6e37d9f76..f3b7629a2e 100644 --- a/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java +++ b/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java @@ -675,7 +675,7 @@ public class DistanceCalculatorPlugin extends OsmandPlugin { return true; } }; - adapter.item(R.string.delete_point).iconColor(R.drawable.ic_action_delete_dark).listen(listener).reg(); + adapter.item(R.string.delete_point).colorIcon(R.drawable.ic_action_delete_dark).listen(listener).reg(); } } } diff --git a/OsmAnd/src/net/osmand/plus/download/ui/DownloadResourceGroupFragment.java b/OsmAnd/src/net/osmand/plus/download/ui/DownloadResourceGroupFragment.java index 804e3cd2bb..5e0021c986 100644 --- a/OsmAnd/src/net/osmand/plus/download/ui/DownloadResourceGroupFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/ui/DownloadResourceGroupFragment.java @@ -399,7 +399,7 @@ public class DownloadResourceGroupFragment extends DialogFragment implements Dow LayoutInflater inflater = LayoutInflater.from(ctx); v = inflater.inflate(R.layout.download_item_list_section, parent, false); } - TextView nameView = ((TextView) v.findViewById(R.id.section_name)); + TextView nameView = ((TextView) v.findViewById(R.id.title)); nameView.setText(section); v.setOnClickListener(null); TypedValue typedValue = new TypedValue(); diff --git a/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java b/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java index 99abe57ccb..6b424e13ef 100644 --- a/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java @@ -955,7 +955,7 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment implement if (group.getSubfolder() != null) { name.append(" ").append(group.getSubfolder()); } - TextView nameView = ((TextView) v.findViewById(R.id.section_name)); + TextView nameView = ((TextView) v.findViewById(R.id.title)); TextView sizeView = ((TextView) v.findViewById(R.id.section_description)); List list = data.get(group); int size = 0; diff --git a/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java b/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java index 7d6a02e23f..f2c9c7af2c 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java @@ -1,9 +1,8 @@ package net.osmand.plus.helpers; -import android.content.DialogInterface; -import android.content.Intent; -import android.net.Uri; -import android.support.v7.app.AlertDialog; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.util.Arrays; import net.osmand.AndroidUtils; import net.osmand.IndexConstants; @@ -25,11 +24,15 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.audionotes.AudioVideoNotesPlugin; import net.osmand.plus.mapcontextmenu.MapContextMenu; import net.osmand.plus.monitoring.OsmandMonitoringPlugin; +import net.osmand.plus.routing.RouteCalculationResult.NextDirectionInfo; +import net.osmand.plus.routing.RouteDirectionInfo; import net.osmand.plus.routing.RoutingHelper; +import net.osmand.router.TurnType; import net.osmand.util.Algorithms; - -import java.io.ByteArrayInputStream; -import java.io.File; +import android.content.DialogInterface; +import android.content.Intent; +import android.net.Uri; +import android.support.v7.app.AlertDialog; public class ExternalApiHelper { @@ -54,7 +57,9 @@ public class ExternalApiHelper { public static final String API_CMD_STOP_GPX_REC = "stop_gpx_rec"; public static final String API_CMD_SUBSCRIBE_VOICE_NOTIFICATIONS = "subscribe_voice_notifications"; - + public static final int VERSION_CODE = 1; + + public static final String PARAM_NAME = "name"; public static final String PARAM_DESC = "desc"; public static final String PARAM_CATEGORY = "category"; @@ -75,9 +80,16 @@ public class ExternalApiHelper { public static final String PARAM_DEST_LON = "dest_lon"; public static final String PARAM_PROFILE = "profile"; + public static final String PARAM_VERSION = "version"; public static final String PARAM_ETA = "eta"; public static final String PARAM_TIME_LEFT = "time_left"; public static final String PARAM_DISTANCE_LEFT = "time_distance_left"; + public static final String PARAM_NT_DISTANCE = "turn_distance"; + public static final String PARAM_NT_IMMINENT = "turn_imminent"; + public static final String PARAM_NT_DIRECTION_NAME = "turn_name"; + public static final String PARAM_NT_DIRECTION_TURN = "turn_type"; + public static final String PARAM_NT_DIRECTION_LANES = "turn_lanes"; + public static final ApplicationMode[] VALID_PROFILES = new ApplicationMode[]{ ApplicationMode.CAR, @@ -95,6 +107,7 @@ public class ExternalApiHelper { public static final int RESULT_CODE_ERROR_GPX_NOT_FOUND = 20; public static final int RESULT_CODE_ERROR_INVALID_PROFILE = 30; + private MapActivity mapActivity; private int resultCode; private boolean finish; @@ -260,13 +273,27 @@ public class ExternalApiHelper { } final RoutingHelper routingHelper = app.getRoutingHelper(); - if (routingHelper.isFollowingMode()) { + if (routingHelper.isRouteCalculated()) { int time = routingHelper.getLeftTime(); result.putExtra(PARAM_TIME_LEFT, time); long eta = time + System.currentTimeMillis() / 1000; result.putExtra(PARAM_ETA, eta); result.putExtra(PARAM_DISTANCE_LEFT, routingHelper.getLeftDistance()); + + NextDirectionInfo ni = routingHelper.getNextRouteDirectionInfo(new NextDirectionInfo(), true); + if(ni.distanceTo > 0) { + updateTurnInfo("next_", result, ni); + ni = routingHelper.getNextRouteDirectionInfoAfter(ni, new NextDirectionInfo(), true); + if(ni.distanceTo > 0) { + updateTurnInfo("after_next", result, ni); + } + } + routingHelper.getNextRouteDirectionInfo(new NextDirectionInfo(), false); + if(ni.distanceTo > 0) { + updateTurnInfo("no_speak_next_", result, ni); + } } + result.putExtra(PARAM_VERSION, VERSION_CODE); finish = true; resultCode = RESULT_CODE_OK; @@ -359,6 +386,20 @@ public class ExternalApiHelper { return result; } + private void updateTurnInfo(String prefix, Intent result, NextDirectionInfo ni) { + result.putExtra(prefix + PARAM_NT_DISTANCE, ni.distanceTo); + result.putExtra(prefix + PARAM_NT_IMMINENT, ni.imminent); + if(ni.directionInfo != null && ni.directionInfo.getTurnType() != null) { + TurnType tt = ni.directionInfo.getTurnType(); + RouteDirectionInfo a = ni.directionInfo; + result.putExtra(prefix + PARAM_NT_DIRECTION_NAME, RoutingHelper.formatStreetName(a.getStreetName(), a.getRef(), a.getDestinationName())); + result.putExtra(prefix + PARAM_NT_DIRECTION_TURN, tt.toXmlString()); + if(tt.getLanes() != null) { + result.putExtra(prefix + PARAM_NT_DIRECTION_LANES, Arrays.toString(tt.getLanes())); + } + } + } + private void showOnMap(double lat, double lon, Object object, PointDescription pointDescription) { MapContextMenu mapContextMenu = mapActivity.getContextMenu(); mapContextMenu.setMapCenter(new LatLon(lat, lon)); diff --git a/OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java b/OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java index a0a72aadf7..c94f636d1f 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java @@ -208,7 +208,7 @@ public class GpxUiHelper { s = s.replace('_', ' '); adapter.item(s).selected(multipleChoice ? 0 : -1) - .iconColor(R.drawable.ic_action_polygom_dark).reg(); + .colorIcon(R.drawable.ic_action_polygom_dark).reg(); //if there's some selected files - need to mark them as selected if (selectedGpxList != null) { @@ -302,7 +302,7 @@ public class GpxUiHelper { // tv.setCompoundDrawablesWithIntrinsicBounds(adapter.getImageId(position, light), 0, 0, 0); // } // tv.setCompoundDrawablePadding(padding); - final CheckBox ch = ((CheckBox) v.findViewById(R.id.check_item)); + final CheckBox ch = ((CheckBox) v.findViewById(R.id.toggle_item)); if (adapter.getSelection(position) == -1) { ch.setVisibility(View.INVISIBLE); } else { diff --git a/OsmAnd/src/net/osmand/plus/helpers/MapMarkerDialogHelper.java b/OsmAnd/src/net/osmand/plus/helpers/MapMarkerDialogHelper.java index 1395aa1f51..d5e055d300 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/MapMarkerDialogHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/MapMarkerDialogHelper.java @@ -271,7 +271,7 @@ public class MapMarkerDialogHelper { protected View createItemForCategory(final ArrayAdapter listAdapter, final int type) { View v = mapActivity.getLayoutInflater().inflate(R.layout.waypoint_header, null); - v.findViewById(R.id.check_item).setVisibility(View.GONE); + v.findViewById(R.id.toggle_item).setVisibility(View.GONE); v.findViewById(R.id.ProgressBar).setVisibility(View.GONE); if (type == MARKERS_HISTORY) { diff --git a/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java b/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java index ed52eb7a21..5233554f8d 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java @@ -649,7 +649,7 @@ public class WaypointDialogHelper { final int position, final ArrayAdapter thisAdapter, boolean nightMode) { View v; v = ctx.getLayoutInflater().inflate(R.layout.waypoint_header, null); - final CompoundButton btn = (CompoundButton) v.findViewById(R.id.check_item); + final CompoundButton btn = (CompoundButton) v.findViewById(R.id.toggle_item); btn.setVisibility(waypointHelper.isTypeConfigurable(type) ? View.VISIBLE : View.GONE); btn.setOnCheckedChangeListener(null); final boolean checked = waypointHelper.isTypeEnabled(type); diff --git a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesFragment.java b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesFragment.java index f14180473f..d28c5ac7b8 100644 --- a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesFragment.java +++ b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesFragment.java @@ -352,12 +352,12 @@ public class LiveUpdatesFragment extends BaseOsmAndFragment implements InAppList LayoutInflater inflater = LayoutInflater.from(ctx); view = inflater.inflate(R.layout.list_group_title_with_switch, parent, false); } - TextView nameView = ((TextView) view.findViewById(R.id.section_name)); + TextView nameView = ((TextView) view.findViewById(R.id.title)); nameView.setText(group); view.setOnClickListener(null); - final SwitchCompat liveUpdatesSwitch = (SwitchCompat) view.findViewById(R.id.liveUpdatesSwitch); + final SwitchCompat liveUpdatesSwitch = (SwitchCompat) view.findViewById(R.id.toggle_item); View topShadowView = view.findViewById(R.id.bottomShadowView); if (groupPosition == SHOULD_UPDATE_GROUP_POSITION) { topShadowView.setVisibility(View.GONE); diff --git a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesSettingsDialogFragment.java b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesSettingsDialogFragment.java index a88e1d21b6..b6232744b5 100644 --- a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesSettingsDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesSettingsDialogFragment.java @@ -62,7 +62,7 @@ public class LiveUpdatesSettingsDialogFragment extends DialogFragment { final TextView regionNameTextView = (TextView) view.findViewById(R.id.regionNameTextView); final TextView lastMapChangeTextView = (TextView) view.findViewById(R.id.lastMapChangeTextView); final TextView lastUpdateTextView = (TextView) view.findViewById(R.id.lastUpdateTextView); - final SwitchCompat liveUpdatesSwitch = (SwitchCompat) view.findViewById(R.id.liveUpdatesSwitch); + final SwitchCompat liveUpdatesSwitch = (SwitchCompat) view.findViewById(R.id.toggle_item); final CheckBox downloadOverWiFiCheckBox = (CheckBox) view.findViewById(R.id.downloadOverWiFiSwitch); final Spinner updateFrequencySpinner = (Spinner) view.findViewById(R.id.updateFrequencySpinner); final Spinner updateTimesOfDaySpinner = (Spinner) view.findViewById(R.id.updateTimesOfDaySpinner); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/RoutePreferencesMenu.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/RoutePreferencesMenu.java index 8a94993485..372ed6f84f 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/RoutePreferencesMenu.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/RoutePreferencesMenu.java @@ -70,6 +70,11 @@ public class RoutePreferencesMenu { public static class LocalRoutingParameter { public GeneralRouter.RoutingParameter routingParameter; + private ApplicationMode am; + + public LocalRoutingParameter(ApplicationMode am) { + this.am = am; + } public String getText(MapActivity mapActivity) { return SettingsBaseActivity.getRoutingStringPropertyName(mapActivity, routingParameter.getId(), @@ -79,33 +84,66 @@ public class RoutePreferencesMenu { public boolean isSelected(OsmandSettings settings) { final OsmandSettings.CommonPreference property = settings.getCustomRoutingBooleanProperty(routingParameter .getId()); - return property.get(); + if(am != null) { + return property.getModeValue(am); + } else { + return property.get(); + } } public void setSelected(OsmandSettings settings, boolean isChecked) { final OsmandSettings.CommonPreference property = settings.getCustomRoutingBooleanProperty(routingParameter .getId()); - property.set(isChecked); + if(am != null) { + property.setModeValue(am, isChecked); + } else { + property.set(isChecked); + } } } private static class MuteSoundRoutingParameter extends LocalRoutingParameter { + + public MuteSoundRoutingParameter() { + super(null); + } } private static class InterruptMusicRoutingParameter extends LocalRoutingParameter { + + public InterruptMusicRoutingParameter() { + super(null); + } } private static class VoiceGuidanceRoutingParameter extends LocalRoutingParameter { + + public VoiceGuidanceRoutingParameter() { + super(null); + } } private static class AvoidRoadsRoutingParameter extends LocalRoutingParameter { + + public AvoidRoadsRoutingParameter() { + super(null); + } + } private static class GpxLocalRoutingParameter extends LocalRoutingParameter { + + public GpxLocalRoutingParameter() { + super(null); + } } private static class OtherSettingsRoutingParameter extends LocalRoutingParameter { + + public OtherSettingsRoutingParameter() { + super(null); + } } private static class OtherLocalRoutingParameter extends LocalRoutingParameter { @@ -114,6 +152,7 @@ public class RoutePreferencesMenu { public int id; public OtherLocalRoutingParameter(int id, String text, boolean selected) { + super(null); this.text = text; this.selected = selected; this.id = id; @@ -253,21 +292,22 @@ public class RoutePreferencesMenu { if (obj instanceof OtherSettingsRoutingParameter) { final Intent settings = new Intent(mapActivity, SettingsNavigationActivity.class); settings.putExtra(SettingsNavigationActivity.INTENT_SKIP_DIALOG, true); + settings.putExtra(SettingsBaseActivity.INTENT_APP_MODE, routingHelper.getAppMode().getStringKey()); mapActivity.startActivity(settings); } else if (obj instanceof MuteSoundRoutingParameter) { - final CompoundButton btn = (CompoundButton) view.findViewById(R.id.check_item); + final CompoundButton btn = (CompoundButton) view.findViewById(R.id.toggle_item); btn.performClick(); } else if (obj instanceof VoiceGuidanceRoutingParameter) { doSelectVoiceGuidance(); } else if (obj instanceof InterruptMusicRoutingParameter) { - final CompoundButton btn = (CompoundButton) view.findViewById(R.id.check_item); + final CompoundButton btn = (CompoundButton) view.findViewById(R.id.toggle_item); btn.performClick(); } else if (obj instanceof AvoidRoadsRoutingParameter) { selectRestrictedRoads(); } else if (view.findViewById(R.id.GPXRouteSpinner) != null) { showOptionsMenu((TextView) view.findViewById(R.id.GPXRouteSpinner)); } else { - CheckBox ch = (CheckBox) view.findViewById(R.id.check_item); + CheckBox ch = (CheckBox) view.findViewById(R.id.toggle_item); if (ch != null) { ch.setChecked(!ch.isChecked()); } @@ -290,7 +330,7 @@ public class RoutePreferencesMenu { v.findViewById(R.id.select_button).setVisibility(View.GONE); ((ImageView) v.findViewById(R.id.icon)) .setImageDrawable(app.getIconsCache().getContentIcon(R.drawable.ic_action_volume_up, !nightMode)); - final CompoundButton btn = (CompoundButton) v.findViewById(R.id.check_item); + final CompoundButton btn = (CompoundButton) v.findViewById(R.id.toggle_item); btn.setVisibility(View.VISIBLE); btn.setChecked(!routingHelper.getVoiceRouter().isMute()); btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @@ -310,7 +350,7 @@ public class RoutePreferencesMenu { AndroidUtils.setListItemBackground(mapActivity, v, nightMode); ((ImageView) v.findViewById(R.id.icon)) .setImageDrawable(app.getIconsCache().getContentIcon(R.drawable.ic_action_road_works_dark, !nightMode)); - v.findViewById(R.id.check_item).setVisibility(View.GONE); + v.findViewById(R.id.toggle_item).setVisibility(View.GONE); final TextView btn = (TextView) v.findViewById(R.id.select_button); btn.setTextColor(btn.getLinkTextColors()); btn.setOnClickListener(new View.OnClickListener() { @@ -335,7 +375,7 @@ public class RoutePreferencesMenu { AndroidUtils.setListItemBackground(mapActivity, v, nightMode); v.findViewById(R.id.icon).setVisibility(View.GONE); v.findViewById(R.id.description_text).setVisibility(View.GONE); - v.findViewById(R.id.check_item).setVisibility(View.GONE); + v.findViewById(R.id.toggle_item).setVisibility(View.GONE); final TextView btn = (TextView) v.findViewById(R.id.select_button); btn.setTextColor(btn.getLinkTextColors()); String voiceProvider = settings.VOICE_PROVIDER.get(); @@ -369,7 +409,7 @@ public class RoutePreferencesMenu { AndroidUtils.setListItemBackground(mapActivity, v, nightMode); v.findViewById(R.id.select_button).setVisibility(View.GONE); v.findViewById(R.id.icon).setVisibility(View.GONE); - final CompoundButton btn = (CompoundButton) v.findViewById(R.id.check_item); + final CompoundButton btn = (CompoundButton) v.findViewById(R.id.toggle_item); btn.setVisibility(View.VISIBLE); btn.setChecked(settings.INTERRUPT_MUSIC.get()); btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @@ -408,7 +448,7 @@ public class RoutePreferencesMenu { TextView titleView = (TextView) v.findViewById(R.id.title); titleView.setText(R.string.routing_settings_2); AndroidUtils.setTextPrimaryColor(mapActivity, titleView, nightMode); - v.findViewById(R.id.check_item).setVisibility(View.GONE); + v.findViewById(R.id.toggle_item).setVisibility(View.GONE); return v; } return inflateRoutingParameter(position); @@ -418,14 +458,14 @@ public class RoutePreferencesMenu { View v = mapActivity.getLayoutInflater().inflate(R.layout.layers_list_activity_item, null); AndroidUtils.setListItemBackground(mapActivity, v, nightMode); final TextView tv = (TextView) v.findViewById(R.id.title); - final CheckBox ch = ((CheckBox) v.findViewById(R.id.check_item)); + final CheckBox ch = ((CheckBox) v.findViewById(R.id.toggle_item)); final LocalRoutingParameter rp = getItem(position); AndroidUtils.setTextPrimaryColor(mapActivity, tv, nightMode); tv.setText(rp.getText(mapActivity)); ch.setOnCheckedChangeListener(null); if (rp.routingParameter != null && rp.routingParameter.getId().equals("short_way")) { // if short route settings - it should be inverse of fast_route_mode - ch.setChecked(!settings.FAST_ROUTE_MODE.get()); + ch.setChecked(!settings.FAST_ROUTE_MODE.getModeValue(routingHelper.getAppMode())); } else { ch.setChecked(rp.isSelected(settings)); } @@ -435,7 +475,7 @@ public class RoutePreferencesMenu { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // if short way that it should set valut to fast mode opposite of current if (rp.routingParameter != null && rp.routingParameter.getId().equals("short_way")) { - settings.FAST_ROUTE_MODE.set(!isChecked); + settings.FAST_ROUTE_MODE.setModeValue(routingHelper.getAppMode(), !isChecked); } rp.setSelected(settings, isChecked); @@ -550,7 +590,7 @@ public class RoutePreferencesMenu { } for (GeneralRouter.RoutingParameter r : rm.getParameters().values()) { if (r.getType() == GeneralRouter.RoutingParameterType.BOOLEAN) { - LocalRoutingParameter rp = new LocalRoutingParameter(); + LocalRoutingParameter rp = new LocalRoutingParameter(am); rp.routingParameter = r; list.add(rp); } diff --git a/OsmAnd/src/net/osmand/plus/monitoring/OsmandMonitoringPlugin.java b/OsmAnd/src/net/osmand/plus/monitoring/OsmandMonitoringPlugin.java index 28025873c3..cf8fd160b6 100644 --- a/OsmAnd/src/net/osmand/plus/monitoring/OsmandMonitoringPlugin.java +++ b/OsmAnd/src/net/osmand/plus/monitoring/OsmandMonitoringPlugin.java @@ -140,12 +140,12 @@ public class OsmandMonitoringPlugin extends OsmandPlugin { return true; } }; - adapter.item(R.string.context_menu_item_add_waypoint).iconColor(R.drawable.ic_action_gnew_label_dark) + adapter.item(R.string.context_menu_item_add_waypoint).colorIcon(R.drawable.ic_action_gnew_label_dark) .listen(listener).reg(); if (selectedObj instanceof WptPt) { WptPt pt = (WptPt) selectedObj; if (app.getSelectedGpxHelper().getSelectedGPXFile(pt) != null) { - adapter.item(R.string.context_menu_item_edit_waypoint).iconColor(R.drawable.ic_action_edit_dark) + adapter.item(R.string.context_menu_item_edit_waypoint).colorIcon(R.drawable.ic_action_edit_dark) .listen(listener).reg(); } } diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index cc714bdcd6..83e468ba40 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -276,7 +276,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { v.findViewById(R.id.divider).setVisibility(View.GONE); v.findViewById(R.id.options).setVisibility(View.GONE); v.findViewById(R.id.stop).setVisibility(View.VISIBLE); - v.findViewById(R.id.check_item).setVisibility(View.GONE); + v.findViewById(R.id.toggle_item).setVisibility(View.GONE); } @Override @@ -801,7 +801,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { options.setVisibility(View.VISIBLE); } - final CompoundButton checkItem = (CompoundButton) v.findViewById(R.id.check_item); + final CompoundButton checkItem = (CompoundButton) v.findViewById(R.id.toggle_item); if (isSelectedGroup(groupPosition)) { checkItem.setVisibility(View.VISIBLE); v.findViewById(R.id.options).setVisibility(View.GONE); @@ -1356,6 +1356,6 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { TextView descr = ((TextView) v.findViewById(R.id.description)); descr.setVisibility(View.GONE); - v.findViewById(R.id.check_item).setVisibility(View.GONE); + v.findViewById(R.id.toggle_item).setVisibility(View.GONE); } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java index 33bdf603c6..1588e750dd 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java @@ -532,7 +532,9 @@ public class OsmBugsLayer extends OsmandMapLayer implements IContextMenuProvider @Override public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List res) { - getBugFromPoint(tileBox, point, res); + if (tileBox.getZoom() >= startZoom) { + getBugFromPoint(tileBox, point, res); + } } @Override diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java index e7d754cffc..f7fa3c381a 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java @@ -216,15 +216,15 @@ public class OsmEditingPlugin extends OsmandPlugin { isEditable = !amenity.getType().isWiki() && !poiType.isNotEditableOsm(); } if (isEditable) { - adapter.item(R.string.poi_context_menu_modify).iconColor(R.drawable.ic_action_edit_dark).listen(listener).position(1).reg(); - adapter.item(R.string.poi_context_menu_delete).iconColor(R.drawable.ic_action_delete_dark).listen(listener).position(2).reg(); + adapter.item(R.string.poi_context_menu_modify).colorIcon(R.drawable.ic_action_edit_dark).listen(listener).position(1).reg(); + adapter.item(R.string.poi_context_menu_delete).colorIcon(R.drawable.ic_action_delete_dark).listen(listener).position(2).reg(); } else if (selectedObj instanceof OpenstreetmapPoint && ((OpenstreetmapPoint) selectedObj).getAction() != Action.DELETE) { adapter.item(R.string.poi_context_menu_modify_osm_change) - .iconColor(R.drawable.ic_action_edit_dark).listen(listener).position(1).reg(); + .colorIcon(R.drawable.ic_action_edit_dark).listen(listener).position(1).reg(); } else { - adapter.item(R.string.context_menu_item_create_poi).iconColor(R.drawable.ic_action_plus_dark).listen(listener).position(-1).reg(); + adapter.item(R.string.context_menu_item_create_poi).colorIcon(R.drawable.ic_action_plus_dark).listen(listener).position(-1).reg(); } - adapter.item(R.string.context_menu_item_open_note).iconColor(R.drawable.ic_action_bug_dark).listen(listener).reg(); + adapter.item(R.string.context_menu_item_open_note).colorIcon(R.drawable.ic_action_bug_dark).listen(listener).reg(); } @Override @@ -240,7 +240,7 @@ public class OsmEditingPlugin extends OsmandPlugin { @Override public void registerLayerContextMenuActions(OsmandMapTileView mapView, ContextMenuAdapter adapter, final MapActivity mapActivity) { adapter.item(R.string.layer_osm_bugs).selected(settings.SHOW_OSM_BUGS.get() ? 1 : 0) - .iconColor(R.drawable.ic_action_bug_dark).listen(new OnContextMenuClick() { + .colorIcon(R.drawable.ic_action_bug_dark).listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { @@ -263,7 +263,7 @@ public class OsmEditingPlugin extends OsmandPlugin { public void contextMenuFragment(final Activity la, final Fragment fragment, final Object info, ContextMenuAdapter adapter) { if (fragment instanceof AvailableGPXFragment) { adapter.item(R.string.local_index_mi_upload_gpx) - .iconColor(R.drawable.ic_action_export) + .colorIcon(R.drawable.ic_action_export) .listen(new OnContextMenuClick() { @Override diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsLayer.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsLayer.java index 1649986e56..24e59d1d59 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsLayer.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsLayer.java @@ -56,13 +56,15 @@ public class OsmEditsLayer extends OsmandMapLayer implements ContextMenuLayer.IC @Override public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) { if (tileBox.getZoom() >= startZoom) { - drawPoints(canvas, tileBox, plugin.getDBBug().getOsmbugsPoints()); - drawPoints(canvas, tileBox, plugin.getDBPOI().getOpenstreetmapPoints()); + List fullObjectsLatLon = new ArrayList<>(); + drawPoints(canvas, tileBox, plugin.getDBBug().getOsmbugsPoints(), fullObjectsLatLon); + drawPoints(canvas, tileBox, plugin.getDBPOI().getOpenstreetmapPoints(), fullObjectsLatLon); + this.fullObjectsLatLon = fullObjectsLatLon; } } - private void drawPoints(Canvas canvas, RotatedTileBox tileBox, List objects) { - List fullObjectsLatLon = new ArrayList<>(); + private void drawPoints(Canvas canvas, RotatedTileBox tileBox, List objects, + List fullObjectsLatLon) { for (OsmPoint o : objects) { float x = tileBox.getPixXFromLatLon(o.getLatitude(), o.getLongitude()); float y = tileBox.getPixYFromLatLon(o.getLatitude(), o.getLongitude()); @@ -77,7 +79,6 @@ public class OsmEditsLayer extends OsmandMapLayer implements ContextMenuLayer.IC canvas.drawBitmap(b, x - b.getWidth() / 2, y - b.getHeight() / 2, paintIcon); fullObjectsLatLon.add(new LatLon(o.getLatitude(), o.getLongitude())); } - this.fullObjectsLatLon = fullObjectsLatLon; } @Override @@ -144,7 +145,9 @@ public class OsmEditsLayer extends OsmandMapLayer implements ContextMenuLayer.IC @Override public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List o) { - getOsmEditsFromPoint(point, tileBox, o); + if (tileBox.getZoom() >= startZoom) { + getOsmEditsFromPoint(point, tileBox, o); + } } @Override diff --git a/OsmAnd/src/net/osmand/plus/osmo/DashOsMoFragment.java b/OsmAnd/src/net/osmand/plus/osmo/DashOsMoFragment.java index 4ccca64e8a..b4f0cc0263 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/DashOsMoFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmo/DashOsMoFragment.java @@ -148,7 +148,7 @@ public class DashOsMoFragment extends DashLocationFragment implements OsMoGroups } private void setupHader(final View header) { - trackr = (CompoundButton) header.findViewById(R.id.card_content).findViewById(R.id.check_item); + trackr = (CompoundButton) header.findViewById(R.id.card_content).findViewById(R.id.toggle_item); ImageButton share = (ImageButton) header.findViewById(R.id.share); IconsCache cache = getMyApplication().getIconsCache(); @@ -170,7 +170,7 @@ public class DashOsMoFragment extends DashLocationFragment implements OsMoGroups } View cardContent = header.findViewById(R.id.card_content); - View enableOsmo = header.findViewById(R.id.header_layout).findViewById(R.id.check_item); + View enableOsmo = header.findViewById(R.id.header_layout).findViewById(R.id.toggle_item); View manage = header.findViewById(R.id.manage); if (plugin != null && plugin.getService().isEnabled() ) { cardContent.setVisibility(View.VISIBLE); @@ -184,7 +184,7 @@ public class DashOsMoFragment extends DashLocationFragment implements OsMoGroups return; } - CompoundButton trackr = (CompoundButton) header.findViewById(R.id.check_item); + CompoundButton trackr = (CompoundButton) header.findViewById(R.id.toggle_item); if (plugin != null && plugin.getTracker() != null) { trackr.setChecked(plugin.getTracker().isEnabledTracker()); } @@ -286,7 +286,7 @@ public class DashOsMoFragment extends DashLocationFragment implements OsMoGroups loc.getLongitude()) : null); distances.add(dv); - final CompoundButton enableDevice = (CompoundButton) v.findViewById(R.id.check_item); + final CompoundButton enableDevice = (CompoundButton) v.findViewById(R.id.toggle_item); enableDevice.setVisibility(View.GONE); ImageView icon = (ImageView) v.findViewById(R.id.icon); if (device.isEnabled()) { diff --git a/OsmAnd/src/net/osmand/plus/osmo/OsMoGroupsActivity.java b/OsmAnd/src/net/osmand/plus/osmo/OsMoGroupsActivity.java index 47cf79b397..9386749b4d 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/OsMoGroupsActivity.java +++ b/OsmAnd/src/net/osmand/plus/osmo/OsMoGroupsActivity.java @@ -544,7 +544,7 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements } else if (item.getItemId() == SHARE_ID) { shareOsMoGroup(group.getVisibleName(app), group.getGroupId()); } else if (item.getItemId() == ON_OFF_ACTION_ID) { - CompoundButton bt = ((CompoundButton) MenuItemCompat.getActionView(item).findViewById(R.id.check_item)); + CompoundButton bt = ((CompoundButton) MenuItemCompat.getActionView(item).findViewById(R.id.toggle_item)); onOffAction(bt); } return true; @@ -1228,7 +1228,7 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements } }); } - CompoundButton ci = (CompoundButton) row.findViewById(R.id.check_item); + CompoundButton ci = (CompoundButton) row.findViewById(R.id.toggle_item); if (model.isMainGroup()) { ci.setVisibility(View.GONE); } else { diff --git a/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java b/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java index 9e15a4e823..d6cfc9403d 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java +++ b/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java @@ -274,7 +274,7 @@ public class OsMoPlugin extends OsmandPlugin implements OsMoReactor { @Override public void registerOptionsMenuItems(final MapActivity mapActivity, ContextMenuAdapter helper) { - helper.item(R.string.osmo_groups).iconColor(R.drawable.ic_osmo_dark).position(6) + helper.item(R.string.osmo_groups).colorIcon(R.drawable.ic_osmo_dark).position(6) .listen(new OnContextMenuClick() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { diff --git a/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java b/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java index bf5283bd28..6c81b908f6 100644 --- a/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java +++ b/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java @@ -227,7 +227,7 @@ public class ParkingPositionPlugin extends OsmandPlugin { } }; adapter.item(R.string.context_menu_item_add_parking_point) - .iconColor( R.drawable.ic_action_parking_dark).listen(addListener).reg(); + .colorIcon(R.drawable.ic_action_parking_dark).listen(addListener).reg(); } diff --git a/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java b/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java index d9513fc8ef..8bf8c9395e 100644 --- a/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java +++ b/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java @@ -255,11 +255,11 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin { String overlayMapDescr = settings.MAP_OVERLAY.get(); overlayMapDescr = overlayMapDescr != null ? overlayMapDescr : mapActivity.getString(R.string.shared_string_none); adapter.item(R.string.layer_overlay).layout(R.layout.drawer_list_doubleitem).description(overlayMapDescr) - .iconColor(R.drawable.ic_layer_top_dark).listen(listener).position(14).reg(); + .colorIcon(R.drawable.ic_layer_top_dark).listen(listener).position(14).reg(); String underlayMapDescr = settings.MAP_UNDERLAY.get(); underlayMapDescr = underlayMapDescr != null ? underlayMapDescr : mapActivity.getString(R.string.shared_string_none); adapter.item(R.string.layer_underlay).layout(R.layout.drawer_list_doubleitem).description(underlayMapDescr) - .iconColor(R.drawable.ic_layer_bottom_dark).listen(listener).position(15).reg(); + .colorIcon(R.drawable.ic_layer_bottom_dark).listen(listener).position(15).reg(); } @@ -280,9 +280,9 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin { return true; } }; - adapter.item(R.string.context_menu_item_update_map).iconColor(R.drawable.ic_action_refresh_dark) + adapter.item(R.string.context_menu_item_update_map).colorIcon(R.drawable.ic_action_refresh_dark) .listen(listener).reg(); - adapter.item(R.string.shared_string_download_map).iconColor(R.drawable.ic_action_import) + adapter.item(R.string.shared_string_download_map).colorIcon(R.drawable.ic_action_import) .listen(listener).reg(); } } diff --git a/OsmAnd/src/net/osmand/plus/routepointsnavigation/RoutePointsLayer.java b/OsmAnd/src/net/osmand/plus/routepointsnavigation/RoutePointsLayer.java index 807a219728..59d315298e 100644 --- a/OsmAnd/src/net/osmand/plus/routepointsnavigation/RoutePointsLayer.java +++ b/OsmAnd/src/net/osmand/plus/routepointsnavigation/RoutePointsLayer.java @@ -2,8 +2,8 @@ package net.osmand.plus.routepointsnavigation; import android.graphics.Canvas; import android.graphics.PointF; -import android.os.AsyncTask; import android.widget.ArrayAdapter; + import net.osmand.data.LatLon; import net.osmand.data.PointDescription; import net.osmand.data.RotatedTileBox; @@ -17,9 +17,6 @@ import net.osmand.plus.views.OsmandMapTileView; import java.util.List; -/** - * Created by Barsik on 20.06.2014. - */ public class RoutePointsLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider { private final RoutePointsPlugin plugin; @@ -112,10 +109,10 @@ public class RoutePointsLayer extends OsmandMapLayer implements ContextMenuLaye }; if (plugin.getCurrentRoute().getPointStatus(point)){ - adapter.item(R.string.mark_as_not_visited).iconColor( + adapter.item(R.string.mark_as_not_visited).colorIcon( R.drawable.ic_action_gremove_dark).listen(listener).reg(); } else { - adapter.item(R.string.mark_as_visited).iconColor( + adapter.item(R.string.mark_as_visited).colorIcon( R.drawable.ic_action_done).listen(listener).reg(); } @@ -123,11 +120,11 @@ public class RoutePointsLayer extends OsmandMapLayer implements ContextMenuLaye if (routePoint != null) { if (routePoint.isNextNavigate) { adapter.item(R.string.navigate_to_next) - .iconColor(R.drawable.ic_action_gnext_dark).listen(listener) + .colorIcon(R.drawable.ic_action_gnext_dark).listen(listener) .reg(); } else { adapter.item(R.string.mark_as_current) - .iconColor(R.drawable.ic_action_signpost_dark) + .colorIcon(R.drawable.ic_action_signpost_dark) .listen(listener).reg(); } } diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java index 4277eda5e4..59c8b2ad55 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java @@ -115,7 +115,7 @@ public class SRTMPlugin extends OsmandPlugin { } }; adapter.item(R.string.layer_hillshade).selected(HILLSHADE.get()? 1 : 0) - .iconColor( R.drawable.ic_action_hillshade_dark).listen(listener).position(13).layout(R.layout.drawer_list_item).reg(); + .colorIcon(R.drawable.ic_action_hillshade_dark).listen(listener).position(13).layout(R.layout.drawer_list_item).reg(); } @Override diff --git a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java index 323740322a..daf3283f5f 100644 --- a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java @@ -143,7 +143,7 @@ public class ContextMenuLayer extends OsmandMapLayer { } }; adapter.item(R.string.shared_string_show_description) - .iconColor(R.drawable.ic_action_note_dark).listen(listener) + .colorIcon(R.drawable.ic_action_note_dark).listen(listener) .reg(); } } diff --git a/OsmAnd/src/net/osmand/plus/views/GPXLayer.java b/OsmAnd/src/net/osmand/plus/views/GPXLayer.java index 6366f6b7c4..37a8db7411 100644 --- a/OsmAnd/src/net/osmand/plus/views/GPXLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/GPXLayer.java @@ -140,7 +140,7 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex private int updatePaints(int color, boolean routePoints, boolean currentTrack, DrawSettings nightMode, RotatedTileBox tileBox){ RenderingRulesStorage rrs = view.getApplication().getRendererRegistry().getCurrentSelectedRenderer(); final boolean isNight = nightMode != null && nightMode.isNightMode(); - int hsh = calculateHash(rrs, routePoints, isNight, tileBox.getMapDensity()); + int hsh = calculateHash(rrs, routePoints, isNight, tileBox.getMapDensity(), tileBox.getZoom()); if (hsh != cachedHash) { cachedHash = hsh; cachedColor = view.getResources().getColor(R.color.gpx_track); @@ -168,6 +168,8 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex if (currentTrack) { additional = (additional.length() == 0 ? "" : ";") + "currentTrack=true"; } + req.setIntFilter(rrs.PROPS.R_MINZOOM, tileBox.getZoom()); + req.setIntFilter(rrs.PROPS.R_MAXZOOM, tileBox.getZoom()); if (additional.length() > 0) { req.setStringFilter(rrs.PROPS.R_ADDITIONAL, additional); } @@ -280,13 +282,13 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex true).getIntrinsicWidth() * 3 / 2.5f; QuadTree boundIntersections = initBoundIntersections(tileBox); + List fullObjectsLatLon = new ArrayList<>(); + List smallObjectsLatLon = new ArrayList<>(); // request to load final QuadRect latLonBounds = tileBox.getLatLonBounds(); for (SelectedGpxFile g : selectedGPXFiles) { List pts = getListStarPoints(g); List fullObjects = new ArrayList<>(); - List fullObjectsLatLon = new ArrayList<>(); - List smallObjectsLatLon = new ArrayList<>(); int fcolor = g.getColor() == 0 ? defPointColor : g.getColor(); for (WptPt o : pts) { if (o.lat >= latLonBounds.bottom && o.lat <= latLonBounds.top @@ -315,9 +317,9 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex FavoriteImageDrawable fid = FavoriteImageDrawable.getOrCreate(view.getContext(), pointColor, true); fid.drawBitmapInCenter(canvas, x, y); } - this.fullObjectsLatLon = fullObjectsLatLon; - this.smallObjectsLatLon = smallObjectsLatLon; } + this.fullObjectsLatLon = fullObjectsLatLon; + this.smallObjectsLatLon = smallObjectsLatLon; } } @@ -482,7 +484,9 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex @Override public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List res) { - getWptFromPoint(tileBox, point, res); + if (tileBox.getZoom() >= startZoom) { + getWptFromPoint(tileBox, point, res); + } } @Override diff --git a/OsmAnd/src/net/osmand/plus/views/ImpassableRoadsLayer.java b/OsmAnd/src/net/osmand/plus/views/ImpassableRoadsLayer.java index 63278b6ef6..c24021d753 100644 --- a/OsmAnd/src/net/osmand/plus/views/ImpassableRoadsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/ImpassableRoadsLayer.java @@ -117,18 +117,20 @@ public class ImpassableRoadsLayer extends OsmandMapLayer implements ContextMenuL @Override public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List o) { - int ex = (int) point.x; - int ey = (int) point.y; - int compare = getRadiusPoi(tileBox); - int radius = compare * 3 / 2; + if (tileBox.getZoom() >= startZoom) { + int ex = (int) point.x; + int ey = (int) point.y; + int compare = getRadiusPoi(tileBox); + int radius = compare * 3 / 2; - for (RouteDataObject road : getMissingRoads()) { - Location location = getMissingRoadLocations().get(road.getId()); - int x = (int) tileBox.getPixXFromLatLon(location.getLatitude(), location.getLongitude()); - int y = (int) tileBox.getPixYFromLatLon(location.getLatitude(), location.getLongitude()); - if (calculateBelongs(ex, ey, x, y, compare)) { - compare = radius; - o.add(road); + for (RouteDataObject road : getMissingRoads()) { + Location location = getMissingRoadLocations().get(road.getId()); + int x = (int) tileBox.getPixXFromLatLon(location.getLatitude(), location.getLongitude()); + int y = (int) tileBox.getPixYFromLatLon(location.getLatitude(), location.getLongitude()); + if (calculateBelongs(ex, ey, x, y, compare)) { + compare = radius; + o.add(road); + } } } } @@ -174,7 +176,7 @@ public class ImpassableRoadsLayer extends OsmandMapLayer implements ContextMenuL } }; - adapter.item(R.string.avoid_road).iconColor( + adapter.item(R.string.avoid_road).colorIcon( R.drawable.ic_action_road_works_dark).listen(listener).reg(); } } diff --git a/OsmAnd/src/net/osmand/plus/views/MapMarkersLayer.java b/OsmAnd/src/net/osmand/plus/views/MapMarkersLayer.java index 10256c8e5d..f7f7f21194 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapMarkersLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapMarkersLayer.java @@ -392,6 +392,10 @@ public class MapMarkersLayer extends OsmandMapLayer implements IContextMenuProvi @Override public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List o) { + if (tileBox.getZoom() < 3 || !map.getMyApplication().getSettings().USE_MAP_MARKERS.get()) { + return; + } + MapMarkersHelper markersHelper = map.getMyApplication().getMapMarkersHelper(); List markers = markersHelper.getActiveMapMarkers(); int r = getRadiusPoi(tileBox); diff --git a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java index 70c643f70e..c732bdbae0 100644 --- a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java +++ b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java @@ -820,6 +820,10 @@ public class OsmandMapTileView implements IMapDownloaderCallback { } } if (twoFingerTapDetector.onTouchEvent(event)) { + ContextMenuLayer contextMenuLayer = getLayerByClass(ContextMenuLayer.class); + if (contextMenuLayer != null) { + contextMenuLayer.onTouchEvent(event, getCurrentRotatedTileBox()); + } return true; } diff --git a/OsmAnd/src/net/osmand/plus/views/POIMapLayer.java b/OsmAnd/src/net/osmand/plus/views/POIMapLayer.java index 8ce9038f2f..5b01766d98 100644 --- a/OsmAnd/src/net/osmand/plus/views/POIMapLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/POIMapLayer.java @@ -507,7 +507,9 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon @Override public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List objects) { - getAmenityFromPoint(tileBox, point, objects); + if (tileBox.getZoom() >= startZoom) { + getAmenityFromPoint(tileBox, point, objects); + } } @Override diff --git a/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java b/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java index 6213054f96..53195f2773 100644 --- a/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java @@ -165,7 +165,9 @@ public class PointLocationLayer extends OsmandMapLayer implements ContextMenuLay @Override public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List o) { - getMyLocationFromPoint(tileBox, point, o); + if (tileBox.getZoom() >= 3) { + getMyLocationFromPoint(tileBox, point, o); + } } @Override diff --git a/OsmAnd/src/net/osmand/plus/views/PointNavigationLayer.java b/OsmAnd/src/net/osmand/plus/views/PointNavigationLayer.java index 8eafc1e8d8..462d6d3383 100644 --- a/OsmAnd/src/net/osmand/plus/views/PointNavigationLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/PointNavigationLayer.java @@ -180,24 +180,24 @@ public class PointNavigationLayer extends OsmandMapLayer implements IContextMenu @Override public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List o) { - TargetPointsHelper tg = map.getMyApplication().getTargetPointsHelper(); - List intermediatePoints = tg.getAllPoints(); - int r = getRadiusPoi(tileBox); - for (int i = 0; i < intermediatePoints.size(); i++) { - TargetPoint tp = intermediatePoints.get(i); - LatLon latLon = tp.point; - if (latLon != null) { - int ex = (int) point.x; - int ey = (int) point.y; - int x = (int) tileBox.getPixXFromLatLon(latLon.getLatitude(), latLon.getLongitude()); - int y = (int) tileBox.getPixYFromLatLon(latLon.getLatitude(), latLon.getLongitude()); - if (calculateBelongs(ex, ey, x, y, r)) { - o.add(tp); + if (tileBox.getZoom() >= 3) { + TargetPointsHelper tg = map.getMyApplication().getTargetPointsHelper(); + List intermediatePoints = tg.getAllPoints(); + int r = getRadiusPoi(tileBox); + for (int i = 0; i < intermediatePoints.size(); i++) { + TargetPoint tp = intermediatePoints.get(i); + LatLon latLon = tp.point; + if (latLon != null) { + int ex = (int) point.x; + int ey = (int) point.y; + int x = (int) tileBox.getPixXFromLatLon(latLon.getLatitude(), latLon.getLongitude()); + int y = (int) tileBox.getPixYFromLatLon(latLon.getLatitude(), latLon.getLongitude()); + if (calculateBelongs(ex, ey, x, y, r)) { + o.add(tp); + } } } } - - } private boolean calculateBelongs(int ex, int ey, int objx, int objy, int radius) { diff --git a/OsmAnd/src/net/osmand/plus/views/TransportStopsLayer.java b/OsmAnd/src/net/osmand/plus/views/TransportStopsLayer.java index 6f162c6193..cbff8448f3 100644 --- a/OsmAnd/src/net/osmand/plus/views/TransportStopsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/TransportStopsLayer.java @@ -205,7 +205,9 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa @Override public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List res) { - getFromPoint(tileBox, point, res); + if (tileBox.getZoom() >= startZoom) { + getFromPoint(tileBox, point, res); + } } @Override diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java index b83a6ca6cc..12087c52ea 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java @@ -1,12 +1,12 @@ package net.osmand.plus.views.mapwidgets; -import java.util.Collections; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; +import android.content.Context; +import android.content.DialogInterface; +import android.support.annotation.DrawableRes; +import android.support.annotation.StringRes; +import android.support.v7.app.AlertDialog; +import android.widget.ArrayAdapter; +import android.widget.LinearLayout; import net.osmand.plus.ApplicationMode; import net.osmand.plus.ContextMenuAdapter; @@ -21,37 +21,39 @@ import net.osmand.plus.views.MapInfoLayer; import net.osmand.plus.views.OsmandMapLayer.DrawSettings; import net.osmand.plus.views.OsmandMapTileView; -import android.content.Context; -import android.content.DialogInterface; -import android.support.v7.app.AlertDialog; -import android.widget.ArrayAdapter; -import android.widget.LinearLayout; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; public class MapWidgetRegistry { - + private Set left = new TreeSet(); private Set right = new TreeSet(); private Map> visibleElementsFromSettings = new LinkedHashMap>(); private final OsmandSettings settings; - - + + public MapWidgetRegistry(OsmandSettings settings) { this.settings = settings; - - for(ApplicationMode ms : ApplicationMode.values(settings) ) { + + for (ApplicationMode ms : ApplicationMode.values(settings)) { String mpf = settings.MAP_INFO_CONTROLS.getModeValue(ms); - if(mpf.equals("")) { + if (mpf.equals("")) { visibleElementsFromSettings.put(ms, null); } else { LinkedHashSet set = new LinkedHashSet(); visibleElementsFromSettings.put(ms, set); - Collections.addAll(set, mpf.split(";")); + Collections.addAll(set, mpf.split(";")); } } } - - public void populateStackControl(LinearLayout stack, - ApplicationMode mode, boolean left, boolean expanded) { + + public void populateStackControl(LinearLayout stack, + ApplicationMode mode, boolean left, boolean expanded) { Set s = left ? this.left : this.right; for (MapWidgetRegInfo r : s) { if (r.visible(mode) || r.widget.isExplicitlyVisible()) { @@ -60,14 +62,14 @@ public class MapWidgetRegistry { } if (expanded) { for (MapWidgetRegInfo r : s) { - if (r.visibleCollapsed(mode) && + if (r.visibleCollapsed(mode) && !r.widget.isExplicitlyVisible()) { stack.addView(r.widget.getView()); } } } } - + public boolean hasCollapsibles(ApplicationMode mode) { for (MapWidgetRegInfo r : left) { if (r.visibleCollapsed(mode)) { @@ -81,8 +83,8 @@ public class MapWidgetRegistry { } return false; } - - + + public void updateInfo(ApplicationMode mode, DrawSettings drawSettings, boolean expanded) { update(mode, drawSettings, expanded, left); update(mode, drawSettings, expanded, right); @@ -95,8 +97,8 @@ public class MapWidgetRegistry { } } } - - + + public void removeSideWidgetInternal(TextInfoWidget widget) { Iterator it = left.iterator(); while (it.hasNext()) { @@ -111,24 +113,26 @@ public class MapWidgetRegistry { } } } - + public T getSideWidget(Class cl) { - for(MapWidgetRegInfo ri : left) { - if(cl.isInstance(ri)) { + for (MapWidgetRegInfo ri : left) { + if (cl.isInstance(ri)) { return (T) ri.widget; } } - for(MapWidgetRegInfo ri : right) { - if(cl.isInstance(ri)) { + for (MapWidgetRegInfo ri : right) { + if (cl.isInstance(ri)) { return (T) ri.widget; } } return null; } - - public MapWidgetRegInfo registerSideWidgetInternal(TextInfoWidget widget, int drawableMenu, - int messageId, String key, boolean left, int priorityOrder) { - MapWidgetRegInfo ii = new MapWidgetRegInfo(key, widget, drawableMenu, + + public MapWidgetRegInfo registerSideWidgetInternal(TextInfoWidget widget, + @DrawableRes int drawableMenu, + @StringRes int messageId, + String key, boolean left, int priorityOrder) { + MapWidgetRegInfo ii = new MapWidgetRegInfo(key, widget, drawableMenu, messageId, priorityOrder, left); for (ApplicationMode ms : ApplicationMode.values(settings)) { boolean collapse = ms.isWidgetCollapsible(key); @@ -155,14 +159,14 @@ public class MapWidgetRegistry { if (widget != null) { widget.setContentTitle(messageId); } - if(left) { + if (left) { this.left.add(ii); } else { this.right.add(ii); } return ii; } - + private void restoreModes(Set set, Set mi, ApplicationMode mode) { for (MapWidgetRegInfo m : mi) { if (m.visibleModes.contains(mode)) { @@ -174,7 +178,7 @@ public class MapWidgetRegistry { } } } - + public void changeVisibility(MapWidgetRegInfo m) { ApplicationMode mode = settings.APPLICATION_MODE.get(); boolean visible = m.visible(mode); @@ -238,9 +242,9 @@ public class MapWidgetRegistry { } settings.MAP_INFO_CONTROLS.set(bs.toString()); } - - - private void resetDefault(ApplicationMode mode, Set set ){ + + + private void resetDefault(ApplicationMode mode, Set set) { for (MapWidgetRegInfo ri : set) { ri.visibleCollapsible.remove(mode); ri.visibleModes.remove(mode); @@ -253,7 +257,7 @@ public class MapWidgetRegistry { } } } - + public void resetToDefault() { ApplicationMode appMode = settings.getApplicationMode(); resetDefault(appMode, left); @@ -262,7 +266,7 @@ public class MapWidgetRegistry { this.visibleElementsFromSettings.put(appMode, null); settings.MAP_INFO_CONTROLS.set(""); } - + private void resetDefaultAppearance(ApplicationMode appMode) { // settings.SHOW_RULER.resetToDefault(); settings.SHOW_DESTINATION_ARROW.resetToDefault(); @@ -271,13 +275,13 @@ public class MapWidgetRegistry { settings.CENTER_POSITION_ON_MAP.resetToDefault(); settings.MAP_MARKERS_MODE.resetToDefault(); } - + public void addControlsAppearance(final MapActivity map, final ContextMenuAdapter cm, ApplicationMode mode) { // addControlId(mil, cm, R.string.map_widget_show_ruler, settings.SHOW_RULER); addControlId(map, cm, R.string.map_widget_show_destination_arrow, settings.SHOW_DESTINATION_ARROW); addControlId(map, cm, R.string.map_widget_transparent, settings.TRANSPARENT_MAP_THEME); addControlId(map, cm, R.string.always_center_position_on_map, settings.CENTER_POSITION_ON_MAP); - if(mode != ApplicationMode.DEFAULT) { + if (mode != ApplicationMode.DEFAULT) { addControlId(map, cm, R.string.map_widget_top_text, settings.SHOW_STREET_NAME); } if (settings.USE_MAP_MARKERS.get()) { @@ -314,18 +318,18 @@ public class MapWidgetRegistry { bld.show(); return false; } - }).layout(R.layout.drawer_list_doubleitem).reg(); + }).layout(R.layout.list_item_text_button).reg(); } } private void addControlId(final MapActivity map, ContextMenuAdapter cm, int stringId, OsmandPreference pref) { - cm.item(stringId).selected( pref.get() ? 1 : 0) + cm.item(stringId).selected(pref.get() ? 1 : 0) // .icons(r.drawableDark, r.drawableLight) - .listen(new ApearanceOnContextMenuClick(pref, map)).reg(); + .listen(new ApearanceOnContextMenuClick(pref, map)).reg(); } - + class ApearanceOnContextMenuClick implements OnContextMenuClick { - + private MapActivity map; private OsmandPreference pref; @@ -333,49 +337,53 @@ public class MapWidgetRegistry { this.pref = pref; this.map = map; } - + @Override public boolean onContextMenuClick(ArrayAdapter a, int itemId, int pos, boolean isChecked) { pref.set(!pref.get()); map.updateApplicationModeSettings(); - a.notifyDataSetChanged();; + a.notifyDataSetChanged(); + ; return false; } - }; + } - - public static boolean distChanged(int oldDist, int dist){ - if(oldDist != 0 && oldDist - dist < 100 && Math.abs(((float) dist - oldDist)/oldDist) < 0.01){ + ; + + + public static boolean distChanged(int oldDist, int dist) { + if (oldDist != 0 && oldDist - dist < 100 && Math.abs(((float) dist - oldDist) / oldDist) < 0.01) { return false; } return true; } - + public void addControls(MapActivity map, ContextMenuAdapter cm, ApplicationMode mode) { - cm.item(R.string.map_widget_right).setCategory(true).layout(R.layout.drawer_list_sub_header).reg(); + cm.item(R.string.map_widget_right).setCategory(true).layout(R.layout.list_group_title_with_switch).reg(); addControls(map, cm, right, mode); - if(mode != ApplicationMode.DEFAULT) { - cm.item(R.string.map_widget_left).setCategory(true).layout(R.layout.drawer_list_sub_header).reg(); + if (mode != ApplicationMode.DEFAULT) { + cm.item(R.string.map_widget_left).setCategory(true).layout(R.layout.list_group_title_with_switch).reg(); addControls(map, cm, left, mode); } - cm.item(R.string.map_widget_appearance_rem).setCategory(true).layout(R.layout.drawer_list_sub_header).reg(); - addControlsAppearance(map, cm, mode); + cm.item(R.string.map_widget_appearance_rem).setCategory(true).layout(R.layout.list_group_title_with_switch).reg(); + addControlsAppearance(map, cm, mode); } - + public String getText(Context ctx, final ApplicationMode mode, final MapWidgetRegInfo r) { - return (r.visibleCollapsed(mode)? " + " : " ") + ctx.getString(r.messageId); + return (r.visibleCollapsed(mode) ? " + " : " ") + ctx.getString(r.messageId); } - + public Set getRight() { return right; } - + public Set getLeft() { return left; } - - private void addControls(final MapActivity map, final ContextMenuAdapter adapter, Set top, final ApplicationMode mode) { + + private void addControls(final MapActivity map, final ContextMenuAdapter adapter, + Set top, final ApplicationMode mode) { for (final MapWidgetRegInfo r : top) { if (mode == ApplicationMode.DEFAULT) { if ("intermediate_distance".equals(r.key) || "distance".equals(r.key) || "time".equals(r.key)) { @@ -385,33 +393,35 @@ public class MapWidgetRegistry { if ("map_marker_1st".equals(r.key) || "map_marker_2nd".equals(r.key)) { continue; } - adapter.item(r.messageId).selected(r.visibleCollapsed(mode) || r.visible(mode) ? 1 : 0) - .iconColor(r.drawableMenu).listen(new OnContextMenuClick() { - - @Override - public boolean onContextMenuClick(ArrayAdapter a, int itemId, int pos, boolean isChecked) { - changeVisibility(r); - MapInfoLayer mil = map.getMapLayers().getMapInfoLayer(); - if (mil != null) { - mil.recreateControls(); - } - adapter.setItemName(pos, getText(mil.getMapActivity(), mode, r)); - adapter.setSelection(pos, r.visibleCollapsed(mode) || r.visible(mode) ? 1 : 0); - a.notifyDataSetChanged(); - return false; - } - }).reg(); + adapter.item(r.messageId) + .selected(r.visibleCollapsed(mode) || r.visible(mode) ? 1 : 0) + .colorIcon(r.drawableMenu) + .secondaryIconColor(R.drawable.ic_action_additional_option) + .listen(new OnContextMenuClick() { + @Override + public boolean onContextMenuClick(ArrayAdapter a, int itemId, int pos, boolean isChecked) { + changeVisibility(r); + MapInfoLayer mil = map.getMapLayers().getMapInfoLayer(); + if (mil != null) { + mil.recreateControls(); + } + adapter.setItemName(pos, getText(mil.getMapActivity(), mode, r)); + adapter.setSelection(pos, r.visibleCollapsed(mode) || r.visible(mode) ? 1 : 0); + a.notifyDataSetChanged(); + return false; + } + }) + .reg(); adapter.setItemName(adapter.length() - 1, getText(map, mode, r)); } } - - - - public static class MapWidgetRegInfo implements Comparable { + public static class MapWidgetRegInfo implements Comparable { public final TextInfoWidget widget; + @DrawableRes public final int drawableMenu; + @StringRes public final int messageId; public final String key; public final boolean left; @@ -419,9 +429,9 @@ public class MapWidgetRegistry { private final Set visibleCollapsible = new LinkedHashSet(); private final Set visibleModes = new LinkedHashSet(); private Runnable stateChangeListener = null; - - public MapWidgetRegInfo(String key, TextInfoWidget widget, int drawableMenu, - int messageId, int priorityOrder, boolean left) { + + public MapWidgetRegInfo(String key, TextInfoWidget widget, @DrawableRes int drawableMenu, + @StringRes int messageId, int priorityOrder, boolean left) { this.key = key; this.widget = widget; this.drawableMenu = drawableMenu; @@ -429,29 +439,30 @@ public class MapWidgetRegistry { this.priorityOrder = priorityOrder; this.left = left; } - - public boolean visibleCollapsed(ApplicationMode mode){ + + public boolean visibleCollapsed(ApplicationMode mode) { return visibleCollapsible.contains(mode); } - - public boolean visible(ApplicationMode mode){ + + public boolean visible(ApplicationMode mode) { return visibleModes.contains(mode); } - - public MapWidgetRegInfo required(ApplicationMode... modes){ - Collections.addAll(visibleModes, modes); + + public MapWidgetRegInfo required(ApplicationMode... modes) { + Collections.addAll(visibleModes, modes); return this; } - - + + public void setStateChangeListener(Runnable stateChangeListener) { this.stateChangeListener = stateChangeListener; } - + @Override public int hashCode() { return messageId; } + @Override public boolean equals(Object obj) { if (this == obj) @@ -465,21 +476,22 @@ public class MapWidgetRegistry { return false; return true; } + @Override public int compareTo(MapWidgetRegInfo another) { if (messageId == another.messageId) { return 0; } - if(priorityOrder == another.priorityOrder) { + if (priorityOrder == another.priorityOrder) { return messageId - another.messageId; } return priorityOrder - another.priorityOrder; } } - + public ContextMenuAdapter getViewConfigureMenuAdapter(final MapActivity map) { final ContextMenuAdapter cm = new ContextMenuAdapter(map); - cm.setDefaultLayoutId(R.layout.drawer_list_item); + cm.setDefaultLayoutId(R.layout.list_item_icon_and_menu); cm.item(R.string.app_modes_choose).layout(R.layout.mode_toggles).reg(); cm.setChangeAppModeListener(new ConfigureMapMenu.OnClickListener() { @@ -488,20 +500,6 @@ public class MapWidgetRegistry { map.getDashboard().updateListAdapter(getViewConfigureMenuAdapter(map)); } }); - cm.item(R.string.map_widget_reset).iconColor(R.drawable.ic_action_reset_to_default_dark) - .listen(new OnContextMenuClick() { - - @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { - resetToDefault(); - MapInfoLayer mil = map.getMapLayers().getMapInfoLayer(); - if (mil != null) { - mil.recreateControls(); - } - map.getDashboard().updateListAdapter(getViewConfigureMenuAdapter(map)); - return false; - } - }).reg(); final ApplicationMode mode = settings.getApplicationMode(); addControls(map, cm, mode); return cm;