From 89b499ee6ebc10b46d69d4e86fc83e2c330cbdb3 Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Sat, 15 Mar 2014 23:35:21 +0100 Subject: fix #3661: add ability to open image from cache description --- main/src/cgeo/geocaching/Geocache.java | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'main/src/cgeo/geocaching/Geocache.java') diff --git a/main/src/cgeo/geocaching/Geocache.java b/main/src/cgeo/geocaching/Geocache.java index 8dde37d..f6e3f18 100644 --- a/main/src/cgeo/geocaching/Geocache.java +++ b/main/src/cgeo/geocaching/Geocache.java @@ -47,18 +47,23 @@ import rx.functions.Action1; import android.app.Activity; import android.content.Intent; import android.content.res.Resources; +import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Handler; import android.os.Message; import android.text.Html; +import android.text.Html.ImageGetter; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -1710,12 +1715,34 @@ public class Geocache implements ICache, IWaypoint { } }; - public List getImages() { - final List result = new ArrayList(); + private void addDescriptionImagesUrls(final Collection images) { + final Set urls = new LinkedHashSet(); + for (final Image image : images) { + urls.add(image.getUrl()); + } + Html.fromHtml(getDescription(), new ImageGetter() { + @Override + public Drawable getDrawable(final String source) { + if (!urls.contains(source)) { + images.add(new Image(source, geocode)); + urls.add(source); + } + return null; + } + }, null); + } + + public Collection getImages() { + final LinkedList result = new LinkedList(); result.addAll(getSpoilers()); for (final LogEntry log : getLogs()) { result.addAll(log.getLogImages()); } + final Set urls = new HashSet(result.size()); + for (final Image image : result) { + urls.add(image.getUrl()); + } + addDescriptionImagesUrls(result); return result; } -- cgit v1.1