aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching')
-rw-r--r--main/src/cgeo/geocaching/StaticMapsActivity.java42
-rw-r--r--main/src/cgeo/geocaching/StaticMapsProvider.java5
-rw-r--r--main/src/cgeo/geocaching/cgCache.java13
3 files changed, 57 insertions, 3 deletions
diff --git a/main/src/cgeo/geocaching/StaticMapsActivity.java b/main/src/cgeo/geocaching/StaticMapsActivity.java
index 8155154..cae01b2 100644
--- a/main/src/cgeo/geocaching/StaticMapsActivity.java
+++ b/main/src/cgeo/geocaching/StaticMapsActivity.java
@@ -4,7 +4,9 @@ import cgeo.geocaching.activity.AbstractActivity;
import org.apache.commons.collections.CollectionUtils;
+import android.app.AlertDialog;
import android.app.ProgressDialog;
+import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
@@ -37,9 +39,14 @@ public class StaticMapsActivity extends AbstractActivity {
waitDialog.dismiss();
}
- showToast(res.getString(R.string.err_detail_not_load_map_static));
-
- finish();
+ if ((waypoint_id != null && Settings.isStoreOfflineWpMaps()) || (waypoint_id == null && Settings.isStoreOfflineMaps())) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(StaticMapsActivity.this);
+ builder.setMessage(R.string.err_detail_ask_store_map_static).setPositiveButton(android.R.string.yes, dialogClickListener)
+ .setNegativeButton(android.R.string.no, dialogClickListener).show();
+ } else {
+ showToast(res.getString(R.string.err_detail_not_load_map_static));
+ finish();
+ }
return;
} else {
if (waitDialog != null) {
@@ -72,6 +79,35 @@ public class StaticMapsActivity extends AbstractActivity {
}
};
+ DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ switch (which) {
+ case DialogInterface.BUTTON_POSITIVE:
+ cgCache cache = app.getCacheByGeocode(geocode);
+ if (waypoint_id == null) {
+ StaticMapsProvider.storeCacheStaticMap(cache, StaticMapsActivity.this);
+ } else {
+ cgWaypoint waypoint = cache.getWaypointById(waypoint_id);
+ if (waypoint != null) {
+ StaticMapsProvider.storeWaypointStaticMap(cache, StaticMapsActivity.this, waypoint);
+ } else {
+ showToast(res.getString(R.string.err_detail_not_load_map_static));
+ break;
+ }
+ }
+ showToast(res.getString(R.string.info_storing_static_maps));
+ break;
+
+ case DialogInterface.BUTTON_NEGATIVE:
+ showToast(res.getString(R.string.err_detail_not_load_map_static));
+ break;
+ }
+ finish();
+ }
+ };
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
diff --git a/main/src/cgeo/geocaching/StaticMapsProvider.java b/main/src/cgeo/geocaching/StaticMapsProvider.java
index 123dbce..3c4aa60 100644
--- a/main/src/cgeo/geocaching/StaticMapsProvider.java
+++ b/main/src/cgeo/geocaching/StaticMapsProvider.java
@@ -85,6 +85,11 @@ public class StaticMapsProvider {
downloadMaps(cache, wpMarkerUrl, "wp" + waypoint.getId() + "_", wpLatlonMap, edge, "");
}
+ public static void storeCacheStaticMap(cgCache cache, Activity activity) {
+ int edge = StaticMapsProvider.guessMinDisplaySide(activity);
+ storeCacheStaticMap(cache, edge);
+ }
+
private static void storeCacheStaticMap(cgCache cache, int edge) {
final String latlonMap = cache.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA);
final StringBuilder waypoints = new StringBuilder();
diff --git a/main/src/cgeo/geocaching/cgCache.java b/main/src/cgeo/geocaching/cgCache.java
index 6032791..edabc0c 100644
--- a/main/src/cgeo/geocaching/cgCache.java
+++ b/main/src/cgeo/geocaching/cgCache.java
@@ -1154,6 +1154,19 @@ public class cgCache implements ICache {
return waypoints.get(index);
}
+ /**
+ * @param index
+ * @return waypoint or <code>null</code>
+ */
+ public cgWaypoint getWaypointById(int id) {
+ for (cgWaypoint waypoint : waypoints) {
+ if (waypoint.getId() == id) {
+ return waypoint;
+ }
+ }
+ return null;
+ }
+
public void parseWaypointsFromNote() {
try {
if (StringUtils.isBlank(getPersonalNote())) {