diff options
| author | Jean Caffou <jean@briskula.si> | 2014-04-24 13:27:52 +0200 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2014-04-24 14:34:44 +0200 |
| commit | d48b4a67639202e6fdc8599740ad68619034a2b4 (patch) | |
| tree | 082d5405b58b3b1c7e8bbde37799fe76d9d34a68 /main/src/cgeo/geocaching/Geocache.java | |
| parent | 0cf889ca8762c9c134cee055005dcd85b8f075ba (diff) | |
| download | cgeo-d48b4a67639202e6fdc8599740ad68619034a2b4.zip cgeo-d48b4a67639202e6fdc8599740ad68619034a2b4.tar.gz cgeo-d48b4a67639202e6fdc8599740ad68619034a2b4.tar.bz2 | |
close #3438: import external spoiler images
Diffstat (limited to 'main/src/cgeo/geocaching/Geocache.java')
| -rw-r--r-- | main/src/cgeo/geocaching/Geocache.java | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/main/src/cgeo/geocaching/Geocache.java b/main/src/cgeo/geocaching/Geocache.java index 1ed699e..35855f1 100644 --- a/main/src/cgeo/geocaching/Geocache.java +++ b/main/src/cgeo/geocaching/Geocache.java @@ -53,11 +53,13 @@ import android.content.Intent; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.os.Environment; import android.os.Handler; import android.os.Message; import android.text.Html; import android.text.Html.ImageGetter; +import java.io.File; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; @@ -779,10 +781,9 @@ public class Geocache implements ICache, IWaypoint { @Override public List<Image> getSpoilers() { - if (spoilers == null) { - return Collections.emptyList(); - } - return Collections.unmodifiableList(spoilers); + final List<Image> allSpoilers = new LinkedList<Image>(CollectionUtils.emptyIfNull(spoilers)); + addLocalSpoilersTo(allSpoilers); + return allSpoilers; } @Override @@ -1749,6 +1750,23 @@ public class Geocache implements ICache, IWaypoint { return result; } + // add spoilers stored locally in /sdcard/GeocacheSpoilers + private void addLocalSpoilersTo(final List<Image> spoilers) { + if (StringUtils.length(geocode) >= 2) { + final String suffix = StringUtils.right(geocode, 2); + final File baseDir = new File(Environment.getExternalStorageDirectory().toString(), "GeocacheSpoilers"); + final File lastCharDir = new File(baseDir, suffix.substring(1)); + final File secondToLastCharDir = new File(lastCharDir, suffix.substring(0, 1)); + final File finalDir = new File(secondToLastCharDir, getGeocode()); + final File[] files = finalDir.listFiles(); + if (files != null) { + for (final File image : files) { + spoilers.add(new Image("file://" + image.getAbsolutePath(), image.getName())); + } + } + } + } + public void setDetailedUpdatedNow() { final long now = System.currentTimeMillis(); setUpdated(now); |
