From e2115e0787c65c55f0dfe6dd9b090543abd86bec Mon Sep 17 00:00:00 2001 From: Alex Sytnyk Date: Mon, 16 Apr 2018 02:05:25 +0300 Subject: [PATCH 1/4] Init travel books before opening the WikivoyageExploreDialogFragment --- OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index 4ecaf1de5e..fd61c9cf7f 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -770,6 +770,7 @@ public class MapActivityActions implements DialogProvider { .setListener(new ItemClickListener() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { + getMyApplication().getTravelDbHelper().initTravelBooks(); MapActivity.clearPrevActivityIntent(); WikivoyageExploreDialogFragment.showInstance(mapActivity.getSupportFragmentManager()); return true; From cd33329ad43141f1f57510e0e9eb8abec1f3c74c Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Sun, 15 Apr 2018 22:02:24 +0000 Subject: [PATCH 2/4] Translated using Weblate (French) Currently translated at 94.6% (2396 of 2532 strings) --- OsmAnd/res/values-fr/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 47539d7193..2a3230d9b0 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -544,7 +544,7 @@ Au-delà la navigation bascule automatiquement sur le service en ligne CloudMade Zoom automatique de la carte Paramètres supplémentaires Paramètres - Enregistrer la trace courante sur la carte SD + Enregistrer la trace courante sur la carte mémoire. Enregistrer la trace GPX Sélectionnez l\'intervalle d\'enregistrement de la trace pendant l\'itinéraire Intervalle d\'enregistrement pendant la navigation @@ -963,7 +963,7 @@ Mémoire proportionnelle %4$s Mo (limite Android %5$s Mo, Dalvik %6$s Mo).Clôturer les modifications Le service OsmAnd s\'exécute toujours en tâche de fond. Voulez-vous également l\'arrêter ? - Exécuter l\'application en mode sûr (utiliser le code Android plus lent plutôt que le code natif) + Exécuter l\'application en mode sûr (utiliser le code Android plus lent plutôt que le code natif). Mode sûr L\'application s\'exécute en mode sûr (peut être désactivé dans Paramètres). Sélectionnez quand afficher les cartes routières : @@ -1097,7 +1097,7 @@ Mémoire proportionnelle %4$s Mo (limite Android %5$s Mo, Dalvik %6$s Mo).Suppression Autre Encore %1$d téléchargements possibles - Vous pouvez encore télécharger %1$d fichier(s). + Vous pouvez télécharger encore %1$d fichier(s) Version complète Utiliser le capteur magnétique pour déterminer l\'orientation de la boussole plutôt que le capteur d\'orientation. Utiliser le magnétomètre (boussole) @@ -1114,7 +1114,7 @@ Mémoire proportionnelle %4$s Mo (limite Android %5$s Mo, Dalvik %6$s Mo).vitesse altitude Nom du fichier GPX - L\`enregistrement du fichier GPX {0} a réussi + Fichier GPX {0} enregistré Ce greffon permet, depuis la carte, de créer un itinéraire soit un cliquant sur la carte, soit en ouvrant ou en modifiant un fichier GPX existant; ainsi que de mesurer la distance entre des points. L\'itinéraire peut être enregistré dans un fichier GPX qui peut lui-même être utilisé plus tard pour une navigation. Mesure de distance et Outil de planification Ne plus afficher @@ -1131,7 +1131,7 @@ Mémoire proportionnelle %4$s Mo (limite Android %5$s Mo, Dalvik %6$s Mo).Supprimer la mesure Téléchargement en cours - Recherche des rues dans les villes avoisinantes + Recherche des rues dans les villes à proximité Ordonne automatiquement les étapes pour l\'itinéraire le plus court. Optimiser Sélectionnez d\'abord une ville ou une rue @@ -1164,7 +1164,7 @@ Mémoire proportionnelle %4$s Mo (limite Android %5$s Mo, Dalvik %6$s Mo).Annonce… Radars Alertes de trafic - Merci de spécifier votre nom d\'utilisateur et mot de passe OSM dans les paramètres + Merci d\'indiquer votre nom d\'utilisateur et mot de passe OSM dans les paramètres Supprimer les étapes intermédiaires Conserver les étapes intermédiaires Données de tuile : %1$s @@ -1633,7 +1633,7 @@ Mémoire proportionnelle %4$s Mo (limite Android %5$s Mo, Dalvik %6$s Mo).Utiliser le rendu matériel accéléré OpenGL (peut ne pas fonctionner sur certains appareils). Tous les fichiers sont à jour Ignorer - Téléchargement impossible. Veuillez-vous connecter à Internet (Wifi ou données mobiles) pour poursuivre. + Téléchargement impossible, veuillez vérifier votre connexion Internet. Tous les téléchargements Mises à jour Zone @@ -1670,7 +1670,7 @@ Mémoire proportionnelle %4$s Mo (limite Android %5$s Mo, Dalvik %6$s Mo).Configurez le serveur mandataire (Proxy). Par exemple : 127.0.0.1 Port du mandataire (Proxy) Configurez le numéro de port de votre mandataire (Proxy). Par exemple : 8118 - Définir un proxy pour les communications Internet + Indiquer un serveur proxy. Confidentialité Éclairage public Activer le mandataire HTTP (Proxy) From aff0f0302a4e42f549f35ec7126f5a30c6a27244 Mon Sep 17 00:00:00 2001 From: Alex Sytnyk Date: Mon, 16 Apr 2018 02:16:10 +0300 Subject: [PATCH 3/4] Use TravelDbHelper#getSelectedTravelBook instead of OsmAndSettings#SELECTED_TRAVEL_BOOK --- .../wikivoyage/data/TravelLocalDataHelper.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java index 3c87071fb4..61160471e7 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java @@ -263,7 +263,7 @@ public class TravelLocalDataHelper { if (conn != null) { try { String query = HISTORY_TABLE_SELECT + " WHERE " + HISTORY_COL_TRAVEL_BOOK + " = ?"; - String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get(); + String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); SQLiteCursor cursor = conn.rawQuery(query, new String[]{travelBook}); if (cursor.moveToFirst()) { do { @@ -282,7 +282,7 @@ public class TravelLocalDataHelper { SQLiteConnection conn = openConnection(false); if (conn != null) { try { - String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get(); + String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); conn.execSQL("INSERT INTO " + HISTORY_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?)", new Object[]{item.cityId, item.articleTitle, item.lang, item.isPartOf, item.lastAccessed, travelBook}); @@ -296,7 +296,7 @@ public class TravelLocalDataHelper { SQLiteConnection conn = openConnection(false); if (conn != null) { try { - String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get(); + String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); conn.execSQL("UPDATE " + HISTORY_TABLE_NAME + " SET " + HISTORY_COL_ARTICLE_TITLE + " = ?, " + HISTORY_COL_LANG + " = ?, " + @@ -316,7 +316,7 @@ public class TravelLocalDataHelper { SQLiteConnection conn = openConnection(false); if (conn != null) { try { - String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get(); + String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); conn.execSQL("DELETE FROM " + HISTORY_TABLE_NAME + " WHERE " + HISTORY_COL_CITY_ID + " = ?" + " AND " + HISTORY_COL_TRAVEL_BOOK + " = ?", @@ -331,7 +331,7 @@ public class TravelLocalDataHelper { SQLiteConnection conn = openConnection(false); if (conn != null) { try { - String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get(); + String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); conn.execSQL("DELETE FROM " + HISTORY_TABLE_NAME + " WHERE " + HISTORY_COL_TRAVEL_BOOK + " = ?", new Object[]{travelBook}); @@ -348,7 +348,7 @@ public class TravelLocalDataHelper { if (conn != null) { try { String query = BOOKMARKS_TABLE_SELECT + " WHERE " + BOOKMARKS_COL_TRAVEL_BOOK + " = ?"; - String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get(); + String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); SQLiteCursor cursor = conn.rawQuery(query, new String[]{travelBook}); if (cursor.moveToFirst()) { do { @@ -367,7 +367,7 @@ public class TravelLocalDataHelper { SQLiteConnection conn = openConnection(false); if (conn != null) { try { - String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get(); + String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); conn.execSQL("INSERT INTO " + BOOKMARKS_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?, ?)", new Object[]{article.cityId, article.title, article.lang, article.aggregatedPartOf, article.imageTitle, article.content, travelBook}); @@ -381,7 +381,7 @@ public class TravelLocalDataHelper { SQLiteConnection conn = openConnection(false); if (conn != null) { try { - String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get(); + String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); conn.execSQL("DELETE FROM " + BOOKMARKS_TABLE_NAME + " WHERE " + BOOKMARKS_COL_CITY_ID + " = ?" + " AND " + BOOKMARKS_COL_LANG + " = ?" + From a18b46278f5648aede2e4eadf5e2a75bfc01f327 Mon Sep 17 00:00:00 2001 From: Alex Sytnyk Date: Mon, 16 Apr 2018 02:30:25 +0300 Subject: [PATCH 4/4] Fix NPE --- .../data/TravelLocalDataHelper.java | 49 ++++++++++++++++--- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java index 61160471e7..d135bb2aa7 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java @@ -259,11 +259,14 @@ public class TravelLocalDataHelper { @NonNull TLongObjectHashMap getAllHistoryMap() { TLongObjectHashMap res = new TLongObjectHashMap<>(); + String travelBook = getSelectedTravelBookName(); + if (travelBook == null) { + return res; + } SQLiteConnection conn = openConnection(true); if (conn != null) { try { String query = HISTORY_TABLE_SELECT + " WHERE " + HISTORY_COL_TRAVEL_BOOK + " = ?"; - String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); SQLiteCursor cursor = conn.rawQuery(query, new String[]{travelBook}); if (cursor.moveToFirst()) { do { @@ -279,10 +282,13 @@ public class TravelLocalDataHelper { } void addHistoryItem(WikivoyageSearchHistoryItem item) { + String travelBook = getSelectedTravelBookName(); + if (travelBook == null) { + return; + } SQLiteConnection conn = openConnection(false); if (conn != null) { try { - String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); conn.execSQL("INSERT INTO " + HISTORY_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?)", new Object[]{item.cityId, item.articleTitle, item.lang, item.isPartOf, item.lastAccessed, travelBook}); @@ -293,10 +299,13 @@ public class TravelLocalDataHelper { } void updateHistoryItem(WikivoyageSearchHistoryItem item) { + String travelBook = getSelectedTravelBookName(); + if (travelBook == null) { + return; + } SQLiteConnection conn = openConnection(false); if (conn != null) { try { - String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); conn.execSQL("UPDATE " + HISTORY_TABLE_NAME + " SET " + HISTORY_COL_ARTICLE_TITLE + " = ?, " + HISTORY_COL_LANG + " = ?, " + @@ -313,10 +322,13 @@ public class TravelLocalDataHelper { } void removeHistoryItem(WikivoyageSearchHistoryItem item) { + String travelBook = getSelectedTravelBookName(); + if (travelBook == null) { + return; + } SQLiteConnection conn = openConnection(false); if (conn != null) { try { - String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); conn.execSQL("DELETE FROM " + HISTORY_TABLE_NAME + " WHERE " + HISTORY_COL_CITY_ID + " = ?" + " AND " + HISTORY_COL_TRAVEL_BOOK + " = ?", @@ -328,10 +340,13 @@ public class TravelLocalDataHelper { } void clearAllHistory() { + String travelBook = getSelectedTravelBookName(); + if (travelBook == null) { + return; + } SQLiteConnection conn = openConnection(false); if (conn != null) { try { - String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); conn.execSQL("DELETE FROM " + HISTORY_TABLE_NAME + " WHERE " + HISTORY_COL_TRAVEL_BOOK + " = ?", new Object[]{travelBook}); @@ -344,11 +359,14 @@ public class TravelLocalDataHelper { @NonNull List getSavedArticles() { List res = new ArrayList<>(); + String travelBook = getSelectedTravelBookName(); + if (travelBook == null) { + return res; + } SQLiteConnection conn = openConnection(true); if (conn != null) { try { String query = BOOKMARKS_TABLE_SELECT + " WHERE " + BOOKMARKS_COL_TRAVEL_BOOK + " = ?"; - String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); SQLiteCursor cursor = conn.rawQuery(query, new String[]{travelBook}); if (cursor.moveToFirst()) { do { @@ -364,10 +382,13 @@ public class TravelLocalDataHelper { } void addSavedArticle(TravelArticle article) { + String travelBook = getSelectedTravelBookName(); + if (travelBook == null) { + return; + } SQLiteConnection conn = openConnection(false); if (conn != null) { try { - String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); conn.execSQL("INSERT INTO " + BOOKMARKS_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?, ?)", new Object[]{article.cityId, article.title, article.lang, article.aggregatedPartOf, article.imageTitle, article.content, travelBook}); @@ -378,10 +399,13 @@ public class TravelLocalDataHelper { } void removeSavedArticle(TravelArticle article) { + String travelBook = getSelectedTravelBookName(); + if (travelBook == null) { + return; + } SQLiteConnection conn = openConnection(false); if (conn != null) { try { - String travelBook = context.getTravelDbHelper().getSelectedTravelBook().getName(); conn.execSQL("DELETE FROM " + BOOKMARKS_TABLE_NAME + " WHERE " + BOOKMARKS_COL_CITY_ID + " = ?" + " AND " + BOOKMARKS_COL_LANG + " = ?" + @@ -393,6 +417,15 @@ public class TravelLocalDataHelper { } } + @Nullable + private String getSelectedTravelBookName() { + File selectedTravelBook = context.getTravelDbHelper().getSelectedTravelBook(); + if (selectedTravelBook != null) { + return selectedTravelBook.getName(); + } + return null; + } + private WikivoyageSearchHistoryItem readHistoryItem(SQLiteCursor cursor) { WikivoyageSearchHistoryItem res = new WikivoyageSearchHistoryItem();