diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2014-03-15 23:35:21 +0100 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2014-03-15 23:35:21 +0100 |
| commit | 89b499ee6ebc10b46d69d4e86fc83e2c330cbdb3 (patch) | |
| tree | 3172c130024142a82a6db854824723dad5ef2a60 /main/src | |
| parent | 14478076cd9ab465f2dc6fdaef93c0167b398d54 (diff) | |
| download | cgeo-89b499ee6ebc10b46d69d4e86fc83e2c330cbdb3.zip cgeo-89b499ee6ebc10b46d69d4e86fc83e2c330cbdb3.tar.gz cgeo-89b499ee6ebc10b46d69d4e86fc83e2c330cbdb3.tar.bz2 | |
fix #3661: add ability to open image from cache description
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/cgeo/geocaching/Geocache.java | 31 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/ui/ImagesList.java | 3 |
2 files changed, 30 insertions, 4 deletions
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<Image> getImages() { - final List<Image> result = new ArrayList<Image>(); + private void addDescriptionImagesUrls(final Collection<Image> images) { + final Set<String> urls = new LinkedHashSet<String>(); + 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<Image> getImages() { + final LinkedList<Image> result = new LinkedList<Image>(); result.addAll(getSpoilers()); for (final LogEntry log : getLogs()) { result.addAll(log.getLogImages()); } + final Set<String> urls = new HashSet<String>(result.size()); + for (final Image image : result) { + urls.add(image.getUrl()); + } + addDescriptionImagesUrls(result); return result; } diff --git a/main/src/cgeo/geocaching/ui/ImagesList.java b/main/src/cgeo/geocaching/ui/ImagesList.java index dcce969..190f55b 100644 --- a/main/src/cgeo/geocaching/ui/ImagesList.java +++ b/main/src/cgeo/geocaching/ui/ImagesList.java @@ -39,7 +39,6 @@ import java.io.File; import java.io.FileOutputStream; import java.util.Collection; import java.util.LinkedList; -import java.util.List; public class ImagesList { @@ -86,7 +85,7 @@ public class ImagesList { * @param offline <tt>true</tt> if the images must be stored for offline use * @return a subscription which, when unsubscribed, interrupts the loading and clears up resources */ - public Subscription loadImages(final View parentView, final List<Image> images, final boolean offline) { + public Subscription loadImages(final View parentView, final Collection<Image> images, final boolean offline) { // Start with a fresh subscription because of this method can be called several times if the // englobing activity is stopped/restarted. final CompositeSubscription subscriptions = new CompositeSubscription(Subscriptions.create(new Action0() { |
