From 0a680219fccc73acbcb25393b3d5111276a6db49 Mon Sep 17 00:00:00 2001 From: Florens Douwes Date: Tue, 27 May 2014 14:36:11 +0200 Subject: [PATCH] Add an auto load image preference. --- .../org/floens/chan/core/ChanPreferences.java | 6 ++- .../chan/ui/fragment/ImageViewFragment.java | 50 ++++++++++++++++--- .../chan/ui/view/ThumbnailImageView.java | 13 +---- Clover/app/src/main/res/values/strings.xml | 3 +- Clover/app/src/main/res/xml/preference.xml | 7 +++ 5 files changed, 58 insertions(+), 21 deletions(-) diff --git a/Clover/app/src/main/java/org/floens/chan/core/ChanPreferences.java b/Clover/app/src/main/java/org/floens/chan/core/ChanPreferences.java index 8f611e7b..6a7735f5 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/ChanPreferences.java +++ b/Clover/app/src/main/java/org/floens/chan/core/ChanPreferences.java @@ -79,13 +79,17 @@ public class ChanPreferences { } public static boolean getVideoAutoPlay() { - return p().getBoolean("preference_autoplay", false); + return getImageAutoLoad() && p().getBoolean("preference_autoplay", false); } public static boolean getThreadAutoRefresh() { return p().getBoolean("preference_auto_refresh_thread", true); } + public static boolean getImageAutoLoad() { + return p().getBoolean("preference_image_auto_load", true); + } + public static boolean getPassEnabled() { return p().getBoolean("preference_pass_enabled", false); } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java index 73ec2169..e281b8a2 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java @@ -47,6 +47,8 @@ public class ImageViewFragment extends Fragment implements ThumbnailImageViewCal private boolean isVideo = false; private boolean videoVisible = false; private boolean videoSetIconToPause = false; + private boolean tapToLoad = false; + private boolean loaded = false; public static ImageViewFragment newInstance(Post post, ImageViewActivity activity, int index) { ImageViewFragment imageViewFragment = new ImageViewFragment(); @@ -98,20 +100,42 @@ public class ImageViewFragment extends Fragment implements ThumbnailImageViewCal imageView.setThumbnail(post.thumbnailUrl); - if (post.ext.equals("gif")) { - imageView.setGif(post.imageUrl); - } else if (post.ext.equals("webm")) { - isVideo = true; - activity.invalidateActionBar(); - showProgressBar(false); + if (ChanPreferences.getImageAutoLoad()) { + load(); } else { - imageView.setBigImage(post.imageUrl); + tapToLoad = true; + showProgressBar(false); } } }); } } + private void load() { + if (loaded) return; + loaded = true; + + if (post.ext.equals("gif")) { + imageView.setGif(post.imageUrl); + } else if (post.ext.equals("webm")) { + isVideo = true; + activity.invalidateActionBar(); + showProgressBar(false); + + if (tapToLoad) { + if (!videoVisible) { + startVideo(); + } else { + if (imageView.getVideoView() != null) { + imageView.getVideoView().start(); + } + } + } + } else { + imageView.setBigImage(post.imageUrl); + } + } + @Override public void onSaveInstanceState(Bundle bundle) { // https://code.google.com/p/android/issues/detail?id=19917 @@ -197,7 +221,9 @@ public class ImageViewFragment extends Fragment implements ThumbnailImageViewCal } private void startVideo() { + if (videoVisible) return; videoVisible = true; + imageView.setVideo(post.imageUrl); } @@ -208,7 +234,15 @@ public class ImageViewFragment extends Fragment implements ThumbnailImageViewCal @Override public void onTap() { - activity.finish(); + if (tapToLoad) { + if (loaded) { + activity.finish(); + } else { + load(); + } + } else { + activity.finish(); + } } @Override diff --git a/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java b/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java index 73ea8412..99fb4a2b 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java @@ -56,7 +56,6 @@ public class ThumbnailImageView extends LoadView implements OnViewTapListener, V private final float maxScale = 3f; private boolean thumbnailNeeded = true; - private boolean tapDismiss = false; private ImageContainer imageContainerRequest; private Request imageRequest; @@ -104,7 +103,6 @@ public class ThumbnailImageView extends LoadView implements OnViewTapListener, V thumbnail.setImageBitmap(response.getBitmap()); thumbnail.setLayoutParams(Utils.MATCH_PARAMS); setView(thumbnail, false); - tapDismiss = true; } } }, getWidth(), getHeight()); @@ -143,7 +141,6 @@ public class ThumbnailImageView extends LoadView implements OnViewTapListener, V setView(image, !isImmediate); callback.setProgress(false); thumbnailNeeded = false; - tapDismiss = true; } } }, maxWidth, maxHeight); @@ -166,7 +163,6 @@ public class ThumbnailImageView extends LoadView implements OnViewTapListener, V setView(view, false); callback.setProgress(false); thumbnailNeeded = false; - tapDismiss = true; } }, new Response.ErrorListener() { @Override @@ -206,7 +202,6 @@ public class ThumbnailImageView extends LoadView implements OnViewTapListener, V setView(videoView, false); callback.setProgress(false); thumbnailNeeded = false; - tapDismiss = true; videoView.start(); } else { @@ -251,16 +246,12 @@ public class ThumbnailImageView extends LoadView implements OnViewTapListener, V @Override public void onViewTap(View view, float x, float y) { - if (tapDismiss) { - callback.onTap(); - } + callback.onTap(); } @Override public void onClick(View v) { - if (tapDismiss) { - callback.onTap(); - } + callback.onTap(); } public static interface ThumbnailImageViewCallback { diff --git a/Clover/app/src/main/res/values/strings.xml b/Clover/app/src/main/res/values/strings.xml index 67021a29..ebd37bf9 100644 --- a/Clover/app/src/main/res/values/strings.xml +++ b/Clover/app/src/main/res/values/strings.xml @@ -114,8 +114,9 @@ Ask before opening links - Start playing videos directly + Start playing videos immediately Auto refresh threads + Auto load image Default name Default email diff --git a/Clover/app/src/main/res/xml/preference.xml b/Clover/app/src/main/res/xml/preference.xml index 9c448f86..1c310fab 100644 --- a/Clover/app/src/main/res/xml/preference.xml +++ b/Clover/app/src/main/res/xml/preference.xml @@ -39,9 +39,16 @@ android:defaultValue="true" android:key="preference_open_link_confirmation" android:title="@string/preference_open_link_confirmation" /> + + +