diff options
Diffstat (limited to 'main/src/cgeo/geocaching')
| -rw-r--r-- | main/src/cgeo/geocaching/StaticMapsActivity.java | 42 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/StaticMapsProvider.java | 5 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/cgCache.java | 13 |
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())) { |
