From 95192007107fa24b80b06fbed4b9465e957f46a0 Mon Sep 17 00:00:00 2001 From: campbeb Date: Mon, 27 May 2013 17:17:20 -1000 Subject: Direction Image fixes for Basic Members Fixes some issues discovered while researching #2791 --- main/src/cgeo/geocaching/connector/gc/GCParser.java | 10 ++++++---- main/src/cgeo/geocaching/ui/CacheListAdapter.java | 6 +++++- main/src/cgeo/geocaching/ui/DirectionImage.java | 4 +++- 3 files changed, 14 insertions(+), 6 deletions(-) (limited to 'main/src') diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java index 62570c2..03698bb 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCParser.java +++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java @@ -167,13 +167,15 @@ public abstract class GCParser { // cache direction - image if (Settings.getLoadDirImg()) { 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())); - } + } + + // cache distance - estimated distance for basic members + final String distance = BaseUtils.getMatch(row, GCConstants.PATTERN_SEARCH_DIRECTION_DISTANCE, false, 2, null, false); + if (distance != null) { + cache.setDistance(DistanceParser.parseDistance(distance, Settings.isUseMetricUnits())); } // difficulty/terrain diff --git a/main/src/cgeo/geocaching/ui/CacheListAdapter.java b/main/src/cgeo/geocaching/ui/CacheListAdapter.java index 163d396..42b774e 100644 --- a/main/src/cgeo/geocaching/ui/CacheListAdapter.java +++ b/main/src/cgeo/geocaching/ui/CacheListAdapter.java @@ -18,6 +18,7 @@ import cgeo.geocaching.utils.AngleUtils; import cgeo.geocaching.utils.Log; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.HashCodeBuilder; import android.app.Activity; @@ -443,10 +444,13 @@ public class CacheListAdapter extends ArrayAdapter { holder.dirImg.setVisibility(View.GONE); holder.direction.updateAzimuth(azimuth); holder.direction.updateHeading(cache.getDirection()); - } else { + } else if (StringUtils.isNotBlank(cache.getDirectionImg())) { holder.dirImg.setImageDrawable(DirectionImage.getDrawable(cache.getDirectionImg())); holder.dirImg.setVisibility(View.VISIBLE); holder.direction.setVisibility(View.GONE); + } else { + holder.dirImg.setVisibility(View.GONE); + 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 df7275d..9de360c 100644 --- a/main/src/cgeo/geocaching/ui/DirectionImage.java +++ b/main/src/cgeo/geocaching/ui/DirectionImage.java @@ -3,6 +3,8 @@ package cgeo.geocaching.ui; import cgeo.geocaching.StoredList; import cgeo.geocaching.network.HtmlImage; +import org.apache.commons.lang3.StringUtils; + import android.graphics.drawable.BitmapDrawable; public class DirectionImage { @@ -16,7 +18,7 @@ public class DirectionImage { * @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"); + return StringUtils.isNotBlank(directionCode) ? htmlImage.getDrawable("http://www.geocaching.com/images/icons/compass/" + directionCode + ".gif") : null; } } -- cgit v1.1