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" /> + +