Always load an image if it's already cached

multisite
Floens 10 years ago
parent 22ace00b21
commit 89e7b57ea6
  1. 4
      Clover/app/src/main/java/org/floens/chan/core/cache/FileCache.java
  2. 18
      Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java

@ -147,6 +147,10 @@ public class FileCache {
} }
} }
public boolean exists(String key) {
return get(key).exists();
}
public File get(String key) { public File get(String key) {
makeDir(); makeDir();

@ -20,6 +20,7 @@ package org.floens.chan.core.presenter;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import org.floens.chan.Chan;
import org.floens.chan.core.model.Loadable; import org.floens.chan.core.model.Loadable;
import org.floens.chan.core.model.PostImage; import org.floens.chan.core.model.PostImage;
import org.floens.chan.core.settings.ChanSettings; import org.floens.chan.core.settings.ChanSettings;
@ -178,12 +179,12 @@ public class ImageViewerPresenter implements MultiImageView.Callback, ViewPager.
private void onLowResInCenter() { private void onLowResInCenter() {
PostImage postImage = images.get(selectedPosition); PostImage postImage = images.get(selectedPosition);
if (imageAutoLoad() && !postImage.spoiler) { if (imageAutoLoad(postImage) && !postImage.spoiler) {
if (postImage.type == PostImage.Type.STATIC) { if (postImage.type == PostImage.Type.STATIC) {
callback.setImageMode(postImage, MultiImageView.Mode.BIGIMAGE); callback.setImageMode(postImage, MultiImageView.Mode.BIGIMAGE);
} else if (postImage.type == PostImage.Type.GIF) { } else if (postImage.type == PostImage.Type.GIF) {
callback.setImageMode(postImage, MultiImageView.Mode.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); 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 // Don't mistake a swipe when the pager is disabled as a tap
if (viewPagerVisible) { if (viewPagerVisible) {
PostImage postImage = images.get(selectedPosition); PostImage postImage = images.get(selectedPosition);
if (imageAutoLoad() && !postImage.spoiler) { if (imageAutoLoad(postImage) && !postImage.spoiler) {
if (postImage.type == PostImage.Type.MOVIE) { if (postImage.type == PostImage.Type.MOVIE) {
callback.setImageMode(postImage, MultiImageView.Mode.MOVIE); callback.setImageMode(postImage, MultiImageView.Mode.MOVIE);
} else { } else {
@ -253,7 +254,11 @@ public class ImageViewerPresenter implements MultiImageView.Callback, ViewPager.
callback.onVideoError(multiImageView); callback.onVideoError(multiImageView);
} }
private boolean imageAutoLoad() { 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(); String autoLoadMode = ChanSettings.imageAutoLoadNetwork.get();
if (autoLoadMode.equals(ChanSettings.ImageAutoLoadMode.NONE.name)) { if (autoLoadMode.equals(ChanSettings.ImageAutoLoadMode.NONE.name)) {
return false; return false;
@ -266,9 +271,10 @@ public class ImageViewerPresenter implements MultiImageView.Callback, ViewPager.
// Not connected or unrecognized // Not connected or unrecognized
return false; return false;
} }
}
private boolean videoAutoLoad() { private boolean videoAutoLoad(PostImage postImage) {
return imageAutoLoad() && ChanSettings.videoAutoLoad.get(); return imageAutoLoad(postImage) && ChanSettings.videoAutoLoad.get();
} }
private void setTitle(PostImage postImage, int position) { private void setTitle(PostImage postImage, int position) {

Loading…
Cancel
Save