aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/src')
-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
13 files changed, 115 insertions, 109 deletions
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");
}
}