diff --git a/OsmAnd/res/drawable-hdpi/ic_type_audio.png b/OsmAnd/res/drawable-hdpi/ic_type_audio.png
deleted file mode 100644
index 0dcf78638f..0000000000
Binary files a/OsmAnd/res/drawable-hdpi/ic_type_audio.png and /dev/null differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_type_audio.png b/OsmAnd/res/drawable-mdpi/ic_type_audio.png
deleted file mode 100644
index 4a4caeaad3..0000000000
Binary files a/OsmAnd/res/drawable-mdpi/ic_type_audio.png and /dev/null differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_type_audio.png b/OsmAnd/res/drawable-xhdpi/ic_type_audio.png
deleted file mode 100644
index 735f091480..0000000000
Binary files a/OsmAnd/res/drawable-xhdpi/ic_type_audio.png and /dev/null differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_type_audio.png b/OsmAnd/res/drawable-xxhdpi/ic_type_audio.png
deleted file mode 100644
index c6a7816a59..0000000000
Binary files a/OsmAnd/res/drawable-xxhdpi/ic_type_audio.png and /dev/null differ
diff --git a/OsmAnd/res/drawable/ic_action_minimal_distance.xml b/OsmAnd/res/drawable/ic_action_minimal_distance.xml
new file mode 100644
index 0000000000..e46c3e9a61
--- /dev/null
+++ b/OsmAnd/res/drawable/ic_action_minimal_distance.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
diff --git a/OsmAnd/res/drawable/ic_action_navigation_type_direct_to.xml b/OsmAnd/res/drawable/ic_action_navigation_type_direct_to.xml
index 50f120c40f..8823547f7d 100644
--- a/OsmAnd/res/drawable/ic_action_navigation_type_direct_to.xml
+++ b/OsmAnd/res/drawable/ic_action_navigation_type_direct_to.xml
@@ -4,24 +4,23 @@
android:viewportWidth="24"
android:viewportHeight="24">
-
-
-
+ android:fillAlpha="0.5"/>
+
+
+
+
diff --git a/OsmAnd/res/drawable/ic_type_audio.xml b/OsmAnd/res/drawable/ic_type_audio.xml
new file mode 100644
index 0000000000..4b6b93dd87
--- /dev/null
+++ b/OsmAnd/res/drawable/ic_type_audio.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/OsmAnd/res/layout/bottom_sheet_item_title_big.xml b/OsmAnd/res/layout/bottom_sheet_item_title_big.xml
index ad594bb7d8..7037293289 100644
--- a/OsmAnd/res/layout/bottom_sheet_item_title_big.xml
+++ b/OsmAnd/res/layout/bottom_sheet_item_title_big.xml
@@ -6,7 +6,7 @@
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_title_height"
android:ellipsize="end"
- android:gravity="bottom"
+ android:gravity="center_vertical"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:maxLines="1"
android:minHeight="@dimen/bottom_sheet_title_height"
diff --git a/OsmAnd/res/layout/osm_login_data.xml b/OsmAnd/res/layout/osm_login_data.xml
index 26dbdd85e5..1e5e4a87de 100644
--- a/OsmAnd/res/layout/osm_login_data.xml
+++ b/OsmAnd/res/layout/osm_login_data.xml
@@ -6,7 +6,7 @@
android:orientation="vertical"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding"
- android:paddingBottom="@dimen/route_info_list_text_padding">
+ android:paddingBottom="@dimen/dialog_button_height">
+ android:layout_marginStart="@dimen/dialog_content_margin"
+ android:layout_marginLeft="@dimen/dialog_content_margin"
+ android:layout_marginTop="@dimen/content_padding_small"
+ android:layout_marginEnd="@dimen/content_padding_small"
+ android:layout_marginRight="@dimen/content_padding_small"
+ android:layout_marginBottom="@dimen/content_padding_small"
+ android:orientation="vertical">
@@ -47,7 +50,6 @@
android:letterSpacing="@dimen/description_letter_spacing"
android:maxLines="1"
android:paddingTop="@dimen/content_padding_small"
- android:paddingBottom="@dimen/content_padding_small"
android:textColor="?attr/active_color_basic"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml
index 59f5848af5..ebd35d66fe 100644
--- a/OsmAnd/res/values-ar/strings.xml
+++ b/OsmAnd/res/values-ar/strings.xml
@@ -3379,9 +3379,6 @@
الحد الأدنى للسرعةدقة الحد الأدنىالحد الأدنى للإزاحة
- القائمة - الأماكن الخاصة بي - المسارات
- القائمة - الأماكن الخاصة بي - ملاحظات
- القائمة - أماكني - تعديلات OSMإعادة تعيين إعدادات البرنامج المساعد الافتراضيتقسيم المسجلاستخدام تطبيق النظام
diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml
index 43210c308d..caf69f7cfb 100644
--- a/OsmAnd/res/values-de/strings.xml
+++ b/OsmAnd/res/values-de/strings.xml
@@ -437,7 +437,7 @@
Underlay-KarteUnderlay-Karte auswählenOverlay-Karte…
- Keine(r/s)
+ KeineOverlay-KarteOverlay-Karte auswählenKarte schon installiert, Einstellungen werden aktualisiert.
@@ -1227,7 +1227,7 @@
Als Favoritengruppe speichernZiele auswählenNach Entfernung sortieren
- Nach Name sortieren
+ Nach Namen sortierenZoomtasten bei Navigation anzeigen.Zoomtasten anzeigenKeine Downloads gefunden, bitte die Internet-Verbindung überprüfen.
@@ -2137,9 +2137,9 @@ Lon %2$s
Eine Schaltfläche zum Hinzufügen einer Kartenmarkierung in der Bildschirmmitte.OrtFavoriten ein-/ausblenden
- Taste, um eine Audio-Notiz in der Bildschirmmitte einzufügen.
- Taste, um eine Video-Notiz in der Bildschirmmitte einzufügen.
- Taste, um eine Foto-Notiz in der Bildschirmmitte einzufügen.
+ Eine Schaltfläche, um eine Audio-Notiz in der Bildschirmmitte einzufügen.
+ Eine Schaltfläche, um eine Video-Notiz in der Bildschirmmitte einzufügen.
+ Eine Schaltfläche, um eine Foto-Notiz in der Bildschirmmitte einzufügen.POI ein-/ausblenden%1$s anzeigen%1$s ausblenden
@@ -2170,8 +2170,8 @@ Lon %2$s
Wählen Sie eine beliebige Kategorie.SchnellaktionEine Schaltfläche, um einen GPX-Wegpunkt in der Bildschirmmitte einzufügen.
- Taste, um eine OSM-Notiz in der Bildschirmmitte einzufügen.
- Taste, um einen POI in der Bildschirmmitte einzufügen.
+ Eine Schaltfläche, um eine OSM-Notiz in der Bildschirmmitte einzufügen.
+ Eine Schaltfläche, um einen POI in der Bildschirmmitte einzufügen.Umschalter, um die Sprachansagen während der Navigation ein- oder auszuschalten.Taste, um eine Parkposition in der Bildschirmmitte einzufügen.Dialog zum Bearbeiten anzeigen
@@ -3466,9 +3466,6 @@ Lon %2$s
MindesttempoMinimale GenauigkeitMinimale Verschiebung
- \'Menü → Meine Orte → Tracks\'
- \'Menü → Meine Orte → Notizen\'
- \'Menü → Meine Orte → OSM-Änderungen\'Plugin-Einstellungen auf Voreinstellung zurücksetzenAutorisierung ist erfolgreichVerfügbar
@@ -3495,7 +3492,7 @@ Lon %2$s
Online-AufzeichnungAufgezeichnete Daten löschenKoordinaten kopieren
- Bemerkung: Geschwindigkeit > 0 Kontrolle: Die meisten GPS-Chipsätze geben nur dann einen Geschwindigkeitswert an, wenn der Algorithmus feststellt, dass Sie in Bewegung sind, und keinen, wenn Sie nicht in Bewegung sind. Die Verwendung der Einstellung > 0 in diesem Filter nutzt also gewissermaßen die Bewegungserkennung des GPS-Chipsatzes. Aber selbst wenn nicht zur Aufnahmezeit gefiltert wurde, verwenden wir diese Funktion in unserer GPX-Analyse, um die Distanz korrigiert zu bestimmen, d.h. der in diesem Feld angezeigte Wert ist die während der Bewegung aufgezeichnete Distanz.
+ Bemerkung: Geschwindigkeit > 0 Kontrolle: Die meisten GPS-Chipsätze geben nur dann einen Geschwindigkeitswert an, wenn der Algorithmus feststellt, dass Sie in Bewegung sind, und keinen, wenn Sie nicht in Bewegung sind. Die Verwendung der Einstellung > 0 in diesem Filter nutzt also gewissermaßen die Bewegungserkennung des GPS-Chipsatzes. Aber selbst wenn nicht zur Aufnahmezeit gefiltert wurde, verwenden wir diese Funktion in unserer GPX-Analyse, um die Distanz korrigiert zu bestimmen, d. h., der in diesem Feld angezeigte Wert ist die während der Bewegung aufgezeichnete Distanz.Nebeneffekt: Als Ergebnis der Filterung nach Genauigkeit können Punkte z.B. unter Brücken, unter Bäumen, zwischen hohen Gebäuden oder bei bestimmten Wetterbedingungen ganz fehlen.Empfehlung: Es ist schwer vorherzusagen, was aufgezeichnet wird und was nicht, es ist vielleicht am besten, diesen Filter auszuschalten.Dieser Filter verhindert, dass doppelte Punkte aufgenommen werden, bei denen möglicherweise zu wenig tatsächliche Bewegung stattgefunden hat, und sorgt für ein schöneres räumliches Erscheinungsbild von Spuren, die später nicht nachbearbeitet werden.
@@ -3526,4 +3523,5 @@ Lon %2$s
\n • Karte der Antarktis hinzugefügt
\n
\n
+ Nach Kategorie sortieren
\ No newline at end of file
diff --git a/OsmAnd/res/values-el/strings.xml b/OsmAnd/res/values-el/strings.xml
index f6bcca313a..239430492b 100644
--- a/OsmAnd/res/values-el/strings.xml
+++ b/OsmAnd/res/values-el/strings.xml
@@ -3456,9 +3456,6 @@
Ελάχιστη ταχύτηταΕλάχιστη ακρίβειαΕλάχιστη μετατόπιση
- Μενού — Οι τοποθεσίες μου — Ίχνη
- Μενού — Οι τοποθεσίες μου — Σημειώσεις
- Μενού — Οι τοποθεσίες μου — Επεξεργασίες OSMΕπαναφορά ρυθμίσεων προσθέτου στην προεπιλογήΚαταγραφή διαίρεσηςΧρήση εφαρμογής συστήματος
diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml
index 8f4b883e7a..354311ef3c 100644
--- a/OsmAnd/res/values-eo/strings.xml
+++ b/OsmAnd/res/values-eo/strings.xml
@@ -3447,9 +3447,6 @@ Indikas lokon: %1$s x %2$s"
Minimuma rapidoMinimuma precizoMinimuma delokiĝo
- menuo → miaj ejoj → spuroj
- menuo → mia ejoj → notoj
- menuo → miaj ejoj → OSM‑redaktojRestarigi implicitajn agordojn de kromprogramoDividilo de registraĵojUzi sisteman aplikaĵon
diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml
index f97c2b626e..56ff4f1511 100644
--- a/OsmAnd/res/values-es-rAR/strings.xml
+++ b/OsmAnd/res/values-es-rAR/strings.xml
@@ -3475,9 +3475,6 @@ Lon %2$s
Velocidad mínimaPrecisión mínimaDesplazamiento mínimo
- Menú → Mis sitios → Trazas
- Menú → Mis sitios → Notas multimedia
- Menú → Mis sitios → Ediciones de OSMRestablecer ajustes del complemento a valores predefinidosDivisión de grabaciónUsar la aplicación del sistema
diff --git a/OsmAnd/res/values-es-rUS/strings.xml b/OsmAnd/res/values-es-rUS/strings.xml
index 00bf2efa45..8376bf647c 100644
--- a/OsmAnd/res/values-es-rUS/strings.xml
+++ b/OsmAnd/res/values-es-rUS/strings.xml
@@ -3474,9 +3474,6 @@ Lon %2$s
Velocidad mínimaPrecisión mínimaDesplazamiento mínimo
- Menú — Mis sitios — Trazas
- Menú — Mis sitios — Notas
- Menú — Mis sitios — Ediciones de OSMRestablecer ajustes del complemento a valores predefinidosDivisión de grabaciónUsar la aplicación del sistema
diff --git a/OsmAnd/res/values-et/strings.xml b/OsmAnd/res/values-et/strings.xml
index 434902278f..ba678ff5ac 100644
--- a/OsmAnd/res/values-et/strings.xml
+++ b/OsmAnd/res/values-et/strings.xml
@@ -3400,9 +3400,6 @@
Vähim kiirusVähim täpsusVähim kõrvalekalle
- Menüü — Minu kohad — Rajad
- Menüü — Minu kohad — Märkmed
- Menüü — Minu kohad — OSM MuudatusedLähtesta lisaprogrammi seaded vaikeväärtusteleSalvesti jagamineKasuta süsteemi rakendust
diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml
index a8f1754768..5020df333e 100644
--- a/OsmAnd/res/values-fa/strings.xml
+++ b/OsmAnd/res/values-fa/strings.xml
@@ -3472,9 +3472,6 @@
کمترین سرعتکمترین صحتکمترین جابجایی
- منو — مکانهای من — ردها
- منو — مکانهای من — یادداشتها
- منو — مکانهای من — ویرایشهای OSMبازنشانی تنظیمات افزونه به پیشفرضامتیاز بدهیدناوبری، صحت ردنگاری
diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml
index 46ff574a27..15df8bbe0e 100644
--- a/OsmAnd/res/values-fr/strings.xml
+++ b/OsmAnd/res/values-fr/strings.xml
@@ -3448,9 +3448,6 @@ représentant la zone : %1$s x %2$s
Seuls les points mesurés avec un minimum de précision en mètres/pieds (information communiquée par votre puce GPS) seront enregistrés. La précision fait référence à la dispersion de plusieurs mesures successives et n\'est pas directement liée à la distance entre ces mesures et votre position réelle.Effet secondaire : avec le filtrage par précision certains points peuvent manquer ; par exemple : sous un pont, en forêt, entre de hauts bâtiments ou dans certaines conditions météorologiques.Remarque : si la localisation GPS est activée juste avant le début d\'enregistrement, la première position peut être imprécise. L\'application pourrait attendre quelques secondes avant d\'enregistrer un point (ou enregistrer le meilleur de 3 points successifs, etc), mais ces évolutions ne sont pas encore disponibles.
- Menu > Mes lieux favoris > Traces
- Menu > Mes lieux favoris > Notes
- Menu > Mes lieux favoris > Modifications OSMRemarque : vérification de vitesse > 0. La plupart des puces GPS fournissent une vitesse uniquement lorsque vous êtes en mouvement. Par conséquent, l\'indication du paramètre > 0 pour ce filtre utilise la détection de mouvement par la puce GPS. Mais même s\'il n\'est pas filtré ici au moment de l\'enregistrement, nous utilisons toujours cette fonctionnalité dans notre analyse des traces GPX pour déterminer la distance corrigée, c\'est-à-dire que la valeur affichée dans ce champ est la distance enregistrée en déplacement.Effet secondaire : les périodes de repos ne seront pas enregistrées ou seulement par un point. De petits mouvements, comme des pas sur le côté, pourront être ignorés. Votre fichier contiendra moins d\'informations exploitables en post-traitement et aura des statistiques moins exactes (éliminant les points redondants mais conservant les erreurs de position dues à une mauvaise réception ou aux artefacts de la puce GPS).Disponible
diff --git a/OsmAnd/res/values-gl/strings.xml b/OsmAnd/res/values-gl/strings.xml
index c901a8f015..ee1678c02b 100644
--- a/OsmAnd/res/values-gl/strings.xml
+++ b/OsmAnd/res/values-gl/strings.xml
@@ -3525,9 +3525,6 @@ Lon %2$s
Velocidade mínimaPrecisión mínimaDesprazamiento mínimo
- Menú — Os meus lugares — Pistas
- Menú — Os meus lugares — Notas
- Menú — Os meus lugares — Edicións do OSMRestabelecer a configuración do plugin ós valores por defectoDivisión de gravaciónEmpregar aplicación do sistema
diff --git a/OsmAnd/res/values-is/strings.xml b/OsmAnd/res/values-is/strings.xml
index 586b559b21..813231e2f6 100644
--- a/OsmAnd/res/values-is/strings.xml
+++ b/OsmAnd/res/values-is/strings.xml
@@ -3472,9 +3472,6 @@ Stendur fyrir svæði: %1$s x %2$s
LágmarkshraðiLágmarksnákvæmniMinnsta hreyfing
- Valmynd — Staðirnir mínir — Ferlar
- Valmynd — Staðirnir mínir — Minnispunktar
- Valmynd — Staðirnir mínir — OSM-breytingarFrumstilla stillingar viðbótar á sjálfgefin gildiUppskipting upptökuNota kerfisforrit
diff --git a/OsmAnd/res/values-ja/strings.xml b/OsmAnd/res/values-ja/strings.xml
index 41c6b3012c..7996a6fa44 100644
--- a/OsmAnd/res/values-ja/strings.xml
+++ b/OsmAnd/res/values-ja/strings.xml
@@ -3474,9 +3474,6 @@ POIの更新は利用できません
OSMナビゲーションまたは移動中にアイコンが表示されます。静止時にアイコンが表示されます
- メニュー — ブックマーク — 経路
- メニュー — ブックマーク — メモ
- メニュー — ブックマーク — OSM編集プラグイン設定を初期値に戻す記録を分割システムアプリを使用
diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml
index 1d50859dff..8cef0745f4 100644
--- a/OsmAnd/res/values-pl/strings.xml
+++ b/OsmAnd/res/values-pl/strings.xml
@@ -3456,9 +3456,6 @@ Reprezentuje obszar: %1$s x %2$s
Ten filtr zapobiega zapisywaniu zduplikowanych punktów, w których mógł wystąpić zbyt mały rzeczywisty ruch, zapewnia ładniejszy przestrzenny wygląd ścieżek, które nie są później przetwarzane.Nie można przeanalizować intencji geograficznej \'%s\'.Twoje uwagi OSM są w %1$s.
- Menu — Miejsca — Ślady
- Menu — Miejsca — Uwagi
- Menu — Miejsca — Edycje OSMAutoryzacja zakończyła się pomyślnieEfekt uboczny: Twoja trasa nie będzie zawierać sekcji, w których nie zostało spełnione kryterium minimalnej prędkości (np. gdy pchałeś rower pod strome wzgórze). Również nie będzie informacji o okresach odpoczynku, np. przerwach. Ma to efekt na analizy i przetwarzanie końcowe, np. przy próbie określenia całkowitej długości wycieczki, czasu w ruchu lub średniej prędkości.Zmień układ kategorii
diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml
index 40ddea689c..7a954236b0 100644
--- a/OsmAnd/res/values-pt-rBR/strings.xml
+++ b/OsmAnd/res/values-pt-rBR/strings.xml
@@ -3462,9 +3462,6 @@ Pôr do Sol: %2$s
Velocidade mínimaPrecisão mínimaDeslocamento mínimo
- Menu - Meus lugares - Faixas
- Menu - Meus lugares - Notas
- Menu - Meus lugares - Edições OSMRedefinir as configurações do plug-in para o padrãoDivisão do gravadorUsar aplicativo do sistema
diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml
index 068e56cedd..60010046ba 100644
--- a/OsmAnd/res/values-sc/strings.xml
+++ b/OsmAnd/res/values-sc/strings.xml
@@ -3459,9 +3459,6 @@ Pro praghere iscrie su còdighe intreu
Lestresa mìnimaAcuradesa mìnimaMovimentu mìnimu
- Menù — Logos meos — Rastas
- Menù — Logos meos — Notas
- Menù — Logos meos — Modìficas de OSMRiprìstina sas impostatziones predefinidas de s\'estensioneImprea s\'aplicatzione de sistemaSonu de s\'oturadore de sa fotocàmera
diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml
index f4d8f4f875..d57df4665f 100644
--- a/OsmAnd/res/values-sk/strings.xml
+++ b/OsmAnd/res/values-sk/strings.xml
@@ -3445,9 +3445,6 @@ Zodpovedá oblasti: %1$s x %2$s
Minimálna rýchlosťMinimálna presnosťMinimálny posun
- Menu — Moje miesta — Stopy
- Menu — Moje miesta — Poznámky
- Menu — Moje miesta — Zmeny v OSMResetovať modul do východzieho stavuRozdelenie nahrávaniaPoužiť systémovú aplikáciu
diff --git a/OsmAnd/res/values-sr/strings.xml b/OsmAnd/res/values-sr/strings.xml
index 7338e5ad8e..cd92a20648 100644
--- a/OsmAnd/res/values-sr/strings.xml
+++ b/OsmAnd/res/values-sr/strings.xml
@@ -3465,9 +3465,6 @@
Минимална брзинаМинимална прецизностМинимални померај
- Мени — Моја места — Стазе
- Мени — Моја места — Белешке
- Мени — Моја места — OSM изменеРесетуј поставке додатака на подразумеване вредностиИздељивање снимањаКористи системску апликацију
diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml
index 2cf95a6c5d..eebcb0d470 100644
--- a/OsmAnd/res/values-tr/strings.xml
+++ b/OsmAnd/res/values-tr/strings.xml
@@ -3430,9 +3430,6 @@
Minimum hızMinimum doğrulukMinimum yer değiştirme
- Menü — Yerlerim — İzlenen yollar
- Menü — Yerlerim — Notlar
- Menü — Yerlerim — OSM DüzenlemeleriEklenti ayarlarını varsayılana sıfırlaKaydedici bölmesiSistem uygulamasını kullan
diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml
index 0b57560cdc..cad393844c 100644
--- a/OsmAnd/res/values-uk/strings.xml
+++ b/OsmAnd/res/values-uk/strings.xml
@@ -3465,9 +3465,6 @@
Найменша швидкістьНайменша точністьНайменше зміщення
- Меню - Мої місця - Треки
- Меню — Мої місця — Примітки
- Меню — Мої місця — OSM правкиСкинути налаштування втулка до усталенихРозділений записувачВикористовувати системний застосунок
diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml
index 87b5740507..4e76939461 100644
--- a/OsmAnd/res/values-zh-rTW/strings.xml
+++ b/OsmAnd/res/values-zh-rTW/strings.xml
@@ -3465,9 +3465,6 @@
最低速度最低精密度最小偏移
- 選單 — 我的收藏 — 軌跡
- 選單 — 我的收藏 — 註記
- 選單 — 我的收藏 — OSM 編輯重設外掛程式設定為預設值記錄器分黎使用系統應用程式
diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml
index 4e7af07263..e4123dc67c 100644
--- a/OsmAnd/res/values/strings.xml
+++ b/OsmAnd/res/values/strings.xml
@@ -22,6 +22,11 @@
OsmAnd already has elements with the same names as those imported.\n\nSelect an action.Some items already existSelect the data to be imported.
+ Open settings
+ Plugin disabled
+ This plugin is a separate application, you will need to remove it separately if you no longer plan to use it.\n\nThe plugin will remain on the device after removing OsmAnd.
+ Menu
+ %1$s — %2$s — %3$sDirect-to-pointClear recorded data
@@ -82,9 +87,6 @@
Minimum speedMinimum accuracyMinimum displacement
- Menu — My places — Tracks
- Menu — My places — Notes
- Menu — My places — OSM EditsReset plugin settings to defaultRecorder splitUse system app
@@ -2810,6 +2812,7 @@
AfricaAsiaAustralia and Oceania
+ AntarcticaWorldwide and topic mapsWorldwide Wikipedia POIsVoice prompts (recorded, limited features)
diff --git a/OsmAnd/res/xml/accessibility_settings.xml b/OsmAnd/res/xml/accessibility_settings.xml
index 69e92ecc50..3c1096fe37 100644
--- a/OsmAnd/res/xml/accessibility_settings.xml
+++ b/OsmAnd/res/xml/accessibility_settings.xml
@@ -12,10 +12,10 @@
android:title="@string/accessibility_mode_disabled" />
enabledPlugins, @NonNull OsmandPlugin plugin) {
boolean marketEnabled = Version.isMarketEnabled(app);
- boolean pckg = checkPluginPackage(app, plugin);
+ boolean pckg = plugin.pluginAvailable(app);
boolean paid = plugin.isPaid();
if ((Version.isDeveloperVersion(app) || !Version.isProductionVersion(app)) && !paid) {
// for test reasons
@@ -276,7 +285,7 @@ public abstract class OsmandPlugin {
public static void checkInstalledMarketPlugins(@NonNull OsmandApplication app, @Nullable Activity activity) {
Set enabledPlugins = app.getSettings().getEnabledPlugins();
for (OsmandPlugin plugin : OsmandPlugin.getMarketPlugins()) {
- if (plugin.getInstallURL() != null && checkPluginPackage(app, plugin)) {
+ if (plugin.getInstallURL() != null && plugin.pluginAvailable(app)) {
plugin.onInstall(app, activity);
initPlugin(app, plugin);
}
@@ -284,13 +293,12 @@ public abstract class OsmandPlugin {
}
}
- private static boolean checkPluginPackage(OsmandApplication app, OsmandPlugin plugin) {
- return plugin.checkPluginPackage(app);
-
+ protected boolean pluginAvailable(OsmandApplication app) {
+ return checkPluginPackage(app, this);
}
- protected boolean checkPluginPackage(OsmandApplication app) {
- return isPackageInstalled(getComponentId1(), app) || isPackageInstalled(getComponentId2(), app);
+ public static boolean checkPluginPackage(@NonNull OsmandApplication app, @NonNull OsmandPlugin plugin) {
+ return isPackageInstalled(plugin.getComponentId1(), app) || isPackageInstalled(plugin.getComponentId2(), app);
}
public static boolean enablePlugin(@Nullable Activity activity, OsmandApplication app, OsmandPlugin plugin, boolean enable) {
@@ -306,17 +314,27 @@ public abstract class OsmandPlugin {
plugin.setActive(false);
}
app.getSettings().enablePlugin(plugin.getId(), enable);
- if (activity != null && activity instanceof MapActivity) {
- final MapActivity mapActivity = (MapActivity) activity;
- plugin.updateLayers(mapActivity.getMapView(), mapActivity);
- mapActivity.getDashboard().refreshDashboardFragments();
+ if (activity != null) {
+ if (activity instanceof MapActivity) {
+ final MapActivity mapActivity = (MapActivity) activity;
+ plugin.updateLayers(mapActivity.getMapView(), mapActivity);
+ mapActivity.getDashboard().refreshDashboardFragments();
- DashFragmentData fragmentData = plugin.getCardFragment();
- if (!enable && fragmentData != null) {
- FragmentManager fm = mapActivity.getSupportFragmentManager();
- Fragment fragment = fm.findFragmentByTag(fragmentData.tag);
- if (fragment != null) {
- fm.beginTransaction().remove(fragment).commit();
+ DashFragmentData fragmentData = plugin.getCardFragment();
+ if (!enable && fragmentData != null) {
+ FragmentManager fm = mapActivity.getSupportFragmentManager();
+ Fragment fragment = fm.findFragmentByTag(fragmentData.tag);
+ if (fragment != null) {
+ fm.beginTransaction().remove(fragment).commit();
+ }
+ }
+ }
+
+ if (plugin.isMarketPlugin()) {
+ if (plugin.isActive()) {
+ plugin.showInstallDialog(activity);
+ } else if (OsmandPlugin.checkPluginPackage(app, plugin)) {
+ plugin.showDisableDialog(activity);
}
}
}
diff --git a/OsmAnd/src/net/osmand/plus/SQLiteTileSource.java b/OsmAnd/src/net/osmand/plus/SQLiteTileSource.java
index 10e7499297..e057c7fd3a 100644
--- a/OsmAnd/src/net/osmand/plus/SQLiteTileSource.java
+++ b/OsmAnd/src/net/osmand/plus/SQLiteTileSource.java
@@ -39,20 +39,12 @@ public class SQLiteTileSource implements ITileSource {
private static final String ELLIPSOID = "ellipsoid";
private static final String INVERTED_Y = "inverted_y";
private static final String REFERER = "referer";
- private static final String TIME_SUPPORTED = "timesupported";
+ private static final String TIME_COLUMN = "timecolumn";
private static final String EXPIRE_MINUTES = "expireminutes";
-
- private static final String TILES_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS tiles (x INTEGER NOT NULL, y INTEGER NOT NULL, z INTEGER NOT NULL, s INTEGER, image BLOB, time INTEGER, PRIMARY KEY (x, y, z))";
- private static final String CREATE_INDEX_X = "CREATE INDEX index_tiles_on_x ON tiles (x)";
- private static final String CREATE_INDEX_Y = "CREATE INDEX index_tiles_on_y ON tiles (y)";
- private static final String CREATE_INDEX_Z = "CREATE INDEX index_tiles_on_z ON tiles (z)";
- private static final String CREATE_INDEX_S = "CREATE INDEX index_tiles_on_s ON tiles (s)";
-
- private static final String MAXZOOM_FIELD = "maxzoom";
- private static final String MINZOOM_FIELD = "minzoom";
- private static final String ELLIPSOID_FIELD = "ellipsoid";
- private static final String URL_FIELD = "url";
- private static final String EXPIREMINUTES_FIELD = "expireminutes";
+ private static final String RULE = "rule";
+ private static final String TILENUMBERING = "tilenumbering";
+ private static final String BIG_PLANET_TILE_NUMBERING = "BigPlanet";
+ private static final String TILESIZE = "tilesize";
private ITileSource base;
private String urlTemplate = null;
@@ -119,25 +111,21 @@ public class SQLiteTileSource implements ITileSource {
db = ctx.getSQLiteAPI().getOrCreateDatabase(
ctx.getAppPath(TILES_INDEX_DIR).getAbsolutePath() + "/" + name + SQLITE_EXT, true);
- db.execSQL("CREATE TABLE IF NOT EXISTS info (" +
- MIN_ZOOM + ", " +
- MAX_ZOOM +
- ");");
- db.execSQL("INSERT INTO info (" + MIN_ZOOM + "," + MAX_ZOOM + ") VALUES ('" + minZoom + "','" + maxZoom + "');");
+ db.execSQL("CREATE TABLE tiles (x int, y int, z int, s int, image blob, time long, PRIMARY KEY (x,y,z,s))");
+ db.execSQL("CREATE INDEX IND on tiles (x,y,z,s)");
+ db.execSQL("CREATE TABLE info(tilenumbering,minzoom,maxzoom)");
+ db.execSQL("CREATE TABLE android_metadata (locale TEXT)");
+ db.execSQL("INSERT INTO info (tilenumbering,minzoom,maxzoom) VALUES ('simple','" + minZoom + "','" + maxZoom + "');");
addInfoColumn(URL, urlTemplate);
addInfoColumn(RANDOMS, randoms);
addInfoColumn(ELLIPSOID, isEllipsoid ? "1" : "0");
addInfoColumn(INVERTED_Y, invertedY ? "1" : "0");
addInfoColumn(REFERER, referer);
- addInfoColumn(TIME_SUPPORTED, timeSupported ? "yes" : "no");
+ addInfoColumn(TIME_COLUMN, timeSupported ? "yes" : "no");
addInfoColumn(EXPIRE_MINUTES, String.valueOf(getExpirationTimeMinutes()));
- db.execSQL(TILES_TABLE_CREATE);
- db.execSQL(CREATE_INDEX_X);
- db.execSQL(CREATE_INDEX_Y);
- db.execSQL(CREATE_INDEX_Z);
- db.execSQL(CREATE_INDEX_S);
+
db.close();
}
@@ -245,36 +233,36 @@ public class SQLiteTileSource implements ITileSource {
if(cursor.moveToFirst()) {
String[] columnNames = cursor.getColumnNames();
List list = Arrays.asList(columnNames);
- int url = list.indexOf(URL_FIELD);
+ int url = list.indexOf(URL);
if(url != -1) {
String template = cursor.getString(url);
if(!Algorithms.isEmpty(template)){
urlTemplate = TileSourceTemplate.normalizeUrl(template);
}
}
- int ruleId = list.indexOf("rule");
+ int ruleId = list.indexOf(RULE);
if(ruleId != -1) {
rule = cursor.getString(ruleId);
}
- int refererId = list.indexOf("referer");
+ int refererId = list.indexOf(REFERER);
if(refererId != -1) {
referer = cursor.getString(refererId);
}
- int tnumbering = list.indexOf("tilenumbering");
+ int tnumbering = list.indexOf(TILENUMBERING);
if(tnumbering != -1) {
- inversiveZoom = "BigPlanet".equalsIgnoreCase(cursor.getString(tnumbering));
+ inversiveZoom = BIG_PLANET_TILE_NUMBERING.equalsIgnoreCase(cursor.getString(tnumbering));
} else {
inversiveZoom = true;
- addInfoColumn("tilenumbering", "BigPlanet");
+ addInfoColumn(TILENUMBERING, BIG_PLANET_TILE_NUMBERING);
}
- int timecolumn = list.indexOf("timecolumn");
+ int timecolumn = list.indexOf(TIME_COLUMN);
if (timecolumn != -1) {
timeSupported = "yes".equalsIgnoreCase(cursor.getString(timecolumn));
} else {
timeSupported = hasTimeColumn();
- addInfoColumn("timecolumn", timeSupported? "yes" : "no");
+ addInfoColumn(TIME_COLUMN, timeSupported? "yes" : "no");
}
- int expireminutes = list.indexOf(EXPIREMINUTES_FIELD);
+ int expireminutes = list.indexOf(EXPIRE_MINUTES);
this.expirationTimeMillis = -1;
if(expireminutes != -1) {
int minutes = (int) cursor.getInt(expireminutes);
@@ -282,39 +270,39 @@ public class SQLiteTileSource implements ITileSource {
this.expirationTimeMillis = minutes * 60 * 1000l;
}
} else {
- addInfoColumn(EXPIREMINUTES_FIELD, "0");
+ addInfoColumn(EXPIRE_MINUTES, "0");
}
- int tsColumn = list.indexOf("tilesize");
+ int tsColumn = list.indexOf(TILESIZE);
this.tileSizeSpecified = tsColumn != -1;
if(tileSizeSpecified) {
this.tileSize = (int) cursor.getInt(tsColumn);
}
- int ellipsoid = list.indexOf(ELLIPSOID_FIELD);
+ int ellipsoid = list.indexOf(ELLIPSOID);
if(ellipsoid != -1) {
int set = (int) cursor.getInt(ellipsoid);
if(set == 1){
this.isEllipsoid = true;
}
}
- int invertedY = list.indexOf("inverted_y");
+ int invertedY = list.indexOf(INVERTED_Y);
if(invertedY != -1) {
int set = (int) cursor.getInt(invertedY);
if(set == 1){
this.invertedY = true;
}
}
- int randomsId = list.indexOf("randoms");
+ int randomsId = list.indexOf(RANDOMS);
if(randomsId != -1) {
this.randoms = cursor.getString(randomsId);
this.randomsArray = TileSourceTemplate.buildRandomsArray(this.randoms);
}
//boolean inversiveInfoZoom = tnumbering != -1 && "BigPlanet".equals(cursor.getString(tnumbering));
boolean inversiveInfoZoom = inversiveZoom;
- int mnz = list.indexOf(MINZOOM_FIELD);
+ int mnz = list.indexOf(MIN_ZOOM);
if(mnz != -1) {
minZoom = (int) cursor.getInt(mnz);
}
- int mxz = list.indexOf(MAXZOOM_FIELD);
+ int mxz = list.indexOf(MAX_ZOOM);
if(mxz != -1) {
maxZoom = (int) cursor.getInt(mxz);
}
@@ -342,19 +330,19 @@ public class SQLiteTileSource implements ITileSource {
maxZoom = 17 - mnz;
}
if (getUrlTemplate() != null && !getUrlTemplate().equals(r.getUrlTemplate())) {
- db.execSQL("update info set " + URL_FIELD + " = '" + r.getUrlTemplate() + "'");
+ db.execSQL("update info set " + URL + " = '" + r.getUrlTemplate() + "'");
}
if (r.getMinimumZoomSupported() != minZoom) {
- db.execSQL("update info set " + MINZOOM_FIELD + " = '" + minZoom + "'");
+ db.execSQL("update info set " + MIN_ZOOM + " = '" + minZoom + "'");
}
if (r.getMaximumZoomSupported() != maxZoom) {
- db.execSQL("update info set " + MAXZOOM_FIELD + " = '" + maxZoom + "'");
+ db.execSQL("update info set " + MAX_ZOOM + " = '" + maxZoom + "'");
}
if (r.isEllipticYTile() != isEllipticYTile()) {
- db.execSQL("update info set " + ELLIPSOID_FIELD + " = '" + (r.isEllipticYTile() ? 1 : 0) + "'");
+ db.execSQL("update info set " + ELLIPSOID + " = '" + (r.isEllipticYTile() ? 1 : 0) + "'");
}
if (r.getExpirationTimeMinutes() != getExpirationTimeMinutes()) {
- db.execSQL("update info set " + EXPIREMINUTES_FIELD + " = '" + r.getExpirationTimeMinutes() + "'");
+ db.execSQL("update info set " + EXPIRE_MINUTES + " = '" + r.getExpirationTimeMinutes() + "'");
}
}
}
@@ -658,4 +646,5 @@ public class SQLiteTileSource implements ITileSource {
public String getReferer() {
return referer;
}
+
}
diff --git a/OsmAnd/src/net/osmand/plus/activities/PluginActivity.java b/OsmAnd/src/net/osmand/plus/activities/PluginActivity.java
index 4f64d740d8..9956b2493c 100644
--- a/OsmAnd/src/net/osmand/plus/activities/PluginActivity.java
+++ b/OsmAnd/src/net/osmand/plus/activities/PluginActivity.java
@@ -20,10 +20,11 @@ import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R;
import net.osmand.plus.chooseplan.ChoosePlanDialogFragment;
+import net.osmand.plus.dialogs.PluginInstalledBottomSheetDialog;
import net.osmand.plus.download.DownloadIndexesThread;
import net.osmand.plus.srtmplugin.SRTMPlugin;
-public class PluginActivity extends OsmandActionBarActivity implements DownloadIndexesThread.DownloadEvents {
+public class PluginActivity extends OsmandActionBarActivity implements DownloadIndexesThread.DownloadEvents, PluginInstalledBottomSheetDialog.PluginStateListener {
private static final String TAG = "PluginActivity";
public static final String EXTRA_PLUGIN_ID = "plugin_id";
@@ -214,4 +215,9 @@ public class PluginActivity extends OsmandActionBarActivity implements Download
}
}
}
-}
+
+ @Override
+ public void onPluginStateChanged(OsmandPlugin plugin) {
+ updateState();
+ }
+}
\ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/plus/activities/PluginsActivity.java b/OsmAnd/src/net/osmand/plus/activities/PluginsActivity.java
index 2d0e593fde..69aa72e5d9 100644
--- a/OsmAnd/src/net/osmand/plus/activities/PluginsActivity.java
+++ b/OsmAnd/src/net/osmand/plus/activities/PluginsActivity.java
@@ -21,11 +21,12 @@ import net.osmand.aidl.ConnectedApp;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R;
+import net.osmand.plus.dialogs.PluginInstalledBottomSheetDialog;
import net.osmand.plus.download.DownloadIndexesThread;
import java.util.ArrayList;
-public class PluginsActivity extends OsmandListActivity implements DownloadIndexesThread.DownloadEvents {
+public class PluginsActivity extends OsmandListActivity implements DownloadIndexesThread.DownloadEvents, PluginInstalledBottomSheetDialog.PluginStateListener {
public static final int ACTIVE_PLUGINS_LIST_MODIFIED = 1;
@@ -80,9 +81,6 @@ public class PluginsActivity extends OsmandListActivity implements DownloadIndex
listModified = true;
}
getListAdapter().notifyDataSetChanged();
- if (plugin.isActive() && plugin.isMarketPlugin()) {
- plugin.showInstallDialog(this);
- }
}
}
@@ -119,6 +117,11 @@ public class PluginsActivity extends OsmandListActivity implements DownloadIndex
}
}
+ @Override
+ public void onPluginStateChanged(OsmandPlugin plugin) {
+ getListAdapter().notifyDataSetChanged();
+ }
+
protected class PluginsListAdapter extends ArrayAdapter