diff options
Diffstat (limited to 'main/src/cgeo/geocaching/StaticMapsActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/StaticMapsActivity.java | 65 |
1 files changed, 37 insertions, 28 deletions
diff --git a/main/src/cgeo/geocaching/StaticMapsActivity.java b/main/src/cgeo/geocaching/StaticMapsActivity.java index 7811da5..bd3f70b 100644 --- a/main/src/cgeo/geocaching/StaticMapsActivity.java +++ b/main/src/cgeo/geocaching/StaticMapsActivity.java @@ -9,8 +9,6 @@ import com.googlecode.androidannotations.annotations.Extra; import com.googlecode.androidannotations.annotations.OptionsItem; import com.googlecode.androidannotations.annotations.OptionsMenu; -import org.apache.commons.collections4.CollectionUtils; - import android.app.ProgressDialog; import android.content.Context; import android.graphics.Bitmap; @@ -28,6 +26,9 @@ import java.util.List; @OptionsMenu(R.menu.static_maps_activity_options) public class StaticMapsActivity extends AbstractActivity { + private static final int RESULT_DOWNLOAD_FAILED = -1; + private static final int RESULT_LOAD_FAILED = -2; + private static final int RESULT_SUCCEEDED = 1; private static final String EXTRAS_WAYPOINT = "waypoint"; private static final String EXTRAS_DOWNLOAD = "download"; private static final String EXTRAS_GEOCODE = "geocode"; @@ -47,25 +48,17 @@ public class StaticMapsActivity extends AbstractActivity { if (waitDialog != null) { waitDialog.dismiss(); } - try { - if (CollectionUtils.isEmpty(maps)) { - if (download) { - final boolean succeeded = downloadStaticMaps(); - if (succeeded) { - startActivity(StaticMapsActivity.this.getIntent()); - } else { - showToast(res.getString(R.string.err_detail_google_maps_limit_reached)); - } - } else { - showToast(res.getString(R.string.err_detail_not_load_map_static)); - } - finish(); - } else { - showStaticMaps(); - } - } catch (Exception e) { - Log.e("StaticMapsActivity.loadMapsHandler", e); + final int result = ((Integer) msg.obj).intValue(); + if (result == RESULT_DOWNLOAD_FAILED) { + showToast(res.getString(R.string.err_detail_google_maps_limit_reached)); + finish(); + } else if (result == RESULT_LOAD_FAILED) { + showToast(res.getString(R.string.err_detail_not_load_map_static)); + finish(); + } else { + showStaticMaps(); } + return; } }; @@ -95,11 +88,16 @@ public class StaticMapsActivity extends AbstractActivity { public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState, R.layout.staticmaps_activity); + loadMapsImpl(download); + } + + private void loadMapsImpl(final boolean download) { if (geocode == null) { showToast("Sorry, c:geo forgot for what cache you want to load static maps."); finish(); return; } + this.download = download; waitDialog = ProgressDialog.show(this, null, res.getString(R.string.map_static_loading), true); waitDialog.setCancelable(true); @@ -111,6 +109,16 @@ public class StaticMapsActivity extends AbstractActivity { @Override public void run() { + boolean succeeded = true; + if (download) { + succeeded = downloadStaticMaps(); + } + if (!succeeded) { + Message msg = Message.obtain(); + msg.obj = RESULT_DOWNLOAD_FAILED; + loadMapsHandler.sendMessage(msg); + return; + } try { // try downloading 2 times for (int trials = 0; trials < 2; trials++) { @@ -137,7 +145,13 @@ public class StaticMapsActivity extends AbstractActivity { } } - loadMapsHandler.sendMessage(Message.obtain()); + Message msg = Message.obtain(); + if (maps.isEmpty()) { + msg.obj = RESULT_LOAD_FAILED; + } else { + msg.obj = RESULT_SUCCEEDED; + } + loadMapsHandler.sendMessage(msg); } catch (Exception e) { Log.e("StaticMapsActivity.LoadMapsThread.run", e); } @@ -146,26 +160,21 @@ public class StaticMapsActivity extends AbstractActivity { @OptionsItem(R.id.menu_refresh) void refreshMaps() { - downloadStaticMaps(); - restartActivity(); + loadMapsImpl(true); } private boolean downloadStaticMaps() { - final Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB); + final Geocache cache = DataStore.loadCache(this.geocode, LoadFlags.LOAD_CACHE_OR_DB); if (waypointId == null) { - showToast(res.getString(R.string.info_storing_static_maps)); StaticMapsProvider.storeCacheStaticMap(cache, true); return cache.hasStaticMap(); } final Waypoint waypoint = cache.getWaypointById(waypointId); if (waypoint != null) { - showToast(res.getString(R.string.info_storing_static_maps)); - // refresh always removes old waypoint files StaticMapsProvider.removeWpStaticMaps(waypoint, geocode); StaticMapsProvider.storeWaypointStaticMap(cache, waypoint, true); return StaticMapsProvider.hasStaticMapForWaypoint(geocode, waypoint); } - showToast(res.getString(R.string.err_detail_not_load_map_static)); return false; } |
