diff --git a/app/src/main/java/com/gh4a/fragment/SettingsFragment.java b/app/src/main/java/com/gh4a/fragment/SettingsFragment.java
index f800e0a847..79959d72a5 100644
--- a/app/src/main/java/com/gh4a/fragment/SettingsFragment.java
+++ b/app/src/main/java/com/gh4a/fragment/SettingsFragment.java
@@ -39,6 +39,7 @@ public interface OnStateChangeListener {
public static final String KEY_START_PAGE = "start_page";
public static final String KEY_TEXT_SIZE = "webview_initial_zoom";
public static final String KEY_GIF_LOADING = "http_gif_load_mode";
+ public static final String KEY_IMAGE_LOADING = "http_image_load_mode";
public static final String KEY_NOTIFICATIONS = "notifications";
public static final String KEY_NOTIFICATION_INTERVAL = "notification_interval";
private static final String KEY_ABOUT = "about";
diff --git a/app/src/main/java/com/gh4a/utils/HttpImageGetter.java b/app/src/main/java/com/gh4a/utils/HttpImageGetter.java
index e8fb95cb31..2dcc496c93 100644
--- a/app/src/main/java/com/gh4a/utils/HttpImageGetter.java
+++ b/app/src/main/java/com/gh4a/utils/HttpImageGetter.java
@@ -461,12 +461,13 @@ private Drawable loadImageForUrl(String source) {
bitmap = renderSvgToBitmap(mContext.getResources(), is, mWidth, mHeight);
} else {
boolean isGif = mime != null && mime.startsWith("image/gif");
- if (!isGif || canLoadGif()) {
+ if ((isGif && canLoadGif()) || (!isGif && canLoadImage())) {
output = File.createTempFile("image", ".tmp", mCacheDir);
if (FileUtils.save(output, is)) {
if (isGif) {
GifDrawable d = new GifDrawable(output);
- d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
+ d.setBounds(0, 0, d.getIntrinsicWidth(),
+ d.getIntrinsicHeight());
return d;
} else {
bitmap = getBitmap(output, mWidth, mHeight);
@@ -521,6 +522,20 @@ private boolean canLoadGif() {
}
}
+ private boolean canLoadImage() {
+ SharedPreferences prefs = mContext.getSharedPreferences(SettingsFragment.PREF_NAME,
+ Context.MODE_PRIVATE);
+ int mode = prefs.getInt(SettingsFragment.KEY_IMAGE_LOADING, 2);
+ switch (mode) {
+ case 1: // load via Wifi
+ return !UiUtils.downloadNeedsWarning(mContext);
+ case 2: // always load
+ return true;
+ default:
+ return false;
+ }
+ }
+
private static Bitmap getBitmap(final File image, int width, int height) {
final BitmapFactory.Options options = new BitmapFactory.Options();
RandomAccessFile file = null;
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index a8847ebe6c..476ba5869c 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -50,12 +50,12 @@
- 3
- 4
-
+
- Don\'t load
- Only load on Wifi
- Load always
-
+
- 0
- 1
- 2
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 669e1bc76a..7fe8c1ff33 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -524,6 +524,7 @@
Code view text size
Animated GIF loading
+ Image loading
Diff of file %1$s in commit %2$s in %3$s/%4$s
diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml
index d09106559f..f0a593425a 100644
--- a/app/src/main/res/xml/settings.xml
+++ b/app/src/main/res/xml/settings.xml
@@ -25,10 +25,18 @@
android:summary="%s"
android:title="@string/menu_text_size" />
+
+