From 89e7b57ea638ad503a6e204716bac3cd0c49c6fb Mon Sep 17 00:00:00 2001 From: Floens Date: Wed, 18 Nov 2015 20:41:21 +0100 Subject: [PATCH] Always load an image if it's already cached --- .../org/floens/chan/core/cache/FileCache.java | 4 +++ .../core/presenter/ImageViewerPresenter.java | 36 +++++++++++-------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/Clover/app/src/main/java/org/floens/chan/core/cache/FileCache.java b/Clover/app/src/main/java/org/floens/chan/core/cache/FileCache.java index 1f7698ae..0015a2bb 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/cache/FileCache.java +++ b/Clover/app/src/main/java/org/floens/chan/core/cache/FileCache.java @@ -147,6 +147,10 @@ public class FileCache { } } + public boolean exists(String key) { + return get(key).exists(); + } + public File get(String key) { makeDir(); diff --git a/Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java b/Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java index 493c4bd1..445311f5 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java +++ b/Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java @@ -20,6 +20,7 @@ package org.floens.chan.core.presenter; import android.net.ConnectivityManager; import android.support.v4.view.ViewPager; +import org.floens.chan.Chan; import org.floens.chan.core.model.Loadable; import org.floens.chan.core.model.PostImage; import org.floens.chan.core.settings.ChanSettings; @@ -178,12 +179,12 @@ public class ImageViewerPresenter implements MultiImageView.Callback, ViewPager. private void onLowResInCenter() { PostImage postImage = images.get(selectedPosition); - if (imageAutoLoad() && !postImage.spoiler) { + if (imageAutoLoad(postImage) && !postImage.spoiler) { if (postImage.type == PostImage.Type.STATIC) { callback.setImageMode(postImage, MultiImageView.Mode.BIGIMAGE); } else if (postImage.type == PostImage.Type.GIF) { callback.setImageMode(postImage, MultiImageView.Mode.GIF); - } else if (postImage.type == PostImage.Type.MOVIE && videoAutoLoad()) { + } else if (postImage.type == PostImage.Type.MOVIE && videoAutoLoad(postImage)) { callback.setImageMode(postImage, MultiImageView.Mode.MOVIE); } } @@ -194,7 +195,7 @@ public class ImageViewerPresenter implements MultiImageView.Callback, ViewPager. // Don't mistake a swipe when the pager is disabled as a tap if (viewPagerVisible) { PostImage postImage = images.get(selectedPosition); - if (imageAutoLoad() && !postImage.spoiler) { + if (imageAutoLoad(postImage) && !postImage.spoiler) { if (postImage.type == PostImage.Type.MOVIE) { callback.setImageMode(postImage, MultiImageView.Mode.MOVIE); } else { @@ -253,22 +254,27 @@ public class ImageViewerPresenter implements MultiImageView.Callback, ViewPager. callback.onVideoError(multiImageView); } - private boolean imageAutoLoad() { - String autoLoadMode = ChanSettings.imageAutoLoadNetwork.get(); - if (autoLoadMode.equals(ChanSettings.ImageAutoLoadMode.NONE.name)) { - return false; - } else if (autoLoadMode.equals(ChanSettings.ImageAutoLoadMode.WIFI.name)) { - return isConnected(ConnectivityManager.TYPE_WIFI); - } else if (autoLoadMode.equals(ChanSettings.ImageAutoLoadMode.ALL.name)) { + private boolean imageAutoLoad(PostImage postImage) { + // Auto load the image when it is cached + if (Chan.getFileCache().exists(postImage.imageUrl)) { return true; - } + } else { + String autoLoadMode = ChanSettings.imageAutoLoadNetwork.get(); + if (autoLoadMode.equals(ChanSettings.ImageAutoLoadMode.NONE.name)) { + return false; + } else if (autoLoadMode.equals(ChanSettings.ImageAutoLoadMode.WIFI.name)) { + return isConnected(ConnectivityManager.TYPE_WIFI); + } else if (autoLoadMode.equals(ChanSettings.ImageAutoLoadMode.ALL.name)) { + return true; + } - // Not connected or unrecognized - return false; + // Not connected or unrecognized + return false; + } } - private boolean videoAutoLoad() { - return imageAutoLoad() && ChanSettings.videoAutoLoad.get(); + private boolean videoAutoLoad(PostImage postImage) { + return imageAutoLoad(postImage) && ChanSettings.videoAutoLoad.get(); } private void setTitle(PostImage postImage, int position) {