diff options
Diffstat (limited to 'main/src/cgeo/geocaching/files/GPXImporter.java')
| -rw-r--r-- | main/src/cgeo/geocaching/files/GPXImporter.java | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/main/src/cgeo/geocaching/files/GPXImporter.java b/main/src/cgeo/geocaching/files/GPXImporter.java index 836f6e8..b8dc945 100644 --- a/main/src/cgeo/geocaching/files/GPXImporter.java +++ b/main/src/cgeo/geocaching/files/GPXImporter.java @@ -3,10 +3,12 @@ package cgeo.geocaching.files; import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.Settings;
+import cgeo.geocaching.StaticMapsProvider;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.activity.IAbstractActivity;
import cgeo.geocaching.activity.Progress;
+import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.enumerations.LoadFlags.SaveFlag;
import cgeo.geocaching.utils.CancellableHandler;
@@ -32,6 +34,7 @@ import java.util.Collection; import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
+import java.util.Set;
import java.util.concurrent.CancellationException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -41,10 +44,11 @@ public class GPXImporter { static final int IMPORT_STEP_READ_FILE = 1;
static final int IMPORT_STEP_READ_WPT_FILE = 2;
static final int IMPORT_STEP_STORE_CACHES = 3;
- static final int IMPORT_STEP_FINISHED = 4;
- static final int IMPORT_STEP_FINISHED_WITH_ERROR = 5;
- static final int IMPORT_STEP_CANCEL = 6;
- static final int IMPORT_STEP_CANCELED = 7;
+ static final int IMPORT_STEP_STORE_STATIC_MAPS = 4;
+ static final int IMPORT_STEP_FINISHED = 5;
+ static final int IMPORT_STEP_FINISHED_WITH_ERROR = 6;
+ static final int IMPORT_STEP_CANCEL = 7;
+ static final int IMPORT_STEP_CANCELED = 8;
public static final String GPX_FILE_EXTENSION = ".gpx";
public static final String ZIP_FILE_EXTENSION = ".zip";
@@ -140,6 +144,11 @@ public class GPXImporter { SearchResult search = storeParsedCaches(caches);
Log.i(Settings.tag, "Imported successfully " + caches.size() + " caches.");
+ if (Settings.isStoreOfflineMaps() || Settings.isStoreOfflineWpMaps()) {
+ importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_STORE_STATIC_MAPS, R.string.gpx_import_store_static_maps, search.getCount()));
+ importStaticMaps(search);
+ }
+
importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_FINISHED, search.getCount(), 0, search));
} catch (IOException e) {
Log.i(Settings.tag, "Importing caches failed - error reading data: " + e.getMessage());
@@ -175,6 +184,21 @@ public class GPXImporter { }
return search;
}
+
+ private void importStaticMaps(final SearchResult importedCaches) {
+ final cgeoapplication app = cgeoapplication.getInstance();
+ Set<cgCache> caches = importedCaches.getCachesFromSearchResult(LoadFlags.LOADWAYPOINTS);
+ int storedCacheMaps = 0;
+ for (cgCache cache : caches) {
+ Log.d(Settings.tag, "GPXImporter.ImportThread.importStaticMaps start downloadMaps");
+ StaticMapsProvider.downloadMaps(cache, app);
+ storedCacheMaps++;
+ if (progressHandler.isCancelled()) {
+ throw new CancellationException();
+ }
+ progressHandler.sendMessage(progressHandler.obtainMessage(0, storedCacheMaps, 0));
+ }
+ }
}
static class ImportLocFileThread extends ImportThread {
@@ -367,6 +391,11 @@ public class GPXImporter { progress.setMaxProgressAndReset(msg.arg2);
break;
+ case IMPORT_STEP_STORE_STATIC_MAPS:
+ progress.setMessage(res.getString(msg.arg1));
+ progress.setMaxProgressAndReset(msg.arg2);
+ break;
+
case IMPORT_STEP_FINISHED:
progress.dismiss();
fromActivity.helpDialog(res.getString(R.string.gpx_import_title_caches_imported), msg.arg1 + " " + res.getString(R.string.gpx_import_caches_imported));
|
