diff --git a/OsmAnd/res/values-ar/phrases.xml b/OsmAnd/res/values-ar/phrases.xml index 77ca89347a..da2bfb09a0 100644 --- a/OsmAnd/res/values-ar/phrases.xml +++ b/OsmAnd/res/values-ar/phrases.xml @@ -2510,7 +2510,7 @@ بتروجليف مقبرة كبيرة قديمة دائرة الكوخ - مستعمرة + مستوطنة/هجرة حصن تومولوس المغليث حجر ضخم diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 31907c0417..ebc6a7b115 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -4008,4 +4008,10 @@ عكس جميع النقاط حدد ملف التعريف، الذي سيتم استخدامه في بدء التطبيق. آخر استخدام + تفضيل طرق التنزه + تفضيل طرق التنزه + السماح بالتيارات والمصارف + السماح بالتيارات والمصارف + السماح بالممرات المائية المتقطعة + السماح بالممرات المائية المتقطعة \ No newline at end of file diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index e39de1583c..216951a62c 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -3832,7 +3832,7 @@ kein Vibrieren Pfeil Vibrieren - Give box + Tauschbox Stadtteil Bezirk Aufzug @@ -3848,7 +3848,7 @@ Kleine Elektrogeräte Nussladen Flüssigerdgas - Rastplatz + Parkbucht Überdachter Parkplatz Dachparkplätze GPX-Wegpunkt diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 47098cf9fb..95344ac93f 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -2418,7 +2418,7 @@ Ermöglicht schnelle Beiträge zu Mapillary. Fotos von der Straße aus dem Netz für jeden. Orte entdecken, mitwirken und die Welt in Bildern festhalten. Mapillary - Mit Mapillary Bilder dieses Orts beitragen. + Mit Mapillary Bilder von diesem Ort beisteuern. Installieren Online-Fotos Keine Fotos hier. @@ -3181,7 +3181,7 @@ %s ist gespeichert Track öffnen Track %s ist gespeichert - Keine + Keines WunderLINQ Parrot Ein externes Steuergerät, wie beispielsweise eine Tastatur oder ein WunderLINQ, wählen. @@ -3839,7 +3839,7 @@ Nächstes Segment Navigationsprofil Wählen Sie eine Trackdatei, für die ein neues Segment hinzugefügt werden soll. - Track auswählen, der verfolgt werden soll + Track auswählen, dem gefolgt werden soll Adresse löschen Adresse hinzufügen Adresse eingeben diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 01a7bc425a..101029bd57 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -3935,7 +3935,7 @@ El archivo ya fue importado en OsmAnd Usar el algoritmo de navegación A* bifásica Gráfico - Hay %1$s datos disponibles sólo en los caminos, calcular una ruta usando «Ruta entre puntos» para ver los gráficos. + Los datos de «%1$s» sólo están disponibles con los caminos, calcula una ruta usando «Ruta entre puntos» para ver los gráficos. Ten paciencia. \nEl gráfico estará disponible al recalcular la ruta. %1$s — %2$s @@ -4024,4 +4024,12 @@ Perfil de OsmAnd Perfil de usuario Invertir todos los puntos + Elige el perfil que será usado al iniciar la aplicación. + Usado por última vez + Prefiere rutas de senderismo + Preferir rutas de senderismo + Permite arroyos y desagües + Permitir arroyos y desagües + Permite cursos de agua intermitentes + Permitir cursos de agua intermitentes \ No newline at end of file diff --git a/OsmAnd/res/values-es-rUS/phrases.xml b/OsmAnd/res/values-es-rUS/phrases.xml index ca1d54f2d3..b46dce884c 100644 --- a/OsmAnd/res/values-es-rUS/phrases.xml +++ b/OsmAnd/res/values-es-rUS/phrases.xml @@ -3893,4 +3893,16 @@ Agente de dinero móvil Vacunación: COVID19 Vacunación + Lavadero público de ropa + Estación de transferencia de residuos + Báscula puente + Estación de guardabosque + Lago + Río + Pozo + Bomba accionada + Tanque de agua + Grifo + Planta potabilizadora + Pozo entubado \ No newline at end of file diff --git a/OsmAnd/res/values-es-rUS/strings.xml b/OsmAnd/res/values-es-rUS/strings.xml index e5909587a9..311a2c875c 100644 --- a/OsmAnd/res/values-es-rUS/strings.xml +++ b/OsmAnd/res/values-es-rUS/strings.xml @@ -1952,7 +1952,7 @@ Lapso de tiempo mínimo entre avisos. Rumbo relativo Rumbo magnético - Destino indefinido + Complemento de accesibilidad: Destino indefinido Activa la navegación para cambios en vivo de OsmAnd. Navegación con OsmAnd Live Síguenos @@ -2396,7 +2396,7 @@ Descarga el mapa de «Curvas de nivel» para usarlas en esta región. Complemento Compra e instala el complemento «Curvas de nivel» para mostrar áreas verticales graduadas. - Descarga el mapa «Superposición de sombreado» para mostrar el sombreado vertical. + Descarga la capa superpuesta del mapa «Sombreado» para mostrar el sombreado vertical. Instala el complemento «Curvas de nivel» para mostrar las áreas verticales graduadas. Ocultar desde el nivel de zoom Mostrar u ocultar notas de OSM @@ -3432,7 +3432,7 @@ Nombre de usuario y contraseña Los ajustes de este complemento son globales y se aplican a todos los perfiles Edición de OSM - Puedes ver todas tus ediciones aún no subidas o errores de OSM en «%1$s». Los puntos subidos no se muestran en OsmAnd. + Vea todas las ediciones aún no subidas o errores de OSM en «%1$s». Los cambios ya cargados no se mostrarán más. OSM El icono se muestra mientras se navega o se mueve. El icono se muestra en reposo. @@ -3794,9 +3794,9 @@ Controla el nivel de zoom del mapa usando los botones de volumen del dispositivo. Botones de volumen como zoom Descargar datos de Wikipedia - El punto de destino actual de la ruta será borrado. Si será el destino, la navegación se detendrá. + Quita el siguiente destino de la ruta. Si es el destino final, la navegación se detendrá. Borrar el punto de destino más cercano - Obtén información sobre los puntos de interés de Wikipedia. Es tu guía de bolsillo sin conexión - sólo activa el complemento de Wikipedia y disfruta los artículos sobre los objetos de alrededor. + Obtén información sobre los puntos de interés de Wikipedia, una guía de bolsillo sin conexión que incluye artículos sobre objetos y destinos. Proporciona un nombre para el punto Proporciona la longitud del vehículo, se pueden aplicar algunas restricciones de rutas para vehículos largos. Motoneta (motor) @@ -3851,7 +3851,7 @@ Abrir traza existente Última edición Importar traza - ¿Cerrar el plan de ruta sin guardar\?, se descartarán todos los cambios. + ¿Descartar todos los cambios en la ruta planificada\? Crear nueva ruta Cambiar el tipo de ruta anterior Cambiar el tipo de ruta posterior @@ -3908,12 +3908,12 @@ Último modificado Iconos de inicio y fin Gracias por comprar las «Curvas de nivel» - La suscripción se cobra por el período elegido. Puedes cancelarlo en cualquier momento en AppGallery. + La suscripción se cobra por el período elegido. Puedes cancelarlo en AppGallery en cualquier momento. El pago será cargado a la cuenta de AppGallery al confirmar la compra. \n \nLa suscripción se renueva automáticamente a menos que se cancele antes de la fecha de renovación. La cuenta será cargada por el período de renovación (mes/trimestre/año) sólo en la fecha de renovación. \n -\nPuedes administrar y cancelar las suscripciones accediendo a los ajustes de AppGallery. +\nPuedes administrar y cancelar las suscripciones en los ajustes de AppGallery. Evita pasar por aceras o veredas Evitar aceras Novedades @@ -3935,8 +3935,8 @@ MGRS MGRS OsmAnd usa MGRS, similar al formato UTM de la OTAN. - Hay %1$s datos disponibles sólo en los caminos, calcular una ruta usando «Ruta entre puntos» para ver los gráficos. - Ten paciencia + Los datos de «%1$s» sólo están disponibles con los caminos, calcula una ruta usando «Ruta entre puntos» para ver los gráficos. + Ten paciencia. \nEl gráfico estará disponible al recalcular la ruta. %1$s — %2$s Viaje @@ -4018,4 +4018,15 @@ Alemán (casual) Puedes usar los datos de elevación para tener en cuenta el ascenso y descenso del viaje Avión ligero + Usado por última vez + Preferir rutas de senderismo + Prefiere rutas de senderismo + Permitir arroyos y desagües + Permite arroyos y desagües + Permitir cursos de agua intermitentes + Permite cursos de agua intermitentes + Invertir todos los puntos + Perfil de usuario + Perfil de OsmAnd + Elige el perfil que será usado al iniciar la aplicación. \ No newline at end of file diff --git a/OsmAnd/res/values-fr/phrases.xml b/OsmAnd/res/values-fr/phrases.xml index 5371880ddc..92e6a64d53 100644 --- a/OsmAnd/res/values-fr/phrases.xml +++ b/OsmAnd/res/values-fr/phrases.xml @@ -1128,7 +1128,7 @@ Autorisés en été seulement Entrée uniquement Sortie uniquement - Entrée et Sortie + Entrée et sortie Accès d\'été : entrée uniquement Accès d\'été : sortie uniquement Accès d\'été : entrée et sortie @@ -3559,7 +3559,7 @@ Trail (moto) Institution pour les transports Point d\'eau pour poids lourds - Multi-famille + Multi-familles Magasin de parquet Point de livraison Service des eaux @@ -3625,7 +3625,7 @@ Accès véhicules : militaires Accès véhicules : livraisons Accès véhicules : foresterie - Accès véhicules à moteur : non + Accès véhicule motorisé : non Accès motoneige : non Oui Livraison @@ -3633,22 +3633,22 @@ Indiqué Oui suspendu - Accès véhicules : oui - accès-voiture : privé - accès-voiture : impossible - accès-voiture : possible - Accès aux automobiles:forestiers - accès-voiture : autorisé - Accès-voiture : privé - Accès aux véhicules à moteur : livraison - Accès-véhicules : agricoles - Accès aux automobiles:riverains - Accès aux automobiles:forestiers - Accès aux véhicules à moteurs:riverains - Accès véhicule à moteur:toléré - Accès au véhicule à moteur:clients - Accès aux véhicules à moteur:militaires - Accès aux véhicules à moteurs:forestiers + Accès voiture : oui + Accès voiture : privé + Accès voiture : non + Accès voiture : permis + Accès voiture : clientèle + Accès véhicule motorisé : oui + Accès véhicule motorisé : privé + Accès véhicule motorisé : livraison + Accès véhicule motorisé : agricole + Accès voiture : riverains + Accès voiture : forestier + Accès véhicule motorisé : riverains + Accès véhicule motorisé : toléré + Accès véhicule motorisé : clientèle + Accès véhicule motorisé : militaire + Accès véhicule motorisé : forestier Entrée de cave Magasin de diététique Constructeur @@ -3688,7 +3688,7 @@ Type Plein-air Lac - Accès à cheval : forestiers seuls + Accès à cheval : forestier Accès piétonnier : riverains Accès aux remorques : non Accès aux transports publics ou taxis : oui diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 3e52b62a0e..b52ca23ec8 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -4002,4 +4002,6 @@ Dernier utilisé Pirivilégier les itinéraires de randonnée Pirivilégier les itinéraires de randonnée + Autoriser les voies navigables intermittentes + Autoriser les voies navigables intermittentes \ No newline at end of file diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index 0ddc2b3f86..2142695973 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -1621,7 +1621,7 @@ Kihagyás OsmAnd Offline térképek\nés navigáció - Tovább + Következő Műszerfal beállításai Veszély törlés @@ -4015,8 +4015,8 @@ Utoljára használt Túraútvonalak előnyben részesítése Túraútvonalak előnyben részesítése - Patakok és csatornák engedélyezése - Patakok és csatornák engedélyezése + Patakok és vízelvezető árkok engedélyezése + Patakok és vízelvezető árkok engedélyezése Időszakos vízfolyások engedélyezése Időszakos vízfolyások engedélyezése \ No newline at end of file diff --git a/OsmAnd/res/values-iw/strings.xml b/OsmAnd/res/values-iw/strings.xml index 0faf759a72..97db038f97 100644 --- a/OsmAnd/res/values-iw/strings.xml +++ b/OsmAnd/res/values-iw/strings.xml @@ -3913,7 +3913,7 @@ תודה לך על רכישת ‚קווי מתאר’ הימנעות משבילי הולכי רגל הימנעות משבילי הולכי רגל - המינוי חויב לתקופה הנבחרת. ניתן לבטל דרך ה־AppGallery בכל עת. + המינוי מחויב לפי התקופה הנבחרת. ניתן לבטל אותו דרך ה־AppGallery בכל עת. חשבון ה־AppGallery שלך יחויב עם אישור הרכישה. \n \nתוקף המינוי מתארך אוטומטי אלא אם כן בוטל בטרם תאריך החידוש. החשבון שלך יחויב על תקופת החידוש (חודש/שלושה חודשים/שנה) רק בתאריך החידוש. @@ -4023,4 +4023,10 @@ להפוך את כל הנקודות נא לבחור את הפרופיל בו יעשה שימוש עם הפעלת היישומון. שימוש אחרון + להעדיף מסלולי הליכה + להעדיף מסלולי הליכה + לאפשר נחלים וניקוזים + לאפשר נחלים וניקוזים + לאפשר מקטעים עם דרכי מים עונתיים + לאפשר מקטעים עם דרכי מים עונתיים \ No newline at end of file diff --git a/OsmAnd/res/values-pt/phrases.xml b/OsmAnd/res/values-pt/phrases.xml index f523f432af..a1ee9f3b00 100644 --- a/OsmAnd/res/values-pt/phrases.xml +++ b/OsmAnd/res/values-pt/phrases.xml @@ -3878,4 +3878,5 @@ Tanque de água Torneira Estação de tratamento de água + Posto de guarda florestal \ No newline at end of file diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 216eebcf1d..ca4436bcc3 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -4021,4 +4021,10 @@ Otočiť všetky body Zvoľte profil, ktorý bude použitý pri štarte aplikácie. Naposledy použité + Uprednostniť turistické trasy + Uprednostniť turistické trasy + Povoliť potoky a odtokové kanály + Povoliť potoky a odtokové kanály + Povoliť dočasné vodné toky + Povoliť dočasné vodné toky \ No newline at end of file diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 16ab9db234..5fecd504a6 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -4019,4 +4019,8 @@ Востаннє використовувалось Дозволити переривчасті водні шляхи Дозволити переривчасті водні шляхи + Надавати перевагу пішохідним маршрутам + Надавати перевагу пішохідним маршрутам + Дозволити потоки та стічні канали + Дозволити потоки та стічні канали \ No newline at end of file diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 28a6ff15b6..17c657df59 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -4016,4 +4016,10 @@ 反轉所有點 選取要在應用程式啟動時使用的設定檔。 最後使用 + 偏好遠足路線 + 偏好遠足路線 + 允許溪流與水溝 + 允許溪流與水溝 + 允許間歇水路 + 允許間歇水路 \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadResources.java b/OsmAnd/src/net/osmand/plus/download/DownloadResources.java index 2bff73d7b2..f28310645e 100644 --- a/OsmAnd/src/net/osmand/plus/download/DownloadResources.java +++ b/OsmAnd/src/net/osmand/plus/download/DownloadResources.java @@ -8,9 +8,9 @@ import net.osmand.PlatformUtil; import net.osmand.data.LatLon; import net.osmand.map.OsmandRegions; import net.osmand.map.WorldRegion; +import net.osmand.plus.CustomRegion; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.CustomRegion; import net.osmand.plus.download.DownloadOsmandIndexesHelper.AssetIndexItem; import net.osmand.plus.inapp.InAppPurchaseHelper; import net.osmand.util.Algorithms; @@ -21,6 +21,7 @@ import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; +import java.text.DateFormat; import java.text.ParseException; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -80,7 +81,7 @@ public class DownloadResources extends DownloadResourceGroup { List items = getWikivoyageItems(); if (items != null) { for (IndexItem ii : items) { - if (ii.getFileName().equals(fileName)) { + if (ii.getTargetFile(app).getName().equals(fileName)) { return ii; } } @@ -177,6 +178,8 @@ public class DownloadResources extends DownloadResourceGroup { } } if (date != null && !date.equals(indexActivatedDate) && !date.equals(indexFilesDate)) { + long oldItemSize = 0; + long itemSize = item.getContentSize(); if ((item.getType() == DownloadActivityType.NORMAL_FILE && !item.extra) || item.getType() == DownloadActivityType.ROADS_FILE || item.getType() == DownloadActivityType.WIKIPEDIA_FILE @@ -185,15 +188,12 @@ public class DownloadResources extends DownloadResourceGroup { outdated = true; } else if (item.getType() == DownloadActivityType.WIKIVOYAGE_FILE || item.getType() == DownloadActivityType.TRAVEL_FILE) { - long itemSize = item.getContentSize(); - long oldItemSize = app.getAppPath(IndexConstants.WIKIVOYAGE_INDEX_DIR + + oldItemSize = app.getAppPath(IndexConstants.WIKIVOYAGE_INDEX_DIR + item.getTargetFileName()).length(); if (itemSize != oldItemSize) { outdated = true; } } else { - long itemSize = item.getContentSize(); - long oldItemSize = 0; if (parsed && item.getTimestamp() > item.getLocalTimestamp()) { outdated = true; } else if (item.getType() == DownloadActivityType.VOICE_FILE) { @@ -223,12 +223,23 @@ public class DownloadResources extends DownloadResourceGroup { outdated = true; } } + if (outdated) { + logItemUpdateInfo(item, format, itemSize, oldItemSize); + } } item.setOutdated(outdated); return outdated; } - + private void logItemUpdateInfo(IndexItem item, DateFormat format, long itemSize, long oldItemSize) { + String date = item.getDate(format); + String sfName = item.getTargetFileName(); + String indexActivatedDate = indexActivatedFileNames.get(sfName); + String indexFilesDate = indexFileNames.get(sfName); + LOG.info("name " + item.getFileName() + " timestamp " + item.timestamp + " localTimestamp " + item.localTimestamp + " date " + date + + " indexActivatedDate " + indexActivatedDate + " indexFilesDate " + indexFilesDate + + " itemSize " + itemSize + " oldItemSize " + oldItemSize); + } protected void updateFilesToUpdate() { initAlreadyLoadedFiles(); diff --git a/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java b/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java index 91440912d2..112364a6ba 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java @@ -502,27 +502,26 @@ public class WaypointDialogHelper { .create(); items.add(reorderStartAndFinishItem); - BaseBottomSheetItem reorderAllItems = new SimpleBottomSheetItem.Builder() - .setIcon(getContentIcon(R.drawable.ic_action_sort_reverse_order)) - .setTitle(getString(R.string.reverse_all_points)) - .setLayoutId(R.layout.bottom_sheet_item_simple) - .setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapActivity mapActivity = getMapActivity(); - if (mapActivity != null) { - WaypointDialogHelper.reverseAllPoints( - app, - mapActivity, - mapActivity.getDashboard().getWaypointDialogHelper() - ); + if (!Algorithms.isEmpty(targetsHelper.getIntermediatePoints())) { + BaseBottomSheetItem reorderAllItems = new SimpleBottomSheetItem.Builder() + .setIcon(getContentIcon(R.drawable.ic_action_sort_reverse_order)) + .setTitle(getString(R.string.reverse_all_points)) + .setLayoutId(R.layout.bottom_sheet_item_simple) + .setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + MapActivity mapActivity = getMapActivity(); + if (mapActivity != null) { + WaypointDialogHelper.reverseAllPoints( + app, + mapActivity, + mapActivity.getDashboard().getWaypointDialogHelper() + ); + } + dismiss(); } - dismiss(); - } - }) - .create(); - int intermediateSize = targetsHelper.getIntermediatePoints().size(); - if (intermediateSize > 1) { + }) + .create(); items.add(reorderAllItems); } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java index a715c33354..21b61d1fe3 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java @@ -72,20 +72,13 @@ public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment { String userNameOpenID = settings.USER_NAME.get(); String userName = isLoginOAuth(settings) ? userNameOAuth : userNameOpenID; accountName.setText(userName); - closeChangeSet.setBackgroundResource(isNightMode ? R.drawable.layout_bg_dark : R.drawable.layout_bg); final int paddingSmall = app.getResources().getDimensionPixelSize(R.dimen.content_padding_small); - closeChangeSet.setPadding(paddingSmall, 0, paddingSmall, 0); + closeChangeSet.setChecked(true); + setCloseChangeSet(isNightMode, paddingSmall); closeChangeSet.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isNightMode) { - closeChangeSet.setBackgroundResource( - isChecked ? R.drawable.layout_bg_dark_solid : R.drawable.layout_bg_dark); - } else { - closeChangeSet.setBackgroundResource( - isChecked ? R.drawable.layout_bg_solid : R.drawable.layout_bg); - } - closeChangeSet.setPadding(paddingSmall, 0, paddingSmall, 0); + setCloseChangeSet(isNightMode, paddingSmall); } }); LinearLayout account = sendOsmPoiView.findViewById(R.id.account_container); @@ -254,5 +247,16 @@ public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment { } return comment; } + + private void setCloseChangeSet(boolean isNightMode, int paddingSmall) { + if (isNightMode) { + closeChangeSet.setBackgroundResource( + closeChangeSet.isChecked() ? R.drawable.layout_bg_dark_solid : R.drawable.layout_bg_dark); + } else { + closeChangeSet.setBackgroundResource( + closeChangeSet.isChecked() ? R.drawable.layout_bg_solid : R.drawable.layout_bg); + } + closeChangeSet.setPadding(paddingSmall, 0, paddingSmall, 0); + } } diff --git a/OsmAnd/src/net/osmand/plus/wikipedia/WikiArticleHelper.java b/OsmAnd/src/net/osmand/plus/wikipedia/WikiArticleHelper.java index 25a7584f89..a0ced8eb86 100644 --- a/OsmAnd/src/net/osmand/plus/wikipedia/WikiArticleHelper.java +++ b/OsmAnd/src/net/osmand/plus/wikipedia/WikiArticleHelper.java @@ -301,7 +301,7 @@ public class WikiArticleHelper { return null; } String firstParagraphHtml = content.substring(firstParagraphStart, firstParagraphEnd + P_CLOSED.length()); - while (firstParagraphHtml.length() == (P_OPENED.length() + P_CLOSED.length()) + while (firstParagraphHtml.substring(P_OPENED.length(), firstParagraphHtml.length() - P_CLOSED.length()).trim().isEmpty() && (firstParagraphEnd + P_CLOSED.length()) < content.length()) { firstParagraphStart = content.indexOf(P_OPENED, firstParagraphEnd); firstParagraphEnd = firstParagraphStart == -1 ? -1 : content.indexOf(P_CLOSED, firstParagraphStart); diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelArticle.java b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelArticle.java index a559f3cf0f..22fe357fcf 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelArticle.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelArticle.java @@ -33,6 +33,7 @@ public class TravelArticle { String lang; String contentsJson; String aggregatedPartOf; + String fullContent; public String getTitle() { diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelDbHelper.java b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelDbHelper.java index d50d05e42b..ef6dbd921e 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelDbHelper.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelDbHelper.java @@ -46,6 +46,7 @@ public class TravelDbHelper implements TravelHelper { private static final Log LOG = PlatformUtil.getLog(TravelDbHelper.class); + private static final String WORLD_WIKIVOYAGE_FILE_NAME = "World_wikivoyage.sqlite"; private static final String ARTICLES_TABLE_NAME = "travel_articles"; private static final String POPULAR_TABLE_NAME = "popular_articles"; private static final String ARTICLES_POP_INDEX = "popularity_index"; @@ -185,6 +186,11 @@ public class TravelDbHelper implements TravelHelper { return null; } + @Override + public String getWikivoyageFileName() { + return WORLD_WIKIVOYAGE_FILE_NAME; + } + public List getExistingTravelBooks() { return existingTravelBooks; } diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelHelper.java b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelHelper.java index b55c398817..d8112cee0c 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelHelper.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelHelper.java @@ -49,4 +49,6 @@ public interface TravelHelper { // For TravelOBFHelper it could always return "" and should be no problem // Bookmarks should be refactored properly to support multiple files String getSelectedTravelBookName(); + + String getWikivoyageFileName(); } diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java index d64bed4ebe..3cb7cf776e 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java @@ -9,7 +9,6 @@ import net.osmand.plus.api.SQLiteAPI.SQLiteConnection; import net.osmand.plus.api.SQLiteAPI.SQLiteCursor; import net.osmand.plus.wikipedia.WikiArticleHelper; -import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -119,6 +118,8 @@ public class TravelLocalDataHelper { saved.lat = article.lat; saved.lon = article.lon; saved.routeId = article.routeId; + saved.fullContent = article.getContent(); + saved.contentsJson = article.contentsJson; savedArticles.add(saved); dbHelper.addSavedArticle(saved); notifySavedUpdated(); @@ -162,6 +163,18 @@ public class TravelLocalDataHelper { return null; } + @Nullable + public TravelArticle getSavedArticle(String routeId, String lang) { + for (TravelArticle article : savedArticles) { + if (article.routeId != null && article.routeId.equals(routeId) + && article.lang != null && article.lang.equals(lang)) { + article.content = article.fullContent; + return article; + } + } + return null; + } + public interface Listener { void savedArticlesUpdated(); @@ -169,7 +182,7 @@ public class TravelLocalDataHelper { private static class WikivoyageLocalDataDbHelper { - private static final int DB_VERSION = 5; + private static final int DB_VERSION = 6; private static final String DB_NAME = "wikivoyage_local_data"; private static final String HISTORY_TABLE_NAME = "wikivoyage_search_history"; @@ -204,6 +217,8 @@ public class TravelLocalDataHelper { private static final String BOOKMARKS_COL_LAT = "lat"; private static final String BOOKMARKS_COL_LON = "lon"; private static final String BOOKMARKS_COL_ROUTE_ID = "route_id"; + private static final String BOOKMARKS_COL_CONTENT_JSON = "content_json"; + private static final String BOOKMARKS_COL_CONTENT = "content"; private static final String BOOKMARKS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " + BOOKMARKS_TABLE_NAME + " (" + @@ -215,7 +230,9 @@ public class TravelLocalDataHelper { BOOKMARKS_COL_TRAVEL_BOOK + " TEXT, " + BOOKMARKS_COL_LAT + " double, " + BOOKMARKS_COL_LON + " double, " + - BOOKMARKS_COL_ROUTE_ID + " TEXT" + ");"; + BOOKMARKS_COL_ROUTE_ID + " TEXT, " + + BOOKMARKS_COL_CONTENT_JSON + " TEXT, " + + BOOKMARKS_COL_CONTENT + " TEXT" + ");"; private static final String BOOKMARKS_TABLE_SELECT = "SELECT " + BOOKMARKS_COL_ARTICLE_TITLE + ", " + @@ -225,7 +242,9 @@ public class TravelLocalDataHelper { BOOKMARKS_COL_PARTIAL_CONTENT + ", " + BOOKMARKS_COL_LAT + ", " + BOOKMARKS_COL_LON + ", " + - BOOKMARKS_COL_ROUTE_ID + + BOOKMARKS_COL_ROUTE_ID + ", " + + BOOKMARKS_COL_CONTENT_JSON + ", " + + BOOKMARKS_COL_CONTENT + " FROM " + BOOKMARKS_TABLE_NAME; private final OsmandApplication context; @@ -278,6 +297,10 @@ public class TravelLocalDataHelper { if (oldVersion < 5) { conn.execSQL("ALTER TABLE " + BOOKMARKS_TABLE_NAME + " ADD " + BOOKMARKS_COL_ROUTE_ID + " TEXT"); } + if (oldVersion < 6) { + conn.execSQL("ALTER TABLE " + BOOKMARKS_TABLE_NAME + " ADD " + BOOKMARKS_COL_CONTENT_JSON + " TEXT"); + conn.execSQL("ALTER TABLE " + BOOKMARKS_TABLE_NAME + " ADD " + BOOKMARKS_COL_CONTENT + " TEXT"); + } } @NonNull @@ -428,11 +451,14 @@ public class TravelLocalDataHelper { BOOKMARKS_COL_TRAVEL_BOOK + ", " + BOOKMARKS_COL_LAT + ", " + BOOKMARKS_COL_LON + ", " + - BOOKMARKS_COL_ROUTE_ID + - ") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + BOOKMARKS_COL_ROUTE_ID + ", " + + BOOKMARKS_COL_CONTENT_JSON + ", " + + BOOKMARKS_COL_CONTENT + + ") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; conn.execSQL(query, new Object[]{article.title, article.lang, article.aggregatedPartOf, article.imageTitle, article.content, - travelBook, article.lat, article.lon, article.routeId}); + travelBook, article.lat, article.lon, article.routeId, article.contentsJson, + article.fullContent}); } finally { conn.close(); } @@ -484,6 +510,8 @@ public class TravelLocalDataHelper { res.lat = cursor.getDouble(cursor.getColumnIndex(BOOKMARKS_COL_LAT)); res.lon = cursor.getDouble(cursor.getColumnIndex(BOOKMARKS_COL_LON)); res.routeId = cursor.getString(cursor.getColumnIndex(BOOKMARKS_COL_ROUTE_ID)); + res.contentsJson = cursor.getString(cursor.getColumnIndex(BOOKMARKS_COL_CONTENT_JSON)); + res.fullContent = cursor.getString(cursor.getColumnIndex(BOOKMARKS_COL_CONTENT)); return res; } diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelObfHelper.java b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelObfHelper.java index e1dc65ebfd..f94ad6c592 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelObfHelper.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelObfHelper.java @@ -37,8 +37,10 @@ import static net.osmand.CollatorStringMatcher.StringMatcherMode.CHECK_EQUALS_FR public class TravelObfHelper implements TravelHelper { private static final Log LOG = PlatformUtil.getLog(TravelObfHelper.class); - public static final String ROUTE_ARTICLE = "route_article"; - public static final int SEARCH_RADIUS = 100000; + + private static final String WORLD_WIKIVOYAGE_FILE_NAME = "World_wikivoyage.travel.obf"; + private static final String ROUTE_ARTICLE = "route_article"; + private static final int SEARCH_RADIUS = 100000; private final OsmandApplication app; private final Collator collator; @@ -249,9 +251,12 @@ public class TravelObfHelper implements TravelHelper { TravelArticle article = cachedArticles.get(routeId); if (article != null) { return article; - } else { + } + article = getArticleByIdFromTravelBooks(routeId, lang); + if (article != null) { return getArticleByIdFromTravelBooks(routeId, lang); } + return localDataHelper.getSavedArticle(routeId, lang); } private TravelArticle getArticleByIdFromTravelBooks(final String routeId, final String lang) { @@ -392,4 +397,9 @@ public class TravelObfHelper implements TravelHelper { public String getSelectedTravelBookName() { return ""; } + + @Override + public String getWikivoyageFileName() { + return WORLD_WIKIVOYAGE_FILE_NAME; + } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/ExploreRvAdapter.java b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/ExploreRvAdapter.java index 29951db19a..a95614bdb8 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/ExploreRvAdapter.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/ExploreRvAdapter.java @@ -142,7 +142,9 @@ public class ExploreRvAdapter extends RecyclerView.Adapter(fragment); - fileName = fragment.getWikivoyageFileName(); + fileName = app.getTravelHelper().getWikivoyageFileName(); } @Override diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/SavedArticlesTabFragment.java b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/SavedArticlesTabFragment.java index 3bcb969f47..14790abfec 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/SavedArticlesTabFragment.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/SavedArticlesTabFragment.java @@ -50,7 +50,7 @@ public class SavedArticlesTabFragment extends BaseOsmAndFragment implements Trav public void openArticle(TravelArticle article) { FragmentManager fm = getFragmentManager(); if (fm != null) { - WikivoyageArticleDialogFragment.showInstanceByTitle(app, fm, article.getTitle(), article.getLang()); + WikivoyageArticleDialogFragment.showInstance(app, fm, article.getRouteId(), article.getLang()); } } }); @@ -161,7 +161,8 @@ public class SavedArticlesTabFragment extends BaseOsmAndFragment implements Trav } TravelArticle oldArticle = (TravelArticle) oldItem; TravelArticle newArticle = (TravelArticle) newItem; - return oldArticle.getRouteId().equals(newArticle.getRouteId()) + return oldArticle.getRouteId() != null && oldArticle.getLang() != null && + oldArticle.getRouteId().equals(newArticle.getRouteId()) && oldArticle.getLang().equals(newArticle.getLang()); } return false;