diff options
| -rw-r--r-- | res/layout/init.xml | 21 | ||||
| -rw-r--r-- | res/values-cs/strings.xml | 2 | ||||
| -rw-r--r-- | res/values-de/strings.xml | 1 | ||||
| -rw-r--r-- | res/values/strings.xml | 1 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgBase.java | 61 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgCache.java | 12 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgSettings.java | 1 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeodetail.java | 2 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeoinit.java | 24 | ||||
| -rw-r--r-- | src/cgeo/geocaching/files/GPXParser.java | 17 |
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; |
