aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/res/values/strings.xml2
-rw-r--r--main/src/cgeo/geocaching/Settings.java5
-rw-r--r--main/src/cgeo/geocaching/cgeoinit.java3
-rw-r--r--main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java6
-rw-r--r--main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java16
5 files changed, 25 insertions, 7 deletions
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index ead1b80..292206e 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -218,7 +218,7 @@
<string name="warn_search_help_tb">Enter the code for a trackable. For example \"TB29QMZ\".</string>
<string name="warn_log_text_fill">Please fill in text for your log.</string>
<string name="warn_load_images">c:geo failed to load images.</string>
-
+ <string name="warn_invalid_mapfile">The selected map file is not a valid mapsforge version 0.2.4 map file.\nOffline maps are not available.</string>
<string name="info_log_posted">c:geo successfully submitted the log.</string>
<string name="info_log_saved">c:geo successfully saved the log.</string>
diff --git a/main/src/cgeo/geocaching/Settings.java b/main/src/cgeo/geocaching/Settings.java
index 872c3f6..7fdf651 100644
--- a/main/src/cgeo/geocaching/Settings.java
+++ b/main/src/cgeo/geocaching/Settings.java
@@ -5,6 +5,7 @@ import cgeo.geocaching.enumerations.LiveMapStrategy.Strategy;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.maps.MapProviderFactory;
import cgeo.geocaching.maps.interfaces.MapProvider;
+import cgeo.geocaching.maps.mapsforge.MapsforgeMapProvider;
import cgeo.geocaching.utils.CryptUtils;
import org.apache.commons.lang3.StringUtils;
@@ -441,6 +442,10 @@ public final class Settings {
return commitResult;
}
+ public static boolean isValidMapFile(final String mapFileIn) {
+ return MapsforgeMapProvider.isValidMapFile(mapFileIn);
+ }
+
public static coordInputFormatEnum getCoordInputFormat() {
return coordInputFormatEnum.fromInt(sharedPrefs.getInt(KEY_COORD_INPUT_FORMAT, 0));
}
diff --git a/main/src/cgeo/geocaching/cgeoinit.java b/main/src/cgeo/geocaching/cgeoinit.java
index 6493582..2269ad7 100644
--- a/main/src/cgeo/geocaching/cgeoinit.java
+++ b/main/src/cgeo/geocaching/cgeoinit.java
@@ -895,6 +895,9 @@ public class cgeoinit extends AbstractActivity {
if (resultCode == RESULT_OK) {
if (data.hasExtra("mapfile")) {
Settings.setMapFile(data.getStringExtra("mapfile"));
+ if (!Settings.isValidMapFile(Settings.getMapFile())) {
+ showToast(res.getString(R.string.warn_invalid_mapfile));
+ }
}
}
initMapfileEdittext(true);
diff --git a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java
index 1929b7b..2e0cc45 100644
--- a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java
+++ b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java
@@ -12,6 +12,8 @@ import cgeo.geocaching.maps.interfaces.GeoPointImpl;
import cgeo.geocaching.maps.interfaces.MapProvider;
import cgeo.geocaching.maps.interfaces.OtherCachersOverlayItemImpl;
+import org.mapsforge.android.maps.MapDatabase;
+
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
@@ -91,4 +93,8 @@ public class MapsforgeMapProvider implements MapProvider {
return baseItem;
}
+ public static boolean isValidMapFile(String mapFileIn) {
+ return MapDatabase.isValidMapFile(mapFileIn);
+ }
+
}
diff --git a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java
index d66088e..048f7a2 100644
--- a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java
+++ b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java
@@ -1,5 +1,6 @@
package cgeo.geocaching.maps.mapsforge;
+import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
import cgeo.geocaching.maps.CachesOverlay;
import cgeo.geocaching.maps.OtherCachersOverlay;
@@ -16,7 +17,6 @@ import cgeo.geocaching.maps.interfaces.OverlayImpl.overlayType;
import cgeo.geocaching.utils.Log;
import org.mapsforge.android.maps.GeoPoint;
-import org.mapsforge.android.maps.MapDatabase;
import org.mapsforge.android.maps.MapView;
import org.mapsforge.android.maps.MapViewMode;
import org.mapsforge.android.maps.Overlay;
@@ -30,6 +30,7 @@ import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
+import android.widget.Toast;
public class MapsforgeMapView extends MapView implements MapViewImpl {
private GestureDetector gestureDetector;
@@ -170,11 +171,14 @@ public class MapsforgeMapView extends MapView implements MapViewImpl {
setMapViewMode(MapViewMode.OPENCYCLEMAP_TILE_DOWNLOAD);
break;
case MapsforgeMapProvider.OFFLINE:
- if (MapDatabase.isValidMapFile(Settings.getMapFile())) {
- setMapViewMode(MapViewMode.CANVAS_RENDERER);
- super.setMapFile(Settings.getMapFile());
- } else {
- setMapViewMode(MapViewMode.MAPNIK_TILE_DOWNLOAD);
+ setMapViewMode(MapViewMode.CANVAS_RENDERER);
+ super.setMapFile(Settings.getMapFile());
+ if (!Settings.isValidMapFile(Settings.getMapFile())) {
+ Toast.makeText(
+ getContext(),
+ getContext().getResources().getString(R.string.warn_invalid_mapfile),
+ Toast.LENGTH_LONG)
+ .show();
}
break;
default: