aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2013-02-01 18:12:04 +0100
committerBananeweizen <bananeweizen@gmx.de>2013-02-01 18:12:04 +0100
commit654b26643f70e94295e7120fc9a53324df36c551 (patch)
treedc260afc59a0b91e3bc810f8420ae95028f87252
parentdd581e8a137e5808e0e589c72f28907b5c674a6e (diff)
downloadcgeo-654b26643f70e94295e7120fc9a53324df36c551.zip
cgeo-654b26643f70e94295e7120fc9a53324df36c551.tar.gz
cgeo-654b26643f70e94295e7120fc9a53324df36c551.tar.bz2
new: spoiler support for opencaching.de
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java74
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCXMLClient.java2
2 files changed, 75 insertions, 1 deletions
diff --git a/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java b/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java
index 9618028..002556a 100644
--- a/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java
+++ b/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java
@@ -1,5 +1,6 @@
package cgeo.geocaching.connector.oc;
+import cgeo.geocaching.Image;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
@@ -48,6 +49,8 @@ public class OC11XMLParser {
private static final int CACHE_PARSE_LIMIT = 250;
private static final Resources res = cgeoapplication.getInstance().getResources();
+ private static ImageHolder imageHolder = null;
+
private static class CacheHolder {
public cgCache cache;
public String latitude;
@@ -66,6 +69,13 @@ public class OC11XMLParser {
public String hint;
}
+ private static class ImageHolder {
+ public String url;
+ public String cacheId;
+ protected String title;
+ protected boolean isSpoiler;
+ }
+
private static Date parseFullDate(final String date) {
final SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
ISO8601DATEFORMAT.setTimeZone(TimeZone.getTimeZone("UTC"));
@@ -535,6 +545,70 @@ public class OC11XMLParser {
}
});
+ // pictures
+ final Element picture = root.getChild("picture");
+
+ picture.setStartElementListener(new StartElementListener() {
+
+ @Override
+ public void start(Attributes attrs) {
+ imageHolder = new ImageHolder();
+ }
+ });
+
+ picture.setEndElementListener(new EndElementListener() {
+
+ @Override
+ public void end() {
+ if (imageHolder.isSpoiler) {
+ final cgCache cache = caches.get(imageHolder.cacheId);
+ if (cache != null) {
+ Image spoiler = new Image(imageHolder.url, imageHolder.title);
+ cache.addSpoiler(spoiler);
+ }
+ }
+ }
+ });
+
+ // picture.object
+ picture.getChild("object").setEndTextElementListener(new EndTextElementListener() {
+
+ @Override
+ public void end(String body) {
+ imageHolder.cacheId = StringUtils.trim(body);
+ }
+ });
+
+ // picture.title
+ picture.getChild("title").setEndTextElementListener(new EndTextElementListener() {
+
+ @Override
+ public void end(String body) {
+ imageHolder.title = StringUtils.trim(body);
+ }
+ });
+
+ // picture.url
+ picture.getChild("url").setEndTextElementListener(new EndTextElementListener() {
+
+ @Override
+ public void end(String body) {
+ imageHolder.url = StringUtils.trim(body);
+ }
+ });
+
+ // picture.attributes
+ picture.getChild("attributes").setStartElementListener(new StartElementListener() {
+
+ @Override
+ public void start(Attributes attributes) {
+ if (attributes.getIndex("spoiler") > -1) {
+ String spoiler = attributes.getValue("spoiler");
+ imageHolder.isSpoiler = ("1".equals(spoiler));
+ }
+ }
+ });
+
try {
Xml.parse(stream, Xml.Encoding.UTF_8, root.getContentHandler());
return caches.values();
diff --git a/main/src/cgeo/geocaching/connector/oc/OCXMLClient.java b/main/src/cgeo/geocaching/connector/oc/OCXMLClient.java
index 75cd6f0..3758f7e 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCXMLClient.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCXMLClient.java
@@ -101,7 +101,7 @@ public class OCXMLClient {
private static Parameters getOCXmlQueryParameters(final boolean withDescription, final boolean withLogs) {
return new Parameters("modifiedsince", "20060320000000",
"user", "0", "cache", "1", "cachedesc", withDescription ? "1" : "0",
- "cachelog", withLogs ? "1" : "0", "picture", "0", "removedobject", "0",
+ "cachelog", withLogs ? "1" : "0", "picture", "1", "removedobject", "0",
"session", "0", "doctype", "0", "charset", "utf-8", "zip", "gzip");
}
}