aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/layout/init.xml21
-rw-r--r--res/values-cs/strings.xml2
-rw-r--r--res/values-de/strings.xml1
-rw-r--r--res/values/strings.xml1
-rw-r--r--src/cgeo/geocaching/cgBase.java61
-rw-r--r--src/cgeo/geocaching/cgCache.java12
-rw-r--r--src/cgeo/geocaching/cgSettings.java1
-rw-r--r--src/cgeo/geocaching/cgeodetail.java2
-rw-r--r--src/cgeo/geocaching/cgeoinit.java24
-rw-r--r--src/cgeo/geocaching/files/GPXParser.java17
10 files changed, 103 insertions, 39 deletions
diff --git a/res/layout/init.xml b/res/layout/init.xml
index 887aef0..a3d2faf 100644
--- a/res/layout/init.xml
+++ b/res/layout/init.xml
@@ -289,6 +289,27 @@
android:textColor="?text_color"
android:text="@string/init_captcha" />
</LinearLayout>
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal" >
+ <CheckBox android:id="@+id/loaddirectionimg"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_gravity="left"
+ android:padding="1px"
+ android:gravity="center" />
+ <TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:gravity="left"
+ android:paddingRight="3dip"
+ android:textSize="14dip"
+ android:textColor="?text_color"
+ android:text="@string/init_loaddirectionimg" />
+ </LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 4fb4656..a29d77c 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -258,7 +258,7 @@
<string name="init_gcvote">gcvote.com</string>
<string name="init_go4cache">Go 4 Cache</string>
<string name="init_twitter">twitter</string>
- <string name="init_username">uživatelské heslo</string>
+ <string name="init_username">uživatelské jméno</string>
<string name="init_password">heslo</string>
<string name="init_passvote">heslo</string>
<string name="init_login">zkontrolovat</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 1267d56..81730f3 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -425,6 +425,7 @@
<string name="init_select_mapfile">...</string>
<string name="init_trackautovisit">Trackables automatisch auf \"besuchen\" setzen</string>
<string name="init_sigautoinsert">Signatur automatisch einfügen</string>
+ <string name="init_loaddirectionimg">Richtungs-Grafik laden wenn nötig</string>
<!-- map sources -->
<string-array name="map_sources">
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 970d91e..59d343c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -434,6 +434,7 @@
<string name="init_select_mapfile">...</string>
<string name="init_trackautovisit">Set trackables automatically to \"visit\"</string>
<string name="init_sigautoinsert">Insert signature automatically</string>
+ <string name="init_loaddirectionimg">Load direction-image if necessary</string>
<!-- map sources -->
<string-array name="map_sources">
diff --git a/src/cgeo/geocaching/cgBase.java b/src/cgeo/geocaching/cgBase.java
index 90f69f1..f9ee8c2 100644
--- a/src/cgeo/geocaching/cgBase.java
+++ b/src/cgeo/geocaching/cgBase.java
@@ -759,16 +759,19 @@ public class cgBase {
}
// cache direction - image
- try {
- final Matcher matcherDirection = patternDirection.matcher(row);
- while (matcherDirection.find()) {
- if (matcherDirection.groupCount() > 0) {
- cache.directionImg = matcherDirection.group(1);
- }
- }
- } catch (Exception e) {
- // failed to parse direction image
- Log.w(cgSettings.tag, "cgeoBase.parseSearch: Failed to parse cache direction image");
+ if (settings.loadDirectionImg)
+ {
+ try {
+ final Matcher matcherDirection = patternDirection.matcher(row);
+ while (matcherDirection.find()) {
+ if (matcherDirection.groupCount() > 0) {
+ cache.directionImg = matcherDirection.group(1);
+ }
+ }
+ } catch (Exception e) {
+ // failed to parse direction image
+ Log.w(cgSettings.tag, "cgeoBase.parseSearch: Failed to parse cache direction image");
+ }
}
// cache inventory
@@ -945,10 +948,13 @@ public class cgBase {
}
// get direction images
- for (cgCache oneCache : caches.cacheList) {
- if (oneCache.latitude == null && oneCache.longitude == null && oneCache.direction == null && oneCache.directionImg != null) {
- cgDirectionImg.getDrawable(oneCache.geocode, oneCache.directionImg);
- }
+ if (settings.loadDirectionImg)
+ {
+ for (cgCache oneCache : caches.cacheList) {
+ if (oneCache.latitude == null && oneCache.longitude == null && oneCache.directionImg != null) {
+ cgDirectionImg.getDrawable(oneCache.geocode, oneCache.directionImg);
+ }
+ }
}
// get ratings
@@ -1614,25 +1620,24 @@ public class cgBase {
try
{
- logDone.date = dateLogs1.parse(matcherLog.group(5)).getTime(); // long format
- }
- catch (ParseException e)
- {
- try
+ if (matcherLog.group(5).indexOf(',') > 0)
{
- // short format, with current year
- final Date date = dateLogs2.parse(matcherLog.group(5));
- final Calendar cal = Calendar.getInstance();
- final int year = cal.get(Calendar.YEAR);
- cal.setTime(date);
- cal.set(Calendar.YEAR, year);
- logDone.date = cal.getTimeInMillis();
+ logDone.date = dateLogs1.parse(matcherLog.group(5)).getTime(); // long format
}
- catch (ParseException ee)
+ else
{
- Log.w(cgSettings.tag, "Failed to parse logs date: " + ee.toString());
+ // short format, with current year
+ final Calendar cal = Calendar.getInstance();
+ final int year = cal.get(Calendar.YEAR);
+ cal.setTime(dateLogs2.parse(matcherLog.group(5)));
+ cal.set(Calendar.YEAR, year);
+ logDone.date = cal.getTimeInMillis();
}
}
+ catch (ParseException e)
+ {
+ Log.w(cgSettings.tag, "Failed to parse logs date: " + e.toString());
+ }
logDone.author = Html.fromHtml(matcherLog.group(1)).toString();
diff --git a/src/cgeo/geocaching/cgCache.java b/src/cgeo/geocaching/cgCache.java
index 5abc057..de0dace 100644
--- a/src/cgeo/geocaching/cgCache.java
+++ b/src/cgeo/geocaching/cgCache.java
@@ -10,6 +10,7 @@ import java.util.regex.Pattern;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
+import android.net.Uri;
import android.text.Spannable;
import android.util.Log;
import cgeo.geocaching.activity.IAbstractActivity;
@@ -345,4 +346,15 @@ public class cgCache {
return types;
}
+ public void openInBrowser(Activity fromActivity) {
+ fromActivity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getCacheUrl() + geocode)));
+ }
+
+ private String getCacheUrl() {
+ if (geocode.startsWith("OC")) { // TODO refactor method into connectors, once available
+ return "http://www.opencaching.de/viewcache.php?wp=";
+ }
+ return "http://www.geocaching.com/seek/cache_details.aspx?wp=";
+ }
+
}
diff --git a/src/cgeo/geocaching/cgSettings.java b/src/cgeo/geocaching/cgSettings.java
index 8e6686e..6746bf7 100644
--- a/src/cgeo/geocaching/cgSettings.java
+++ b/src/cgeo/geocaching/cgSettings.java
@@ -146,6 +146,7 @@ public class cgSettings {
public String webDeviceCode = null;
public boolean trackableAutovisit = false;
public boolean signatureAutoinsert = false;
+ public boolean loadDirectionImg = true;
// usable values
public static final String tag = "c:geo";
diff --git a/src/cgeo/geocaching/cgeodetail.java b/src/cgeo/geocaching/cgeodetail.java
index b4767ab..0681621 100644
--- a/src/cgeo/geocaching/cgeodetail.java
+++ b/src/cgeo/geocaching/cgeodetail.java
@@ -514,7 +514,7 @@ public class cgeodetail extends AbstractActivity {
showSpoilers();
return true;
} else if (menuItem == 7) {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/seek/cache_details.aspx?wp=" + cache.geocode)));
+ cache.openInBrowser(this);
return true;
} else if (menuItem == 10) {
cachesAround();
diff --git a/src/cgeo/geocaching/cgeoinit.java b/src/cgeo/geocaching/cgeoinit.java
index 5b78dab..ecd97da 100644
--- a/src/cgeo/geocaching/cgeoinit.java
+++ b/src/cgeo/geocaching/cgeoinit.java
@@ -316,6 +316,10 @@ public class cgeoinit extends AbstractActivity {
captchaButton.setChecked(true);
}
captchaButton.setOnClickListener(new cgeoChangeCaptcha());
+
+ CheckBox dirImgButton = (CheckBox) findViewById(R.id.loaddirectionimg);
+ dirImgButton.setChecked(prefs.getBoolean("loaddirectionimg", true));
+ dirImgButton.setOnClickListener(new cgeoChangeDirImg());
CheckBox useEnglishButton = (CheckBox) findViewById(R.id.useenglish);
if (prefs.getBoolean("useenglish", false) == false) {
@@ -684,6 +688,26 @@ public class cgeoinit extends AbstractActivity {
return;
}
}
+
+ private class cgeoChangeDirImg implements View.OnClickListener {
+
+ public void onClick(View arg0) {
+ SharedPreferences.Editor edit = prefs.edit();
+ if (prefs.getBoolean("loaddirectionimg", true)) {
+ edit.putBoolean("loaddirectionimg", false);
+ settings.loadDirectionImg = false;
+ } else {
+ edit.putBoolean("loaddirectionimg", true);
+ settings.loadDirectionImg = true;
+ }
+ edit.commit();
+
+ CheckBox dirImgButton = (CheckBox) findViewById(R.id.loaddirectionimg);
+ dirImgButton.setChecked(prefs.getBoolean("loaddirectionimg", true));
+
+ return;
+ }
+ }
private class cgeoChangeUseEnglish implements View.OnClickListener {
diff --git a/src/cgeo/geocaching/files/GPXParser.java b/src/cgeo/geocaching/files/GPXParser.java
index 80764a7..64c36d3 100644
--- a/src/cgeo/geocaching/files/GPXParser.java
+++ b/src/cgeo/geocaching/files/GPXParser.java
@@ -11,14 +11,6 @@ import java.util.regex.Pattern;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
-import cgeo.geocaching.cgBase;
-import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgLog;
-import cgeo.geocaching.cgSearch;
-import cgeo.geocaching.cgSettings;
-import cgeo.geocaching.cgTrackable;
-import cgeo.geocaching.cgeoapplication;
-
import android.os.Handler;
import android.sax.Element;
import android.sax.EndElementListener;
@@ -28,6 +20,13 @@ import android.sax.StartElementListener;
import android.text.Html;
import android.util.Log;
import android.util.Xml;
+import cgeo.geocaching.cgBase;
+import cgeo.geocaching.cgCache;
+import cgeo.geocaching.cgLog;
+import cgeo.geocaching.cgSearch;
+import cgeo.geocaching.cgSettings;
+import cgeo.geocaching.cgTrackable;
+import cgeo.geocaching.cgeoapplication;
public abstract class GPXParser extends FileParser {
@@ -44,7 +43,7 @@ public abstract class GPXParser extends FileParser {
private String sym = null;
protected String namespace = null;
private ArrayList<String> nsGCList = new ArrayList<String>();
- private static final Pattern patternGeocode = Pattern.compile("(GC[0-9A-Z]+)", Pattern.CASE_INSENSITIVE);
+ private static final Pattern patternGeocode = Pattern.compile("([A-Z]C[0-9A-Z]+)", Pattern.CASE_INSENSITIVE);
private String name = null;
private String cmt = null;
private String desc = null;