aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCParser.java2
-rw-r--r--main/src/cgeo/geocaching/ui/CacheListAdapter.java32
-rw-r--r--main/src/cgeo/geocaching/ui/DirectionImage.java31
3 files changed, 16 insertions, 49 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java
index c8a9cc2..b4d665b 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCParser.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java
@@ -298,7 +298,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());
}
}
}
diff --git a/main/src/cgeo/geocaching/ui/CacheListAdapter.java b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
index 3e56c74..163d396 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;
@@ -446,33 +444,9 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> {
holder.direction.updateAzimuth(azimuth);
holder.direction.updateHeading(cache.getDirection());
} else {
- 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.dirImg.setVisibility(View.VISIBLE);
- holder.direction.setVisibility(View.GONE);
- }
+ holder.dirImg.setImageDrawable(DirectionImage.getDrawable(cache.getDirectionImg()));
+ holder.dirImg.setVisibility(View.VISIBLE);
+ holder.direction.setVisibility(View.GONE);
}
holder.favourite.setText(Integer.toString(cache.getFavoritePoints()));
diff --git a/main/src/cgeo/geocaching/ui/DirectionImage.java b/main/src/cgeo/geocaching/ui/DirectionImage.java
index 98b8767..df7275d 100644
--- a/main/src/cgeo/geocaching/ui/DirectionImage.java
+++ b/main/src/cgeo/geocaching/ui/DirectionImage.java
@@ -1,29 +1,22 @@
package cgeo.geocaching.ui;
-import cgeo.geocaching.files.LocalStorage;
-import cgeo.geocaching.network.Network;
+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/images/icons/compass/" + code + ".gif");
- 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");
}
}