From c7087209ef14e001200746ecfcc51d4526b6f74d Mon Sep 17 00:00:00 2001 From: Floens Date: Sat, 30 Dec 2017 23:52:39 +0100 Subject: [PATCH] imageviewer: preload the next image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The next image is preloaded by calling the filecache to download the image beforehand. Image loading settings are still honored. Closes #267 --- .../core/presenter/ImageViewerPresenter.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) 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 d0169b86..5e4a2914 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 @@ -26,6 +26,7 @@ import org.floens.chan.core.model.PostImage; import org.floens.chan.core.settings.ChanSettings; import org.floens.chan.ui.view.MultiImageView; +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -203,6 +204,43 @@ public class ImageViewerPresenter implements MultiImageView.Callback, ViewPager. callback.setImageMode(postImage, MultiImageView.Mode.MOVIE); } } + + preloadNext(); + } + + // This won't actually change any modes, but it will preload the image so that it's + // available immediately when the user swipes right. + private void preloadNext() { + if (selectedPosition + 1 < images.size()) { + PostImage next = images.get(selectedPosition + 1); + + boolean load = false; + if (next.type == PostImage.Type.STATIC || next.type == PostImage.Type.GIF) { + load = imageAutoLoad(next); + } else if (next.type == PostImage.Type.MOVIE) { + load = videoAutoLoad(next); + } + + if (load) { + final FileCache.DownloadedCallback emptyCallback = + new FileCache.DownloadedCallback() { + @Override + public void onProgress(long downloaded, long total, boolean done) { + } + + @Override + public void onSuccess(File file) { + } + + @Override + public void onFail(boolean notFound) { + } + }; + + final String fileUrl = next.imageUrl.toString(); + fileCache.downloadFile(fileUrl, emptyCallback); + } + } } @Override