aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorMarco Jacob <mjacob@union06.de>2012-01-16 20:44:23 +0100
committerMarco Jacob <mjacob@union06.de>2012-01-16 20:44:23 +0100
commitf150f46080eb09e809a3c1c2225c537391498040 (patch)
tree0cfe0384f0bd3e73cf6698047389f444c7fd1800 /main
parentc5b9381a0e9ed25ca016964b45d72f99fe4793f9 (diff)
parentf40effc1f6b8000007763cc788ce22f430cc779e (diff)
downloadcgeo-f150f46080eb09e809a3c1c2225c537391498040.zip
cgeo-f150f46080eb09e809a3c1c2225c537391498040.tar.gz
cgeo-f150f46080eb09e809a3c1c2225c537391498040.tar.bz2
Merge git://github.com/cgeo/c-geo-opensource
Diffstat (limited to 'main')
-rw-r--r--main/AndroidManifest.xml6
-rw-r--r--main/src/cgeo/geocaching/cgeocaches.java5
-rw-r--r--main/src/cgeo/geocaching/files/GPXImporter.java21
-rw-r--r--main/src/cgeo/geocaching/sorting/EventDateComparator.java23
-rw-r--r--main/src/cgeo/geocaching/ui/CacheListAdapter.java5
-rw-r--r--main/src/cgeo/geocaching/ui/CompassMiniView.java2
-rw-r--r--main/src/cgeo/geocaching/ui/GPXListAdapter.java2
-rw-r--r--main/src/cgeo/geocaching/ui/MapfileListAdapter.java2
8 files changed, 48 insertions, 18 deletions
diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml
index b94a4d7..5770392 100644
--- a/main/AndroidManifest.xml
+++ b/main/AndroidManifest.xml
@@ -154,6 +154,12 @@
<data android:mimeType="text/xml" />
<data android:mimeType="application/xml" />
<data android:mimeType="application/zip" />
+ <data android:mimeType="application/x-compressed" />
+ <data android:mimeType="application/x-zip-compressed" />
+ <data android:mimeType="application/x-zip" />
+ <data android:mimeType="application/octet-stream" />
+ <data android:pathPattern=".*\\.gpx" />
+ <data android:pathPattern=".*\\.zip" />
</intent-filter>
</activity>
<activity
diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java
index 0e5983f..25bbc48 100644
--- a/main/src/cgeo/geocaching/cgeocaches.java
+++ b/main/src/cgeo/geocaching/cgeocaches.java
@@ -20,6 +20,7 @@ import cgeo.geocaching.maps.CGeoMap;
import cgeo.geocaching.sorting.CacheComparator;
import cgeo.geocaching.sorting.DateComparator;
import cgeo.geocaching.sorting.DifficultyComparator;
+import cgeo.geocaching.sorting.EventDateComparator;
import cgeo.geocaching.sorting.FindsComparator;
import cgeo.geocaching.sorting.GeocodeComparator;
import cgeo.geocaching.sorting.InventoryComparator;
@@ -2630,12 +2631,12 @@ public class cgeocaches extends AbstractListActivity {
}
}
if (eventsOnly) {
- adapter.setComparator(new DateComparator());
+ adapter.setComparator(new EventDateComparator());
}
else if (type == CacheListType.HISTORY) {
adapter.setComparator(new VisitComparator());
}
- else if (adapter.getCacheComparator() != null && adapter.getCacheComparator() instanceof DateComparator) {
+ else if (adapter.getCacheComparator() != null && adapter.getCacheComparator() instanceof EventDateComparator) {
adapter.setComparator(null);
}
}
diff --git a/main/src/cgeo/geocaching/files/GPXImporter.java b/main/src/cgeo/geocaching/files/GPXImporter.java
index e7853f0..7ee05ff 100644
--- a/main/src/cgeo/geocaching/files/GPXImporter.java
+++ b/main/src/cgeo/geocaching/files/GPXImporter.java
@@ -26,8 +26,10 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.List;
import java.util.concurrent.CancellationException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -46,6 +48,9 @@ public class GPXImporter {
public static final String ZIP_FILE_EXTENSION = ".zip";
public static final String WAYPOINTS_FILE_SUFFIX_AND_EXTENSION = "-wpts.gpx";
+ private static final List<String> GPX_MIME_TYPES = Arrays.asList(new String[] { "text/xml", "application/xml" });
+ private static final List<String> ZIP_MIME_TYPES = Arrays.asList(new String[] { "application/zip", "application/x-compressed", "application/x-zip-compressed", "application/x-zip", "application/octet-stream" });
+
private Progress progress = new Progress();
private Resources res;
@@ -85,19 +90,25 @@ public class GPXImporter {
final Uri uri = intent.getData();
String mimeType = intent.getType();
- // if mimetype can't be determined (e.g. for emulators email app), use a default
+ // if mimetype can't be determined (e.g. for emulators email app), derive it from uri file extension
// contentResolver.getType(uri) doesn't help but throws exception for emulators email app
// Permission Denial: reading com.android.email.provider.EmailProvider uri
// Google search says: there is no solution for this problem
- // TODO: check if problem occurs with gmail as well
+ // Gmail doesn't work at all, see #967
if (mimeType == null) {
- mimeType = "application/zip";
+ if (StringUtils.endsWithIgnoreCase(uri.getPath(), GPX_FILE_EXTENSION)) {
+ mimeType = "application/xml";
+ } else {
+ // if we can't determine a better type, default to zip import
+ // emulator email sends e.g. content://com.android.email.attachmentprovider/1/1/RAW, mimetype=null
+ mimeType = "application/zip";
+ }
}
Log.i(Settings.tag, "importGPX: " + uri + ", mimetype=" + mimeType);
- if (StringUtils.equalsIgnoreCase("text/xml", mimeType) || StringUtils.equalsIgnoreCase("application/xml", mimeType)) {
+ if (GPX_MIME_TYPES.contains(mimeType)) {
new ImportGpxAttachmentThread(uri, contentResolver, listId, importStepHandler, progressHandler).start();
- } else if (StringUtils.equalsIgnoreCase("application/zip", mimeType)) {
+ } else if (ZIP_MIME_TYPES.contains(mimeType)) {
new ImportGpxZipAttachmentThread(uri, contentResolver, listId, importStepHandler, progressHandler).start();
} else {
importFinished();
diff --git a/main/src/cgeo/geocaching/sorting/EventDateComparator.java b/main/src/cgeo/geocaching/sorting/EventDateComparator.java
new file mode 100644
index 0000000..0092901
--- /dev/null
+++ b/main/src/cgeo/geocaching/sorting/EventDateComparator.java
@@ -0,0 +1,23 @@
+package cgeo.geocaching.sorting;
+
+import cgeo.geocaching.cgCache;
+
+
+/**
+ * Compares caches by date. Used only for event caches.
+ *
+ * @author campbeb
+ *
+ */
+public class EventDateComparator extends DateComparator {
+
+ @Override
+ protected boolean canCompare(cgCache cache1, cgCache cache2) {
+ return super.canCompare(cache1, cache2);
+ }
+
+ @Override
+ protected int compareCaches(cgCache cache1, cgCache cache2) {
+ return super.compareCaches(cache1, cache2);
+ }
+}
diff --git a/main/src/cgeo/geocaching/ui/CacheListAdapter.java b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
index c2910cf..85856fc 100644
--- a/main/src/cgeo/geocaching/ui/CacheListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
@@ -5,11 +5,6 @@ import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
import cgeo.geocaching.cgBase;
import cgeo.geocaching.cgCache;
-import cgeo.geocaching.R.color;
-import cgeo.geocaching.R.drawable;
-import cgeo.geocaching.R.id;
-import cgeo.geocaching.R.layout;
-import cgeo.geocaching.R.string;
import cgeo.geocaching.enumerations.CacheListType;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.CacheType;
diff --git a/main/src/cgeo/geocaching/ui/CompassMiniView.java b/main/src/cgeo/geocaching/ui/CompassMiniView.java
index 5f3b8c2..1fa4cfb 100644
--- a/main/src/cgeo/geocaching/ui/CompassMiniView.java
+++ b/main/src/cgeo/geocaching/ui/CompassMiniView.java
@@ -1,8 +1,6 @@
package cgeo.geocaching.ui;
import cgeo.geocaching.R;
-import cgeo.geocaching.R.drawable;
-import cgeo.geocaching.R.styleable;
import cgeo.geocaching.geopoint.Geopoint;
import android.content.Context;
diff --git a/main/src/cgeo/geocaching/ui/GPXListAdapter.java b/main/src/cgeo/geocaching/ui/GPXListAdapter.java
index 23f38b0..2f50e6c 100644
--- a/main/src/cgeo/geocaching/ui/GPXListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/GPXListAdapter.java
@@ -3,8 +3,6 @@ package cgeo.geocaching.ui;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
import cgeo.geocaching.cgeogpxes;
-import cgeo.geocaching.R.id;
-import cgeo.geocaching.R.layout;
import cgeo.geocaching.files.GPXImporter;
import android.app.Activity;
diff --git a/main/src/cgeo/geocaching/ui/MapfileListAdapter.java b/main/src/cgeo/geocaching/ui/MapfileListAdapter.java
index cc16733..9196a41 100644
--- a/main/src/cgeo/geocaching/ui/MapfileListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/MapfileListAdapter.java
@@ -3,8 +3,6 @@ package cgeo.geocaching.ui;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
import cgeo.geocaching.cgSelectMapfile;
-import cgeo.geocaching.R.id;
-import cgeo.geocaching.R.layout;
import android.app.Activity;
import android.graphics.Typeface;