aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cgeo-calendar/.classpath1
-rw-r--r--main/.classpath1
-rw-r--r--main/AndroidManifest.xml1
-rw-r--r--main/project/rawimages/c-geo_icon.svg432
-rw-r--r--main/project/rawimages/c_geo_icon_basic_512.pngbin54668 -> 0 bytes
-rw-r--r--main/project/rawimages/c_geo_icon_basic_freigestellt_512.pngbin56921 -> 0 bytes
-rw-r--r--main/res/layout/caches_item.xml34
-rw-r--r--main/res/values-cs/strings.xml11
-rw-r--r--main/res/values-de/strings.xml11
-rw-r--r--main/res/values-es/strings.xml11
-rw-r--r--main/res/values-fr/strings.xml11
-rw-r--r--main/res/values-hu/strings.xml11
-rw-r--r--main/res/values-it/strings.xml20
-rw-r--r--main/res/values-ja/strings.xml11
-rw-r--r--main/res/values-nl/strings.xml11
-rw-r--r--main/res/values-pl/strings.xml11
-rw-r--r--main/res/values-pt/strings.xml11
-rw-r--r--main/res/values-sk/strings.xml11
-rw-r--r--main/res/values/strings.xml15
-rw-r--r--main/res/values/strings_not_translatable.xml30
-rw-r--r--main/src/cgeo/geocaching/AboutActivity.java2
-rw-r--r--main/src/cgeo/geocaching/CompassActivity.java10
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConstants.java11
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCMap.java4
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCParser.java33
-rw-r--r--main/src/cgeo/geocaching/export/FieldnoteExport.java2
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java1
-rw-r--r--main/src/cgeo/geocaching/maps/MapProviderFactory.java1
-rw-r--r--main/src/cgeo/geocaching/network/HtmlImage.java3
-rw-r--r--main/src/cgeo/geocaching/sorting/DistanceComparator.java19
-rw-r--r--main/src/cgeo/geocaching/speech/TextFactory.java37
-rw-r--r--main/src/cgeo/geocaching/ui/CacheListAdapter.java69
-rw-r--r--main/src/cgeo/geocaching/ui/DirectionImage.java32
-rw-r--r--tests/.classpath1
-rw-r--r--tests/src/cgeo/test/Compare.java4
35 files changed, 677 insertions, 196 deletions
diff --git a/cgeo-calendar/.classpath b/cgeo-calendar/.classpath
index 121b2d4..fba8f51 100644
--- a/cgeo-calendar/.classpath
+++ b/cgeo-calendar/.classpath
@@ -9,5 +9,6 @@
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry combineaccessrules="false" kind="src" path="/cgeo"/>
+ <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
diff --git a/main/.classpath b/main/.classpath
index d7bcabc..1f69d48 100644
--- a/main/.classpath
+++ b/main/.classpath
@@ -25,5 +25,6 @@
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="lib" path="libs/httpclientandroidlib-1.1.1.jar"/>
+ <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml
index 085f2b3..b78e26e 100644
--- a/main/AndroidManifest.xml
+++ b/main/AndroidManifest.xml
@@ -13,6 +13,7 @@
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<supports-screens
android:largeScreens="true"
+ android:xlargeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true" />
diff --git a/main/project/rawimages/c-geo_icon.svg b/main/project/rawimages/c-geo_icon.svg
new file mode 100644
index 0000000..95fb7dd
--- /dev/null
+++ b/main/project/rawimages/c-geo_icon.svg
@@ -0,0 +1,432 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2985"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ width="512"
+ height="512"
+ sodipodi:docname="C:\Users\SammysHP\Desktop\t-shirt\c-geo icon_c.svg"
+ inkscape:export-filename="C:\Users\SammysHP\Desktop\t-shirt\c-geo icon_d.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <metadata
+ id="metadata2991">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs2989">
+ <linearGradient
+ id="linearGradient3936">
+ <stop
+ style="stop-color:#f7991d;stop-opacity:1;"
+ offset="0"
+ id="stop3938" />
+ <stop
+ style="stop-color:#f8b339;stop-opacity:1;"
+ offset="1"
+ id="stop3940" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3928">
+ <stop
+ id="stop3930"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:0.12849163;" />
+ <stop
+ id="stop3932"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0.0726257;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3863">
+ <stop
+ style="stop-color:#ffc34a;stop-opacity:1;"
+ offset="0"
+ id="stop3865" />
+ <stop
+ style="stop-color:#f9a62f;stop-opacity:1;"
+ offset="1"
+ id="stop3867" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3801">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.1;"
+ offset="0"
+ id="stop3803" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3805" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3890">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3892" />
+ <stop
+ id="stop3900"
+ offset="0.29212967"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3898"
+ offset="0.35852277"
+ style="stop-color:#d8dada;stop-opacity:1;" />
+ <stop
+ style="stop-color:#d8dada;stop-opacity:1;"
+ offset="1"
+ id="stop3894" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3864">
+ <stop
+ style="stop-color:#aad04a;stop-opacity:1;"
+ offset="0"
+ id="stop3866" />
+ <stop
+ id="stop3872"
+ offset="0.29795828"
+ style="stop-color:#cfdc8d;stop-opacity:1;" />
+ <stop
+ style="stop-color:#98bc40;stop-opacity:1;"
+ offset="0.36036199"
+ id="stop3882" />
+ <stop
+ style="stop-color:#48873e;stop-opacity:1;"
+ offset="1"
+ id="stop3868" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3838">
+ <stop
+ style="stop-color:#61b647;stop-opacity:1;"
+ offset="0"
+ id="stop3840" />
+ <stop
+ style="stop-color:#92c746;stop-opacity:1;"
+ offset="1"
+ id="stop3842" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3828">
+ <stop
+ id="stop3830"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:0.13333334;" />
+ <stop
+ id="stop3832"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0.11111111;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3796">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.05555556;"
+ offset="0"
+ id="stop3798" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.10555556;"
+ offset="1"
+ id="stop3800" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3796"
+ id="linearGradient3802"
+ x1="15.959242"
+ y1="343.29277"
+ x2="176.26119"
+ y2="343.29277"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3796"
+ id="linearGradient3810"
+ x1="335.7388"
+ y1="344.35822"
+ x2="496.04077"
+ y2="344.35822"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3864"
+ id="linearGradient3880"
+ x1="66.473442"
+ y1="197.85721"
+ x2="453.37692"
+ y2="197.85721"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3890"
+ id="linearGradient3896"
+ x1="70.62744"
+ y1="258.14891"
+ x2="435.78817"
+ y2="258.14891"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ inkscape:collect="always"
+ id="filter3916"
+ x="-0.73785931"
+ width="2.4757186"
+ y="-0.25739279"
+ height="1.5147856">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="5.7505801"
+ id="feGaussianBlur3918" />
+ </filter>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3838"
+ id="radialGradient3922"
+ cx="283.49646"
+ cy="-10.861603"
+ fx="283.49646"
+ fy="-10.861603"
+ r="193.19952"
+ gradientTransform="matrix(-0.66393007,1.0294724,-1.0210616,-0.65850585,497.86851,-252.56237)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3801"
+ id="linearGradient3807"
+ x1="175.76119"
+ y1="344.35821"
+ x2="336.23881"
+ y2="344.35821"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3863"
+ id="linearGradient3869"
+ x1="39.90625"
+ y1="351.5625"
+ x2="175.7036"
+ y2="351.5625"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3863"
+ id="linearGradient3877"
+ x1="39.90625"
+ y1="411.14062"
+ x2="175.75117"
+ y2="411.14062"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3863"
+ id="linearGradient3885"
+ x1="39.90625"
+ y1="294.22113"
+ x2="175.74925"
+ y2="294.22113"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3928"
+ id="linearGradient3934"
+ gradientUnits="userSpaceOnUse"
+ x1="335.7388"
+ y1="344.35822"
+ x2="496.04077"
+ y2="344.35822" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3936"
+ id="linearGradient3942"
+ x1="336.25"
+ y1="304.70312"
+ x2="472.1875"
+ y2="304.70312"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3936"
+ id="linearGradient3950"
+ x1="336.43512"
+ y1="373.8125"
+ x2="472.1875"
+ y2="373.8125"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3936"
+ id="linearGradient3958"
+ x1="336.24496"
+ y1="420.28125"
+ x2="472.1875"
+ y2="420.28125"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3936"
+ id="linearGradient3966"
+ x1="336.25"
+ y1="459.6875"
+ x2="471.8985"
+ y2="459.6875"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1058"
+ id="namedview2987"
+ showgrid="false"
+ inkscape:zoom="2.4058204"
+ inkscape:cx="271.74005"
+ inkscape:cy="352.64753"
+ inkscape:window-x="-8"
+ inkscape:window-y="-8"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg2985"
+ inkscape:snap-bbox="false"
+ inkscape:snap-nodes="true"
+ inkscape:bbox-nodes="false"
+ inkscape:bbox-paths="false"
+ inkscape:object-nodes="true"
+ inkscape:object-paths="true"
+ inkscape:snap-global="false" />
+ <path
+ style="fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:0.7062937"
+ d="m 22.337543,475.26062 0,28.21584 159.595867,-8.22962 161.06544,7.34788 159.00804,-7.34788 0,-272.16532 -57.31343,-5.29048 z"
+ id="path3812"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="m 16.459242,494.95293 0,-303.32032 220.436278,22.92537 102.87027,-21.74971 155.77497,14.69575 0,272.16533 -159.30195,16.45924 -160.47762,-15.87141 z"
+ id="path2998"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient3869);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="M 39.90625 379.59375 L 100.46875 348.9375 L 39.90625 323.53125 L 39.90625 379.59375 z "
+ id="path3022" />
+ <path
+ style="fill:#fdd069;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="M 336.25 447.71875 L 175.75 380.46875 L 175.75 455.875 L 175.8125 455.875 L 335.84375 471.6875 L 336.25 471.65625 L 336.25 447.71875 z "
+ id="path3913" />
+ <path
+ style="fill:url(#linearGradient3966);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="M 336.25 447.71875 L 336.25 471.65625 L 382.53125 467.125 L 336.25 447.71875 z "
+ id="path3824" />
+ <path
+ style="fill:url(#linearGradient3877);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1.0"
+ d="M 175.75118 380.46593 L 110.4375 353.09375 L 39.90625 388.8125 L 39.90625 469.1875 L 175.75059 455.88106 "
+ id="path3020" />
+ <path
+ style="fill:url(#linearGradient3958);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1.0"
+ d="M 336.24497 437.85561 L 401.0625 465.3125 L 472.1875 458.375 L 472.1875 411.65625 L 472.1875 411.65625 L 401.53125 375.25 L 336.24729 403.39996 "
+ id="path3836" />
+ <path
+ style="fill:#fdd069;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="M 336.24729 403.39996 L 295.9375 420.78125 L 336.24497 437.85561 "
+ id="path3018" />
+ <path
+ style="fill:url(#linearGradient3950);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="M 472.1875 344.78125 L 410.84375 371.25 L 472.1875 402.84375 L 472.1875 344.78125 z "
+ id="path3016" />
+ <path
+ style="fill:#fdd069;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="M 336.25 215.5 L 231.9375 238.90625 L 175.75 232.9375 L 175.75 369.90625 L 285.375 416.34375 L 336.25 394.1875 L 336.25 215.5 z "
+ id="path3918" />
+ <path
+ style="fill:url(#linearGradient3942);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="M 336.25 215.5 L 336.25 394.1875 L 472.1875 334.96875 L 472.1875 229.34375 L 337.5 215.21875 L 336.25 215.5 z "
+ id="path3831" />
+ <path
+ style="fill:url(#linearGradient3885);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1.0"
+ d="M 175.74925 232.94454 L 39.90625 218.53125 L 39.90625 312.375 L 175.74798 369.91102 "
+ id="path3002" />
+ <path
+ style="fill:url(#linearGradient3807);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="m 336.23881,496.12859 -160.47762,-15.87141 0,-272.05717 160.47762,-15.61218 z"
+ id="path3928"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient3934);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="m 495.54076,479.66935 -159.30195,16.45924 0,-303.54076 159.30195,14.91619 z"
+ id="path3026"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient3802);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="m 16.459242,494.95293 159.301948,-14.69575 0,-272.05717 -159.301948,-16.5674 z"
+ id="path3024"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#000000;fill-opacity:0.39768341;stroke:none"
+ d="m 442.88428,146.84389 23.48471,20.36727 c 2.79219,2.93915 2.97845,9.95135 1.03915,18.08115 l -10.39147,31.79789 c -2.64524,4.8496 -9.97581,7.27402 -9.97581,7.27402 0,0 2.60526,7.16885 1.87047,11.43062 L 431.03801,303.54719 211.9859,415.98286 c -4.40873,2.49828 -13.14978,2.5487 -15.79502,-0.83132 L 89.158777,293.57139 86.041338,228.93647 z"
+ id="path3924"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ style="fill:#5c5d5d;fill-opacity:1;stroke:none"
+ d="m 423.82549,175.46728 c 9.40528,3.52698 10.28702,11.16877 10.58094,18.51665 l -17.6349,67.60046 -215.73364,110.51205 c -13.2323,6.03571 -18.60274,3.52699 -24.10104,-3.23306 L 74.360505,252.1791 69.657865,181.93341 c -0.207829,-7.48186 9.405281,-12.34443 9.405281,-12.34443 z"
+ id="path3920"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="fill:url(#linearGradient3896);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="m 435.28817,168.41332 -18.81056,76.41791 -220.73019,109.63031 c -6.23488,2.07829 -10.747,1.83787 -14.69576,-1.17566 L 77.887486,234.5442 71.12744,160.47761 z"
+ id="path3884"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:#868786;fill-opacity:1;stroke:none"
+ d="m 452.87691,130.92395 c 1.17566,3.96786 -9.35911,40.28156 -9.35911,40.28156 -2.49395,7.58577 -8.6705,10.28703 -8.6705,10.28703 L 201.3318,287.88978 c -7.17011,2.90961 -14.01254,1.62667 -16.45924,-1.0287 L 69.36395,171.64638 c -2.390037,-3.32527 -2.351321,-12.93226 -2.351321,-12.93226 z"
+ id="path3818"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:url(#linearGradient3880);fill-opacity:1;stroke:none"
+ d="m 452.87691,130.92395 -10.53477,36.60762 c -1.36085,4.47005 -5.29048,6.17222 -5.29048,6.17222 l -235.13203,107.5729 c -10.70321,3.94876 -16.16532,-1.17566 -16.16532,-1.17566 L 69.657865,165.18025 c -3.11744,-2.90961 -2.645236,-6.46613 -2.645236,-6.46613 0,0 -1.053122,-22.11238 -0.03919,-45.77105 z"
+ id="path3816"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#ffffd0;fill-opacity:0.94405589;stroke:none;filter:url(#filter3916)"
+ id="path3902"
+ sodipodi:cx="185.59158"
+ sodipodi:cy="226.65034"
+ sodipodi:rx="9.3523197"
+ sodipodi:ry="26.809982"
+ d="m 194.9439,226.65034 a 9.3523197,26.809982 0 1 1 -18.70464,0 9.3523197,26.809982 0 1 1 18.70464,0 z"
+ transform="matrix(0.88331111,0,0,1.0869978,29.761821,-12.444045)" />
+ <path
+ style="fill:url(#radialGradient3922);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+ d="M 327.42135,24.101033 452.04133,125.79564 c 3.52698,4.70264 -1.46957,7.64179 -1.46957,7.64179 l -246.00689,99.93111 c -5.77133,2.79957 -11.57831,0.83438 -14.69575,-1.76349 L 70.53961,121.68083 c -10.580941,-12.05052 5.29047,-17.04708 5.29047,-17.04708 L 311.25603,23.513203 c 9.40528,-3.820896 16.16532,0.58783 16.16532,0.58783 z"
+ id="path3814"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccc" />
+</svg>
diff --git a/main/project/rawimages/c_geo_icon_basic_512.png b/main/project/rawimages/c_geo_icon_basic_512.png
deleted file mode 100644
index c4a592f..0000000
--- a/main/project/rawimages/c_geo_icon_basic_512.png
+++ /dev/null
Binary files differ
diff --git a/main/project/rawimages/c_geo_icon_basic_freigestellt_512.png b/main/project/rawimages/c_geo_icon_basic_freigestellt_512.png
deleted file mode 100644
index 1fab340..0000000
--- a/main/project/rawimages/c_geo_icon_basic_freigestellt_512.png
+++ /dev/null
Binary files differ
diff --git a/main/res/layout/caches_item.xml b/main/res/layout/caches_item.xml
index d4e7b27..1105f91 100644
--- a/main/res/layout/caches_item.xml
+++ b/main/res/layout/caches_item.xml
@@ -75,15 +75,13 @@
<!-- real text based direction and distance -->
<RelativeLayout
- android:id="@+id/direction_layout"
android:layout_width="78dip"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginBottom="1dip"
android:layout_marginRight="30dip"
- android:layout_marginTop="1dip"
- android:visibility="gone" >
+ android:layout_marginTop="1dip" >
<view
android:id="@+id/distance"
@@ -111,31 +109,21 @@
android:gravity="center"
android:minHeight="28px"
android:minWidth="28px"
- cc:skin="?compass" />
- </RelativeLayout>
-
- <!-- image based direction and distance -->
-
- <RelativeLayout
- android:id="@+id/dirimg_layout"
- android:layout_width="78dip"
- android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:layout_centerVertical="true"
- android:layout_marginBottom="1dip"
- android:layout_marginRight="30dip"
- android:layout_marginTop="1dip"
- android:visibility="gone" >
+ cc:skin="?compass"
+ android:visibility="gone" />
<ImageView
android:id="@+id/dirimg"
- android:layout_width="55dip"
- android:layout_height="30dip"
- android:layout_centerInParent="true"
+ android:layout_width="78dip"
+ android:layout_height="28px"
+ android:layout_centerHorizontal="true"
android:layout_gravity="center"
+ android:layout_marginTop="21dip"
android:gravity="center"
- android:scaleType="fitXY"
- android:src="@null" />
+ android:minHeight="28px"
+ android:minWidth="28px"
+ android:src="@null"
+ android:visibility="gone" />
</RelativeLayout>
<!-- inventory and favorites -->
diff --git a/main/res/values-cs/strings.xml b/main/res/values-cs/strings.xml
index b5df662..b891ea3 100644
--- a/main/res/values-cs/strings.xml
+++ b/main/res/values-cs/strings.xml
@@ -1044,11 +1044,12 @@
<string name="legal_note">Pro používání služeb Geocaching.com musíš souhlasit s podmínkami použití <a href="http://www.geocaching.com/about/termsofuse.aspx">společnosti Groundspeak</a></string>
<string name="quote">Učinit Geocaching lehčí a uživatelé línější.</string>
<string name="powered_by">carnero</string>
- <string name="support">Podpora: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
- <string name="website">Stránka: <a href="http://cgeo.org/">cgeo.org</a></string>
- <string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">Stránka c:geo</a></string>
- <string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="nutshellmanual">Návod: <a href="http://manual.cgeo.org/">c:geo v Nutshell</a></string>
+ <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
+ <string name="support">Podpora: <a href="">support@cgeo.org</a></string>
+ <string name="website">Stránka: <a href="">cgeo.org</a></string>
+ <string name="facebook">Facebook: <a href="">Stránka c:geo</a></string>
+ <string name="twitter">Twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">Návod: <a href="">c:geo v Nutshell</a></string>
<string name="about_twitter">Má <b>c:geo</b> publikovat nový status na Twitteru vždy, když zaloguješ keš?</string>
<string name="about_auth_1">Následující proces dovoluje aplikaci <b>c:geo</b> přístup na Twitter - pokud budeš souhlasit.</string>
<string name="about_auth_2">Klepnutím na tlačítko \"Zahájit autorizaci\" bude proces zahájen. Tento proces otevře webový prohlížeč s Twitterem. Přihlaš se na této stránce a povol <b>c:geu</b> přístup k tvému účtu. Pokud je to povoleno, Twitter ti ukáže číselný PIN kód. Tento PIN kód musíš zadat do <b>c:geo</b> a potvrdit. To je vše.</string>
diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml
index e7729bf..954f1c1 100644
--- a/main/res/values-de/strings.xml
+++ b/main/res/values-de/strings.xml
@@ -1040,11 +1040,12 @@
<string name="legal_note">Um die Dienste von geocaching.com nutzen zu können, müssen die <a href="http://www.geocaching.com/about/termsofuse.aspx">Groundspeak-Nutzungsbedingungen</a> (englisch) akzeptiert werden.</string>
<string name="quote">Um Geocachen einfacher zu machen, um es Anwendern bequemer zu machen.</string>
<string name="powered_by">carnero</string>
- <string name="support">Support: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
- <string name="website">Webseite: <a href="http://cgeo.org/">cgeo.org</a></string>
- <string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">c:geo page</a></string>
- <string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="nutshellmanual">Benutzung: <a href="http://manual.cgeo.org/">c:geo Kurzanleitung</a></string>
+ <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
+ <string name="support">Support: <a href="">support@cgeo.org</a></string>
+ <string name="website">Webseite: <a href="">cgeo.org</a></string>
+ <string name="facebook">Facebook: <a href="">c:geo page</a></string>
+ <string name="twitter">Twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">Benutzung: <a href="">c:geo Kurzanleitung</a></string>
<string name="about_twitter">Soll jeder neue Fund auf Twitter veröffentlicht werden, wenn er über <b>c:geo</b> geloggt wird?</string>
<string name="about_auth_1">Der folgende Prozess erlaubt es <b>c:geo</b> auf den persönlichen Twitter-Account zuzugreifen, wenn zugestimmt wird.</string>
<string name="about_auth_2">Ein Klick auf \"Starte Autorisierung\" öffnet eine Twitter-Seite in einem Browserfenster. Durch die Anmeldung und die Bestätigung wird <b>c:geo</b> ermöglicht, auf den persönlichen Twitter-Account zuzugreifen. Wird dies bestätigt, nennt Twitter eine numerische PIN, diese muss kopiert und in <b>c:geo</b> eingefügt werden. Das ist alles.</string>
diff --git a/main/res/values-es/strings.xml b/main/res/values-es/strings.xml
index b618fb9..bc7b467 100644
--- a/main/res/values-es/strings.xml
+++ b/main/res/values-es/strings.xml
@@ -779,11 +779,12 @@
<string name="legal_note">Para utilizar los servicios de Geocaching.com, debes aceptar las <a href="http://www.geocaching.com/about/termsofuse.aspx">condiciones de Groundspeak</a>.</string>
<string name="quote">Para hacer el geocaching más sencillo, para hacer a los usuarios más vagos.</string>
- <string name="support">Soporte: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
- <string name="website">Web: <a href="http://cgeo.org/">cgeo.org</a></string>
- <string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">c:geo page</a></string>
- <string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="nutshellmanual">Manual: <a href="http://itw.bidix.info/cgeo/">c:geo en breve</a></string>
+ <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
+ <string name="support">Soporte: <a href="">support@cgeo.org</a></string>
+ <string name="website">Web: <a href="">cgeo.org</a></string>
+ <string name="facebook">Facebook: <a href="">c:geo page</a></string>
+ <string name="twitter">Twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">Manual: <a href="">c:geo en breve</a></string>
<string name="about_twitter">¿Debe <b>c:geo</b> publicar el nuevo estado en Twitter cuando registras un escondite?</string>
<string name="about_auth_1">El siguiente proceso permite a <b>c:geo</b> acceder a Twitter - si estás de acuerdo.</string>
diff --git a/main/res/values-fr/strings.xml b/main/res/values-fr/strings.xml
index a951495..6fe4960 100644
--- a/main/res/values-fr/strings.xml
+++ b/main/res/values-fr/strings.xml
@@ -1042,11 +1042,12 @@
<string name="legal_note">Pour utiliser les services de Geocaching.com, vous devez accepter les termes et conditions de la <a href="http://www.geocaching.com/about/termsofuse.aspx">mise en garde de Groundspeak</a>.</string>
<string name="quote">Pour faciliter le géocaching.</string>
<string name="powered_by">carnero</string>
- <string name="support">support: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
- <string name="website">site: <a href="http://cgeo.org/">cgeo.org</a></string>
- <string name="facebook">facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">page c:geo</a></string>
- <string name="twitter">twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="nutshellmanual">Manuel: <a href="http://manual.cgeo.org/">c:geo en bref</a></string>
+ <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
+ <string name="support">support: <a href="">support@cgeo.org</a></string>
+ <string name="website">site: <a href="">cgeo.org</a></string>
+ <string name="facebook">facebook: <a href="">page c:geo</a></string>
+ <string name="twitter">twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">Manuel: <a href="">c:geo en bref</a></string>
<string name="about_twitter">Voulez-vous publier un nouveau statut sur Twitter à chaque nouvelle cache découverte sous <b>c:geo</b>?</string>
<string name="about_auth_1">Le processus suivant permet à <b>c:geo</b> d\'accéder à votre compte Twitter - si vous acceptez.</string>
<string name="about_auth_2">Cliquer sur le bouton \"début d\'autorisation\" pour démarrer. Une fenêtre de navigateur va s\'ouvrir pour vous connecter sur Twitter. Accepter pour que <b>c:geo</b> accéde à votre compte. Twitter vous affichera alors une code PIN composé de chiffres. Merci de coller ce code dans <b>c:geo</b> puis confirmer. C\'est tout!</string>
diff --git a/main/res/values-hu/strings.xml b/main/res/values-hu/strings.xml
index 689912c..d57c6c0 100644
--- a/main/res/values-hu/strings.xml
+++ b/main/res/values-hu/strings.xml
@@ -937,11 +937,12 @@
<string name="legal_note">A geocaching.com szolgáltatásainak használatához, el kell fogadnod ezeket a feltételeket:<a href="http://www.geocaching.com/about/termsofuse.aspx">Groundspeak disclaimer</a> </string>
<string name="quote">Hogy a geocaching könnyebb legyen a felhasználók pedig lustábbak.</string>
<string name="powered_by">carnero</string>
- <string name="support">Támogatás: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
- <string name="website">Weboldal: <a href="http://cgeo.org/">cgeo.org</a></string>
- <string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">c:geo page</a></string>
- <string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="nutshellmanual">Kézikönyv: <a href="http://manual.cgeo.org/">A c:geo dióhéjban</a></string>
+ <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
+ <string name="support">Támogatás: <a href="">support@cgeo.org</a></string>
+ <string name="website">Weboldal: <a href="">cgeo.org</a></string>
+ <string name="facebook">Facebook: <a href="">c:geo page</a></string>
+ <string name="twitter">Twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">Kézikönyv: <a href="">A c:geo dióhéjban</a></string>
<string name="about_twitter">Akarod, hogy <b>c:geo</b> új bejegyzést írjon Twitterre mindig mikor egy ládát megtalálsz?</string>
<string name="about_auth_1">A következő folyamat engedélyezi a <b>c:geo</b>-nak, hogy hozzáférjen a Twitterhez – ha jóváhagyod.</string>
<string name="about_auth_2">Kattints a \"c:geo engedélyezése\" gombra, hogy elindítsd a folyamatot. Ez a folyamat meg fog nyitni egy böngészőt a Twitter weboldallal. Lépj be ezen az oldalon és hagyd jóvá, hogy a <b>c:geo</b> hozzáférjen a felhasználói fiókodhoz. Ha elfogadod, a Twitter mutatni fog egy számokból álló PIN kódot. Ezt a PIN kódot kell a <b>c:geo</b>-ban beillesztened és jóváhagynod. Ilyen egyszerű.</string>
diff --git a/main/res/values-it/strings.xml b/main/res/values-it/strings.xml
index b3af349..89dd5a7 100644
--- a/main/res/values-it/strings.xml
+++ b/main/res/values-it/strings.xml
@@ -500,6 +500,12 @@
<item quantity="one">Un cache</item>
<item quantity="other">%1$d Cache</item>
</plurals>
+ <string name="tts_service">Bussola parlante</string>
+ <string name="tts_start">Start voce</string>
+ <string name="tts_stop">Stop voce</string>
+ <string name="tts_kilometers">%s chilometri</string>
+ <string name="tts_meters">%s metri</string>
+ <string name="tts_oclock">%s precisi</string>
<string name="cache_offline">Offline</string>
<string name="cache_offline_refresh">Aggiorna</string>
<string name="cache_offline_drop">Elimina</string>
@@ -519,6 +525,8 @@
<string name="cache_log_images_title">Immagini Log</string>
<string name="cache_log_image_default_title">Foto</string>
<string name="cache_personal_note">Note personali</string>
+ <string name="cache_personal_note_unstored">Cache non salvati</string>
+ <string name="cache_personal_note_store">Il cache verrà prima salvato per abilitare le note personali.</string>
<string name="cache_description">Descrizione</string>
<string name="cache_description_long">Descrizione estesa</string>
<string name="cache_description_table_note">La descrizione contiene una tabella formattata in modo tale che potresti aver bisogno di andare su %s per vederla correttamente.</string>
@@ -1044,11 +1052,13 @@
<string name="legal_note">Per usare i servizi di Geocaching.com, si applicano i termini e le condizioni del <a href="http://www.geocaching.com/about/termsofuse.aspx">Contratto Groundspeak</a> che deve essere approvato dall\'utente.</string>
<string name="quote">Per rendere il geocaching più facile e rendere gli utenti più pigri.</string>
<string name="powered_by">carnero</string>
- <string name="support">Supporto: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
- <string name="website">Sito: <a href="http://cgeo.org/">cgeo.org</a></string>
- <string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">pagina c:geo </a></string>
- <string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="nutshellmanual">Manuale: <a href="http://manual.cgeo.org/">c:geo in a Nutshell</a></string>
+ <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
+ <string name="support">Supporto: <a href="">support@cgeo.org</a></string>
+ <string name="website">Sito: <a href="">cgeo.org</a></string>
+ <string name="facebook">Facebook: <a href="">pagina c:geo </a></string>
+ <string name="twitter">Twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">Manuale: <a href="">c:geo in a Nutshell</a></string>
+ <string name="market">Android: <a href="">c:geo su Google Play</a></string>
<string name="about_twitter">Può <b>c:geo</b> pubblicare su Twitter ogni volta che logghi un cache?</string>
<string name="about_auth_1">La procesura seguente autorizza <b>c:geo</b> ad accedere a Twitter - se confermato.</string>
<string name="about_auth_2">Clicca sul pulsante \"Autorizza c:geo\" per iniziare. Questa procedura aprirà il browser sulla pagina Twitter. Fai Login su questa pagina e autorizza <b>c:geo</b> ad accedere al tuo account. Se accettato, Twitter mostrerà un PIN code numerico. Questo PIN deve essere riportato in <b>c:geo</b> e confermato.</string>
diff --git a/main/res/values-ja/strings.xml b/main/res/values-ja/strings.xml
index 42f16be..c0c7974 100644
--- a/main/res/values-ja/strings.xml
+++ b/main/res/values-ja/strings.xml
@@ -971,11 +971,12 @@
<string name="legal_note">Geocaching.comを使うには<a href="http://www.geocaching.com/about/termsofuse.aspx">Groundspeak 利用規約</a>(英語)に同意している必要があります。</string>
<string name="quote">To make geocaching easier, to make users lazier.</string>
<string name="powered_by">carnero</string>
- <string name="support">サポート: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
- <string name="website">Webサイト: <a href="http://cgeo.org/">cgeo.org</a></string>
- <string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">c:geo page</a></string>
- <string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="nutshellmanual">マニュアル: <a href="http://manual.cgeo.org/">c:geo マニュアル</a>(英語)</string>
+ <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
+ <string name="support">サポート: <a href="">support@cgeo.org</a></string>
+ <string name="website">Webサイト: <a href="">cgeo.org</a></string>
+ <string name="facebook">Facebook: <a href="">c:geo page</a></string>
+ <string name="twitter">Twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">マニュアル: <a href="">c:geo マニュアル</a>(英語)</string>
<string name="about_twitter">キャッシュのログを書いたら<b>c:geo</b>にTwitterでつぶやいてほしい?</string>
<string name="about_auth_1"><b>c:geo</b>がTwitterにアクセスする許可を得るには次のようにしてください。</string>
<string name="about_auth_2">「認証を開始する」ボタンを押すとブラウザでTwitterのページが開きます。そのページにログインすれば<b>c:geo</b>があなたのアカウントにアクセルする許可が得られます。ログインに成功したら数字のPINコードが表示されるので、この下の入力欄にコピー&amp;ペーストして「完了」ボタンを押してください。</string>
diff --git a/main/res/values-nl/strings.xml b/main/res/values-nl/strings.xml
index f4dbd10..8bcbd38 100644
--- a/main/res/values-nl/strings.xml
+++ b/main/res/values-nl/strings.xml
@@ -1026,11 +1026,12 @@
<string name="legal_note">Voor het gebruik van de diensten van Geocaching.com, dient akkoord te worden gegaan met de <a href="http://www.geocaching.com/about/termsofuse.aspx">Groundspeak voorwaarden</a>.</string>
<string name="quote">Om geocahing makkelijker te maken en gebruikers luier te maken.</string>
<string name="powered_by">carnero</string>
- <string name="support">support:<a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
- <string name="website">website: <a href="http://cgeo.org/">cgeo.org</a></string>
- <string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">c:geo page</a></string>
- <string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="nutshellmanual">Handleiding: <a href="http://manual.cgeo.org/">c:geo in een notendop</a></string>
+ <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
+ <string name="support">support:<a href="">support@cgeo.org</a></string>
+ <string name="website">website: <a href="">cgeo.org</a></string>
+ <string name="facebook">Facebook: <a href="">c:geo page</a></string>
+ <string name="twitter">Twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">Handleiding: <a href="">c:geo in een notendop</a></string>
<string name="about_twitter">Moet <b>c:geo</b> elke cache vondst publiceren naar Twitter?</string>
<string name="about_auth_1">Het volgende proces staat <b>c:geo</b> toe om Twitter toegang te verkrijgen bij goedkeuring.</string>
<string name="about_auth_2">Klik op de \"autoriseer c:geo\" knop om het proces te starten. Dit proces zal een browser openen met een Twitter pagina. Login op deze pagina en sta <b>c:geo</b> toegang tot je account toe. Bij goedkeuring laat Twitter een numerieke PIN code zien. Deze PIN dien je te plakken en te bevestigen in <b>c:geo</b>.</string>
diff --git a/main/res/values-pl/strings.xml b/main/res/values-pl/strings.xml
index ff2fb96..9f67bc2 100644
--- a/main/res/values-pl/strings.xml
+++ b/main/res/values-pl/strings.xml
@@ -1045,11 +1045,12 @@
<string name="legal_note">Aby móc korzystać z usług serwisu Geocaching.com <a href="http://www.geocaching.com/about/termsofuse.aspx">warunki korzystania Groundspeak</a> muszą być zaakceptowane.</string>
<string name="quote">Aby uczynić geocaching prostszym, a użytkowników bardziej leniwymi.</string>
<string name="powered_by">carnero</string>
- <string name="support">Support: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
- <string name="website">Website: <a href="http://cgeo.org/">cgeo.org</a></string>
- <string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">c:geo strona</a></string>
- <string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="nutshellmanual">Podręcznik: <a href="http://manual.cgeo.org/">c:geo skrócona instrukcja obsługi</a></string>
+ <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
+ <string name="support">Support: <a href="">support@cgeo.org</a></string>
+ <string name="website">Website: <a href="">cgeo.org</a></string>
+ <string name="facebook">Facebook: <a href="">c:geo strona</a></string>
+ <string name="twitter">Twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">Podręcznik: <a href="">c:geo skrócona instrukcja obsługi</a></string>
<string name="about_twitter">Czy chczesz aby <b>c:geo</b> publikował nowy status na Twitter za każdym razem kiedy znajdziesz skrzynkę?</string>
<string name="about_auth_1">Poniższy proces pozwala <b>c:geo</b> uzyskać dostęp do Twitter za Twoim pozwoleniem.</string>
<string name="about_auth_2">Kliknięcie na \"Autoryzacja c:geo\" spowoduje rozpoczęcie procesu. Ten proces spowoduje otwarcie przeglądarki internetowej na stronie Twitter. Zaloguj się na tej stronie i pozwól <b>c:geo</b> uzyskać dostęp do Twojego konta. Jeśli zostanie zaakceptowany, Twitter wyświetli kod numeryczny PIN. Kod PIN musi zostać wklejony do <b>c:geo</b> i potwierdzony. To wszystko.</string>
diff --git a/main/res/values-pt/strings.xml b/main/res/values-pt/strings.xml
index 5916133..ae6366f 100644
--- a/main/res/values-pt/strings.xml
+++ b/main/res/values-pt/strings.xml
@@ -938,11 +938,12 @@
<string name="legal_note">Para utilizar os serviços de Geocaching.com, tem de concordar com os termos e condições da <a href="http://www.geocaching.com/about/termsofuse.aspx">declaração Groundspeak</a>.</string>
<string name="quote">Para tornar o geocaching mais fácil, para tornar os utilizadores mais preguiçosos.</string>
<string name="powered_by">carnero</string>
- <string name="support">Suporte: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
- <string name="website">Site na internet: <a href="http://cgeo.org/">cgeo.org</a></string>
- <string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">página do c:geo</a></string>
- <string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="nutshellmanual">Manual: <a href="http://manual.cgeo.org/">o essencial do c:geo</a></string>
+ <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
+ <string name="support">Suporte: <a href="">support@cgeo.org</a></string>
+ <string name="website">Site na internet: <a href="">cgeo.org</a></string>
+ <string name="facebook">Facebook: <a href="">página do c:geo</a></string>
+ <string name="twitter">Twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">Manual: <a href="">o essencial do c:geo</a></string>
<string name="about_twitter">O <b>c:geo</b> deve publicar no Twitter de cada vez que uma cache for registada?</string>
<string name="about_auth_1">O processo seguinte permite ao <b>c:geo</b> aceder ao Twitter - se concordar.</string>
<string name="about_auth_2">Premir o botão \"Autorizar c:geo\" dará início ao processo. Este processo irá abrir a página do Twitter no seu browser. Faça login nesta página e autorize o <b>c:geo</b> a aceder à sua conta. Se autorizar, o Twitter irá mostrar um código PIN numérico. Este PIN deverá ser copiado para o <b>c:geo</b> e sujeito a confirmação. E é tudo.</string>
diff --git a/main/res/values-sk/strings.xml b/main/res/values-sk/strings.xml
index af796ba..00d62e9 100644
--- a/main/res/values-sk/strings.xml
+++ b/main/res/values-sk/strings.xml
@@ -942,11 +942,12 @@
<string name="legal_note">Pred používaním služieb serveru Geocaching.com je potrebné súhlasiť s <a href="http://www.geocaching.com/about/disclaimer.aspx">licenčnou dohodou Groundspeaku</a>.</string>
<string name="quote">Pre jednoduchšie hľadanie skrýš a používateľov lenivších.</string>
<string name="powered_by">carnero</string>
- <string name="support">Podpora: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
- <string name="website">Web: <a href="http://cgeo.org/">cgeo.org</a></string>
- <string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">c:geo page</a></string>
- <string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="nutshellmanual">Manuál: <a href="http://manual.cgeo.org/">c:geo v kocke</a></string>
+ <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
+ <string name="support">Podpora: <a href="">support@cgeo.org</a></string>
+ <string name="website">Web: <a href="">cgeo.org</a></string>
+ <string name="facebook">Facebook: <a href="">c:geo page</a></string>
+ <string name="twitter">Twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">Manuál: <a href="">c:geo v kocke</a></string>
<string name="about_twitter">Chcete, aby <b>c:geo</b> napísalo na váš Twitter vždy keď zapíšete nájdenie skrýše?</string>
<string name="about_auth_1">Pomocou nasledujúceho procesu môžete aplikácii <b>c:geo</b> umožniť odosielanie príspevkov na váš Twitter. </string>
<string name="about_auth_2">Ťuknutím na tlačidlo „Zahájiť autorizáciu“ celý proces začne. Tento proces otvorí webovú stránku Twitteru, kde sa sa prihlásite a tlačidlom „Authorize app“ umožníte aplikácii <b>c:geo</b> prístup k vášmu Twitter účtu. Potom čo ťuknete na „Authorize app“, Twitter vám pridelí PIN kód. Tento kód skopírujte a vložte do aplikácie <b>c:geo</b>. A potvrďte. To je všetko.</string>
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index 5d0b15f..34543f1 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -1056,12 +1056,13 @@
<string name="legal_note">To use the services of Geocaching.com, terms and conditions of the <a href="http://www.geocaching.com/about/termsofuse.aspx">Groundspeak disclaimer</a> have to be agreed.</string>
<string name="quote">To make geocaching easier, to make users lazier.</string>
<string name="powered_by">carnero</string>
- <string name="support">Support: <a href="mailto:support@cgeo.org">support@cgeo.org</a></string>
- <string name="website">Website: <a href="http://cgeo.org/">cgeo.org</a></string>
- <string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">c:geo page</a></string>
- <string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="nutshellmanual">Manual: <a href="http://manual.cgeo.org/">c:geo in a Nutshell</a></string>
- <string name="market">Android: <a href="https://play.google.com/store/apps/details?id=cgeo.geocaching">c:geo on Google Play</a></string>
+ <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
+ <string name="support">Support: <a href="">support@cgeo.org</a></string>
+ <string name="website">Website: <a href="">cgeo.org</a></string>
+ <string name="facebook">Facebook: <a href="">c:geo page</a></string>
+ <string name="twitter">Twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">Manual: <a href="">c:geo in a Nutshell</a></string>
+ <string name="market">Android: <a href="">c:geo on Google Play</a></string>
<string name="about_twitter">Should <b>c:geo</b> publish a new status on Twitter every time you log a cache?</string>
<string name="about_auth_1">The following process allows <b>c:geo</b> to access Twitter - if agreed.</string>
<string name="about_auth_2">A click on the \"authorize c:geo\" button will start the process. This process will open up a web browser with a Twitter page. Login on this page and allow <b>c:geo</b> to access your account. If this is accepted, Twitter will show up a numeric PIN code. This PIN must be pasted into <b>c:geo</b> and confirmed. That\'s all.</string>
@@ -1083,5 +1084,7 @@
<string name="tts_stop">Stop talking</string>
<string name="tts_kilometers">%s kilometers</string>
<string name="tts_meters">%s meters</string>
+ <string name="tts_miles">%s miles</string>
+ <string name="tts_feet">%s feet</string>
<string name="tts_oclock">%s o\'clock</string>
</resources>
diff --git a/main/res/values/strings_not_translatable.xml b/main/res/values/strings_not_translatable.xml
index 542caca..89a54c0 100644
--- a/main/res/values/strings_not_translatable.xml
+++ b/main/res/values/strings_not_translatable.xml
@@ -96,9 +96,35 @@
<!-- changelog -->
<string name="changelog" translatable="false">\n
- <b>Next release</b>\n\n
+ <b>Next release</b>\n
+ \n
+ \n
+ <b>2013.05.18</b>\n
+ <b>Bugfixing:</b>\n
+ · Correction for compatability issue with tablet devices\n
+ \n
+ \n
+ <b>2013.05.16</b>\n
+ <b>Bugfixing:</b>\n
+ · Adaption to changes on gc.com (live map)\n
+ \n
+ \n
+ <b>2013.05.13</b>\n
+ <b>Bugfixing:</b>\n
+ · Twitter option was not shown on logging page\n
+ · Disable trail on map did only work after refresh of the map\n
+ · Stability improvements when selecting log pictures to be attached\n
+ · Remove accidentely appended spaces in searches\n
+ · Stability improvements for GPX import and export\n
+ · Do not duplicate waypoints retrieved from the personal note when updating a cache\n
+ · Fixed a possible crash when device is rotated while cache list is shown\n
+ · Fixed a possible crash in \"Any destination\" menu\n
+ · Ignore hide setting when searching for owned caches\n
+ \n
+ \n
+ <b>2013.04.03</b>\n
<b>New Features/Functions:</b>\n
- · Log images can be scaled before upload to save traffic
+ · Log images can be scaled before upload to save traffic\n
· Improved online detection when refreshing caches\n
· Talking compass (accessible in compass menu)\n
\n
diff --git a/main/src/cgeo/geocaching/AboutActivity.java b/main/src/cgeo/geocaching/AboutActivity.java
index 83f25e9..3164602 100644
--- a/main/src/cgeo/geocaching/AboutActivity.java
+++ b/main/src/cgeo/geocaching/AboutActivity.java
@@ -71,7 +71,7 @@ public class AboutActivity extends AbstractActivity {
* unused here but needed since this method is referenced from XML layout
*/
public void nutshellmanual(View view) {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.cgeo.org/")));
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://manual.cgeo.org/")));
}
/**
diff --git a/main/src/cgeo/geocaching/CompassActivity.java b/main/src/cgeo/geocaching/CompassActivity.java
index 7e97e46..d0f980e 100644
--- a/main/src/cgeo/geocaching/CompassActivity.java
+++ b/main/src/cgeo/geocaching/CompassActivity.java
@@ -13,6 +13,8 @@ import org.apache.commons.lang3.StringUtils;
import android.content.Context;
import android.content.Intent;
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
@@ -43,11 +45,18 @@ public class CompassActivity extends AbstractActivity {
private TextView distanceView = null;
private TextView headingView = null;
private CompassView compassView = null;
+ private boolean hasMagneticFieldSensor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState, R.layout.navigate);
+ final SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
+ hasMagneticFieldSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) != null;
+ if (!hasMagneticFieldSensor) {
+ Settings.setUseCompass(false);
+ }
+
// get parameters
Bundle extras = getIntent().getExtras();
if (extras != null) {
@@ -104,6 +113,7 @@ public class CompassActivity extends AbstractActivity {
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
getMenuInflater().inflate(R.menu.compass_activity_options, menu);
+ menu.findItem(R.id.menu_switch_compass_gps).setVisible(hasMagneticFieldSensor);
final SubMenu subMenu = menu.findItem(R.id.menu_select_destination).getSubMenu();
if (coordinates.size() > 1) {
for (int i = 0; i < coordinates.size(); i++) {
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConstants.java b/main/src/cgeo/geocaching/connector/gc/GCConstants.java
index d8711cf..c032c34 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCConstants.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCConstants.java
@@ -13,14 +13,15 @@ import java.util.regex.Pattern;
public final class GCConstants {
static final String GC_URL = "http://www.geocaching.com/";
+ static final String GC_TILE_URL = "http://tiles.geocaching.com/";
/** Live Map */
public final static String URL_LIVE_MAP = GC_URL + "map/default.aspx";
/** Live Map pop-up */
- public final static String URL_LIVE_MAP_DETAILS = GC_URL + "map/map.details";
+ public final static String URL_LIVE_MAP_DETAILS = GC_TILE_URL + "map.details";
/** Caches in a tile */
- public final static String URL_MAP_INFO = GC_URL + "map/map.info";
+ public final static String URL_MAP_INFO = GC_TILE_URL + "map.info";
/** Tile itself */
- public final static String URL_MAP_TILE = GC_URL + "map/map.png";
+ public final static String URL_MAP_TILE = GC_TILE_URL + "map.png";
/**
* Patterns for parsing the result of a (detailed) search
@@ -116,7 +117,9 @@ public final class GCConstants {
public final static Pattern PATTERN_SEARCH_TRACKABLES = Pattern.compile("<a id=\"ctl00_ContentBody_dlResults_ctl[0-9]+_uxTravelBugList\" class=\"tblist\" data-tbcount=\"([0-9]+)\" data-id=\"[^\"]*\"[^>]*>(.*)</a>");
/** Second group used */
public final static Pattern PATTERN_SEARCH_TRACKABLESINSIDE = Pattern.compile("(<img src=\"[^\"]+\" alt=\"([^\"]+)\" title=\"[^\"]*\" />[^<]*)");
- public final static Pattern PATTERN_SEARCH_DIRECTION = Pattern.compile("<img id=\"ctl00_ContentBody_dlResults_ctl[0-9]+_uxDistanceAndHeading\" title=\"[^\"]*\" src=\"[^\"]*/seek/CacheDir\\.ashx\\?k=([^\"]+)\"[^>]*>");
+ public final static Pattern PATTERN_SEARCH_DIRECTION_DISTANCE = Pattern.compile("<img src=\"/images/icons/compass/([^\\.]+)\\.gif\"[^>]*>[^<]*<br />([^<]+)</span>");
+ public final static Pattern PATTERN_SEARCH_DIFFICULTY_TERRAIN = Pattern.compile("<span class=\"small\">([0-5]([\\.,]5)?)/([0-5]([\\.,]5)?)</span><br />");
+ public final static Pattern PATTERN_SEARCH_CONTAINER = Pattern.compile("<img src=\"/images/icons/container/([^\\.]+)\\.gif\"");
public final static Pattern PATTERN_SEARCH_GEOCODE = Pattern.compile("\\|\\W*(GC[0-9A-Z]+)[^\\|]*\\|");
public final static Pattern PATTERN_SEARCH_ID = Pattern.compile("name=\"CID\"[^v]*value=\"([0-9]+)\"");
public final static Pattern PATTERN_SEARCH_FAVORITE = Pattern.compile("<span id=\"ctl00_ContentBody_dlResults_ctl[0-9]+_uxFavoritesValue\" title=\"[^\"]*\" class=\"favorite-rank\">([0-9]+)</span>");
diff --git a/main/src/cgeo/geocaching/connector/gc/GCMap.java b/main/src/cgeo/geocaching/connector/gc/GCMap.java
index 5f16e10..49f61ef 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCMap.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCMap.java
@@ -44,6 +44,7 @@ public class GCMap {
try {
final Parameters params = new Parameters("i", geocodeList, "_", String.valueOf(System.currentTimeMillis()));
+ params.add("app", "cgeo");
final String referer = GCConstants.URL_LIVE_MAP_DETAILS;
final String data = StringUtils.defaultString(Tile.requestMapInfo(referer, params, referer));
@@ -297,7 +298,8 @@ public class GCMap {
"x", String.valueOf(tile.getX()),
"y", String.valueOf(tile.getY()),
"z", String.valueOf(tile.getZoomlevel()),
- "ep", "1");
+ "ep", "1",
+ "app", "cgeo");
if (tokens != null) {
params.put("k", tokens[0], "st", tokens[1]);
}
diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java
index ef921de..bc01e10 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCParser.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java
@@ -166,9 +166,33 @@ public abstract class GCParser {
// cache direction - image
if (Settings.getLoadDirImg()) {
- cache.setDirectionImg(Network.decode(BaseUtils.getMatch(row, GCConstants.PATTERN_SEARCH_DIRECTION, true, 1, cache.getDirectionImg(), true)));
+ final String direction = BaseUtils.getMatch(row, GCConstants.PATTERN_SEARCH_DIRECTION_DISTANCE, false, 1, null, false);
+ final String distance = BaseUtils.getMatch(row, GCConstants.PATTERN_SEARCH_DIRECTION_DISTANCE, false, 2, null, false);
+ if (direction != null) {
+ cache.setDirectionImg(direction);
+ }
+ if (distance != null) {
+ cache.setDistance(DistanceParser.parseDistance(distance, Settings.isUseMetricUnits()));
+ }
}
+ // difficulty/terrain
+ final MatcherWrapper matcherDT = new MatcherWrapper(GCConstants.PATTERN_SEARCH_DIFFICULTY_TERRAIN, row);
+ if (matcherDT.find()) {
+ final Float difficulty = parseStars(matcherDT.group(1));
+ if (difficulty != null) {
+ cache.setDifficulty(difficulty);
+ }
+ final Float terrain = parseStars(matcherDT.group(3));
+ if (terrain != null) {
+ cache.setTerrain(terrain);
+ }
+ }
+
+ // size
+ final String container = BaseUtils.getMatch(row, GCConstants.PATTERN_SEARCH_CONTAINER, false, 1, null, false);
+ cache.setSize(CacheSize.getById(container));
+
// cache inventory
final MatcherWrapper matcherTbs = new MatcherWrapper(GCConstants.PATTERN_SEARCH_TRACKABLES, row);
String inventoryPre = null;
@@ -291,7 +315,7 @@ public abstract class GCParser {
final Set<Geocache> caches = searchResult.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB);
for (Geocache cache : caches) {
if (cache.getCoords() == null && StringUtils.isNotEmpty(cache.getDirectionImg())) {
- DirectionImage.getDrawable(cache.getGeocode(), cache.getDirectionImg());
+ DirectionImage.getDrawable(cache.getDirectionImg());
}
}
}
@@ -299,6 +323,11 @@ public abstract class GCParser {
return searchResult;
}
+ private static Float parseStars(final String value) {
+ float floatValue = Float.parseFloat(StringUtils.replaceChars(value, ',', '.'));
+ return floatValue >= 0.5 && floatValue <= 5.0 ? floatValue : null;
+ }
+
static SearchResult parseCache(final String page, final CancellableHandler handler) {
final SearchResult searchResult = parseCacheFromText(page, handler);
if (searchResult != null && !searchResult.getGeocodes().isEmpty()) {
diff --git a/main/src/cgeo/geocaching/export/FieldnoteExport.java b/main/src/cgeo/geocaching/export/FieldnoteExport.java
index 1165a14..a42a48a 100644
--- a/main/src/cgeo/geocaching/export/FieldnoteExport.java
+++ b/main/src/cgeo/geocaching/export/FieldnoteExport.java
@@ -165,8 +165,8 @@ class FieldnoteExport extends AbstractExport {
Log.e("FieldnoteExport.ExportTask export", e);
return false;
} finally {
- IOUtils.closeQuietly(buffer);
IOUtils.closeQuietly(fileWriter);
+ IOUtils.closeQuietly(buffer);
}
if (upload) {
diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java
index 33dcfd4..89d1cdc 100644
--- a/main/src/cgeo/geocaching/maps/CGeoMap.java
+++ b/main/src/cgeo/geocaching/maps/CGeoMap.java
@@ -525,6 +525,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// menu inflation happens in Google/Mapsforge specific classes
+ super.onCreateOptionsMenu(menu);
MapProviderFactory.addMapviewMenuItems(menu);
diff --git a/main/src/cgeo/geocaching/maps/MapProviderFactory.java b/main/src/cgeo/geocaching/maps/MapProviderFactory.java
index d1b5c3b..5ce8ab6 100644
--- a/main/src/cgeo/geocaching/maps/MapProviderFactory.java
+++ b/main/src/cgeo/geocaching/maps/MapProviderFactory.java
@@ -54,6 +54,7 @@ public class MapProviderFactory {
final int id = mapSource.getNumericalId();
parentMenu.add(R.id.menu_group_map_sources, id, i, mapSource.getName()).setCheckable(true).setChecked(id == currentSource);
}
+ parentMenu.setGroupCheckable(R.id.menu_group_map_sources, true, true);
}
public static MapSource getMapSource(int id) {
diff --git a/main/src/cgeo/geocaching/network/HtmlImage.java b/main/src/cgeo/geocaching/network/HtmlImage.java
index 15ea235..d5b610c 100644
--- a/main/src/cgeo/geocaching/network/HtmlImage.java
+++ b/main/src/cgeo/geocaching/network/HtmlImage.java
@@ -45,6 +45,7 @@ public class HtmlImage implements Html.ImageGetter {
"trendcounter.com",
"hit-counter-download.com"
};
+ public static final String SHARED = "shared";
final private String geocode;
/**
@@ -82,7 +83,7 @@ public class HtmlImage implements Html.ImageGetter {
}
final boolean shared = url.contains("/images/icons/icon_");
- final String pseudoGeocode = shared ? "shared" : geocode;
+ final String pseudoGeocode = shared ? SHARED : geocode;
Bitmap imagePre = loadImageFromStorage(url, pseudoGeocode, shared);
diff --git a/main/src/cgeo/geocaching/sorting/DistanceComparator.java b/main/src/cgeo/geocaching/sorting/DistanceComparator.java
index 7b0afbb..731e356 100644
--- a/main/src/cgeo/geocaching/sorting/DistanceComparator.java
+++ b/main/src/cgeo/geocaching/sorting/DistanceComparator.java
@@ -27,13 +27,10 @@ public class DistanceComparator extends AbstractCacheComparator {
if (cachedDistances) {
return;
}
- for (Geocache cache : list) {
+ for (final Geocache cache : list) {
if (cache.getCoords() != null) {
cache.setDistance(coords.distanceTo(cache.getCoords()));
}
- else {
- cache.setDistance(null);
- }
}
cachedDistances = true;
}
@@ -46,16 +43,12 @@ public class DistanceComparator extends AbstractCacheComparator {
@Override
protected int compareCaches(final Geocache cache1, final Geocache cache2) {
calculateAllDistances();
- if (cache1.getCoords() == null && cache2.getCoords() == null) {
- return 0;
- }
- if (cache1.getCoords() == null) {
- return 1;
- }
- if (cache2.getCoords() == null) {
- return -1;
+ final Float distance1 = cache1.getDistance();
+ final Float distance2 = cache2.getDistance();
+ if (distance1 == null) {
+ return distance2 == null ? 0 : 1;
}
- return Float.compare(cache1.getDistance(), cache2.getDistance());
+ return distance2 == null ? -1 : Float.compare(distance1, distance2);
}
}
diff --git a/main/src/cgeo/geocaching/speech/TextFactory.java b/main/src/cgeo/geocaching/speech/TextFactory.java
index 6b25147..0e13564 100644
--- a/main/src/cgeo/geocaching/speech/TextFactory.java
+++ b/main/src/cgeo/geocaching/speech/TextFactory.java
@@ -1,8 +1,10 @@
package cgeo.geocaching.speech;
import cgeo.geocaching.R;
+import cgeo.geocaching.Settings;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.geopoint.IConversion;
import cgeo.geocaching.utils.AngleUtils;
import java.util.Locale;
@@ -21,18 +23,35 @@ public class TextFactory {
private static String getDistance(Geopoint position, Geopoint target) {
float kilometers = position.distanceTo(target);
- if (kilometers >= 5.0) {
- return getString(R.string.tts_kilometers, String.valueOf(Math.round(kilometers)));
+
+ if (Settings.isUseMetricUnits()) {
+ if (kilometers >= 5.0) {
+ return getString(R.string.tts_kilometers, String.valueOf(Math.round(kilometers)));
+ }
+ if (kilometers >= 1.0) {
+ String digits = String.format(Locale.getDefault(), "%.1f", kilometers);
+ return getString(R.string.tts_kilometers, digits);
+ }
+ int meters = (int) (kilometers * 1000.0);
+ if (meters > 50) {
+ return getString(R.string.tts_meters, String.valueOf(Math.round(meters / 10.0) * 10));
+ }
+ return getString(R.string.tts_meters, String.valueOf(meters));
+ }
+
+ float miles = kilometers / IConversion.MILES_TO_KILOMETER;
+ if (miles >= 3.0) {
+ return getString(R.string.tts_miles, String.valueOf(Math.round(miles)));
}
- if (kilometers >= 1.0) {
- String digits = String.format(Locale.getDefault(), "%.1f", kilometers);
- return getString(R.string.tts_kilometers, digits);
+ if (miles >= 0.2) { // approx 1000 ft
+ String digits = String.format(Locale.getDefault(), "%.1f", miles);
+ return getString(R.string.tts_miles, digits);
}
- int meters = (int) (kilometers * 1000.0);
- if (meters > 50) {
- return getString(R.string.tts_meters, String.valueOf(Math.round(meters / 10.0) * 10));
+ int feet = (int) (kilometers * 1000.0 * IConversion.METERS_TO_FEET);
+ if (feet > 300) {
+ return getString(R.string.tts_feet, String.valueOf(Math.round(feet / 10.0) * 10));
}
- return getString(R.string.tts_meters, String.valueOf(meters));
+ return getString(R.string.tts_feet, String.valueOf(feet));
}
private static String getString(int resourceId, Object... formatArgs) {
diff --git a/main/src/cgeo/geocaching/ui/CacheListAdapter.java b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
index b60586e..99ae405 100644
--- a/main/src/cgeo/geocaching/ui/CacheListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
@@ -22,8 +22,6 @@ import org.apache.commons.lang3.builder.HashCodeBuilder;
import android.app.Activity;
import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.text.Spannable;
@@ -39,7 +37,6 @@ import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
-import android.widget.RelativeLayout;
import android.widget.TextView;
import java.util.ArrayList;
@@ -100,10 +97,8 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> {
TextView favorite;
TextView info;
ImageView inventory;
- RelativeLayout directionLayout;
DistanceView distance;
CompassMiniView direction;
- RelativeLayout dirImgLayout;
ImageView dirImg;
}
@@ -358,10 +353,8 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> {
holder.checkbox = (CheckBox) v.findViewById(R.id.checkbox);
holder.logStatusMark = (ImageView) v.findViewById(R.id.log_status_mark);
holder.text = (TextView) v.findViewById(R.id.text);
- holder.directionLayout = (RelativeLayout) v.findViewById(R.id.direction_layout);
holder.distance = (DistanceView) v.findViewById(R.id.distance);
holder.direction = (CompassMiniView) v.findViewById(R.id.direction);
- holder.dirImgLayout = (RelativeLayout) v.findViewById(R.id.dirimg_layout);
holder.dirImg = (ImageView) v.findViewById(R.id.dirimg);
holder.inventory = (ImageView) v.findViewById(R.id.inventory);
holder.favorite = (TextView) v.findViewById(R.id.favorite);
@@ -434,64 +427,26 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> {
holder.inventory.setVisibility(View.GONE);
}
- boolean setDiDi = false;
+ if (cache.getDistance() != null) {
+ holder.distance.setDistance(cache.getDistance());
+ }
if (cache.getCoords() != null) {
holder.direction.setVisibility(View.VISIBLE);
+ holder.dirImg.setVisibility(View.GONE);
holder.direction.updateAzimuth(azimuth);
if (coords != null) {
holder.distance.update(coords);
holder.direction.updateCurrentCoords(coords);
}
- setDiDi = true;
- } else {
- if (cache.getDistance() != null) {
- holder.distance.setDistance(cache.getDistance());
- setDiDi = true;
- }
- if (cache.getDirection() != null) {
- holder.direction.setVisibility(View.VISIBLE);
- holder.direction.updateAzimuth(azimuth);
- holder.direction.updateHeading(cache.getDirection());
- setDiDi = true;
- }
- }
-
- if (setDiDi) {
- holder.directionLayout.setVisibility(View.VISIBLE);
- holder.dirImgLayout.setVisibility(View.GONE);
+ } else if (cache.getDirection() != null) {
+ holder.direction.setVisibility(View.VISIBLE);
+ holder.dirImg.setVisibility(View.GONE);
+ holder.direction.updateAzimuth(azimuth);
+ holder.direction.updateHeading(cache.getDirection());
} else {
- holder.directionLayout.setVisibility(View.GONE);
- holder.distance.clear();
-
- final Bitmap dirImgPre = BitmapFactory.decodeFile(DirectionImage.getDirectionFile(cache.getGeocode(), false).getPath());
- final Bitmap dirImg;
- if (dirImgPre != null) { // null happens for invalid caches (not yet released)
- dirImg = dirImgPre.copy(Bitmap.Config.ARGB_8888, true);
- dirImgPre.recycle();
- }
- else {
- dirImg = null;
- }
-
- if (dirImg != null) {
- if (!lightSkin) {
- final int length = dirImg.getWidth() * dirImg.getHeight();
- final int[] pixels = new int[length];
- dirImg.getPixels(pixels, 0, dirImg.getWidth(), 0, 0, dirImg.getWidth(), dirImg.getHeight());
- for (int i = 0; i < length; i++) {
- if (pixels[i] == 0xff000000) { // replace black with white
- pixels[i] = 0xffffffff;
- }
- }
- dirImg.setPixels(pixels, 0, dirImg.getWidth(), 0, 0, dirImg.getWidth(), dirImg.getHeight());
- }
-
- holder.dirImg.setImageBitmap(dirImg);
- holder.dirImgLayout.setVisibility(View.VISIBLE);
- } else {
- holder.dirImg.setImageBitmap(null);
- holder.dirImgLayout.setVisibility(View.GONE);
- }
+ holder.dirImg.setImageDrawable(DirectionImage.getDrawable(cache.getDirectionImg()));
+ holder.dirImg.setVisibility(View.VISIBLE);
+ holder.direction.setVisibility(View.GONE);
}
holder.favorite.setText(Integer.toString(cache.getFavoritePoints()));
diff --git a/main/src/cgeo/geocaching/ui/DirectionImage.java b/main/src/cgeo/geocaching/ui/DirectionImage.java
index 675d73b..df7275d 100644
--- a/main/src/cgeo/geocaching/ui/DirectionImage.java
+++ b/main/src/cgeo/geocaching/ui/DirectionImage.java
@@ -1,30 +1,22 @@
package cgeo.geocaching.ui;
-import cgeo.geocaching.files.LocalStorage;
-import cgeo.geocaching.network.Network;
-import cgeo.geocaching.network.Parameters;
+import cgeo.geocaching.StoredList;
+import cgeo.geocaching.network.HtmlImage;
-import ch.boye.httpclientandroidlib.HttpResponse;
-import org.apache.commons.lang3.StringUtils;
-
-import java.io.File;
+import android.graphics.drawable.BitmapDrawable;
public class DirectionImage {
- public static void getDrawable(final String geocode, final String code) {
- if (StringUtils.isBlank(geocode) || StringUtils.isBlank(code)) {
- return;
- }
-
- final HttpResponse httpResponse =
- Network.getRequest("http://www.geocaching.com/ImgGen/seek/CacheDir.ashx", new Parameters("k", code));
- if (httpResponse != null) {
- LocalStorage.saveEntityToFile(httpResponse, getDirectionFile(geocode, true));
- }
- }
+ static private HtmlImage htmlImage = new HtmlImage(HtmlImage.SHARED, false, StoredList.STANDARD_LIST_ID, false);
- public static File getDirectionFile(final String geocode, final boolean createDirs) {
- return LocalStorage.getStorageFile(geocode, "direction.png", false, createDirs);
+ /**
+ * Retrieve the direction image corresponding to the direction code.
+ *
+ * @param directionCode one of the eight cardinal points
+ * @return a drawable with the arrow pointing into the right direction
+ */
+ public static BitmapDrawable getDrawable(final String directionCode) {
+ return htmlImage.getDrawable("http://www.geocaching.com/images/icons/compass/" + directionCode + ".gif");
}
}
diff --git a/tests/.classpath b/tests/.classpath
index 9bd2efb..67539bd 100644
--- a/tests/.classpath
+++ b/tests/.classpath
@@ -9,5 +9,6 @@
</classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/cgeo"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+ <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
diff --git a/tests/src/cgeo/test/Compare.java b/tests/src/cgeo/test/Compare.java
index 8af1541..24ed596 100644
--- a/tests/src/cgeo/test/Compare.java
+++ b/tests/src/cgeo/test/Compare.java
@@ -1,15 +1,17 @@
package cgeo.test;
import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertTrue;
-import cgeo.geocaching.ICache;
import cgeo.geocaching.Geocache;
+import cgeo.geocaching.ICache;
import cgeo.geocaching.enumerations.LogType;
public abstract class Compare {
public static void assertCompareCaches(ICache expected, Geocache actual, boolean all) {
+ assertNotNull(actual);
assertEquals(expected.getGeocode(), actual.getGeocode());
assertTrue(expected.getType() == actual.getType());
assertEquals(expected.getOwnerDisplayName(), actual.getOwnerDisplayName());