diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a16f7279..b14f5e2c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,7 @@
+
diff --git a/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageFetcher.java b/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageFetcher.java
index 868191a2..372c35c4 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageFetcher.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageFetcher.java
@@ -1,5 +1,7 @@
package com.kabouzeid.gramophone.glide.artistimage;
+import android.content.Context;
+
import com.bumptech.glide.Priority;
import com.bumptech.glide.load.data.DataFetcher;
import com.bumptech.glide.load.data.HttpUrlFetcher;
@@ -8,6 +10,7 @@ import com.kabouzeid.gramophone.lastfm.rest.LastFMRestClient;
import com.kabouzeid.gramophone.lastfm.rest.model.LastFmArtist;
import com.kabouzeid.gramophone.util.LastFMUtil;
import com.kabouzeid.gramophone.util.MusicUtil;
+import com.kabouzeid.gramophone.util.Util;
import java.io.InputStream;
@@ -15,12 +18,14 @@ import java.io.InputStream;
* @author Karim Abou Zeid (kabouzeid)
*/
public class ArtistImageFetcher implements DataFetcher {
+ private Context context;
private final LastFMRestClient lastFMRestClient;
private final ArtistImageRequest model;
private HttpUrlFetcher urlFetcher;
private volatile boolean isCancelled;
- public ArtistImageFetcher(LastFMRestClient lastFMRestClient, ArtistImageRequest model) {
+ public ArtistImageFetcher(Context context, LastFMRestClient lastFMRestClient, ArtistImageRequest model) {
+ this.context = context;
this.lastFMRestClient = lastFMRestClient;
this.model = model;
}
@@ -32,14 +37,15 @@ public class ArtistImageFetcher implements DataFetcher {
@Override
public InputStream loadData(Priority priority) throws Exception {
- if (MusicUtil.isArtistNameUnknown(model.artistName)) return null;
+ if (!MusicUtil.isArtistNameUnknown(model.artistName) && Util.isAllowedToAutoDownload(context)) {
+ LastFmArtist lastFmArtist = lastFMRestClient.getApiService().getArtistInfo(model.artistName, model.skipOkHttpCache ? "no-cache" : null).execute().body();
- LastFmArtist lastFmArtist = lastFMRestClient.getApiService().getArtistInfo(model.artistName, model.skipOkHttpCache ? "no-cache" : null).execute().body();
+ if (isCancelled) return null;
- if (isCancelled) return null;
-
- urlFetcher = new HttpUrlFetcher(new GlideUrl(LastFMUtil.getLargestArtistImageUrl(lastFmArtist.getArtist().getImage())));
- return urlFetcher.loadData(priority);
+ urlFetcher = new HttpUrlFetcher(new GlideUrl(LastFMUtil.getLargestArtistImageUrl(lastFmArtist.getArtist().getImage())));
+ return urlFetcher.loadData(priority);
+ }
+ return null;
}
@Override
diff --git a/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageLoader.java b/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageLoader.java
index 1cbf4ea7..3d57108e 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageLoader.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageLoader.java
@@ -16,15 +16,17 @@ import java.io.InputStream;
*/
public class ArtistImageLoader implements StreamModelLoader {
+ private Context context;
private LastFMRestClient lastFMRestClient;
- public ArtistImageLoader(LastFMRestClient lastFMRestClient) {
+ public ArtistImageLoader(Context context, LastFMRestClient lastFMRestClient) {
+ this.context = context;
this.lastFMRestClient = lastFMRestClient;
}
@Override
public DataFetcher getResourceFetcher(ArtistImageRequest model, int width, int height) {
- return new ArtistImageFetcher(lastFMRestClient, model);
+ return new ArtistImageFetcher(context, lastFMRestClient, model);
}
public static class Factory implements ModelLoaderFactory {
@@ -51,7 +53,7 @@ public class ArtistImageLoader implements StreamModelLoader
@Override
public ModelLoader build(Context context, GenericLoaderFactory factories) {
- return new ArtistImageLoader(client);
+ return new ArtistImageLoader(context, client);
}
@Override
diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java
index 9b8dfd01..8030e1de 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java
@@ -148,6 +148,16 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
}
});
+ final Preference autoDownloadImagesPolicy = findPreference("auto_download_images_policy");
+ setSummary(autoDownloadImagesPolicy);
+ autoDownloadImagesPolicy.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, @NonNull Object o) {
+ setSummary(autoDownloadImagesPolicy, o);
+ return true;
+ }
+ });
+
ColorChooserPreference primaryColor = (ColorChooserPreference) findPreference("primary_color");
primaryColor.setColor(PreferenceUtil.getInstance(getActivity()).getThemeColorPrimary(getActivity()));
primaryColor.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java
index 9790d2d7..5f5ac57b 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java
@@ -63,6 +63,8 @@ public final class PreferenceUtil {
public static final String LAST_CHANGELOG_VERSION = "last_changelog_version";
public static final String INTRO_SHOWN = "intro_shown";
+ public static final String AUTO_DOWNLOAD_IMAGES_POLICY = "auto_download_images_policy";
+
private static PreferenceUtil sInstance;
private final SharedPreferences mPreferences;
@@ -371,4 +373,8 @@ public final class PreferenceUtil {
public final boolean introShown() {
return mPreferences.getBoolean(INTRO_SHOWN, false);
}
+
+ public final String autoDownloadImagesPolicy() {
+ return mPreferences.getString(AUTO_DOWNLOAD_IMAGES_POLICY, "only_wifi");
+ }
}
diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/Util.java b/app/src/main/java/com/kabouzeid/gramophone/util/Util.java
index 8f28b9d6..b08c61b0 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/util/Util.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/util/Util.java
@@ -9,6 +9,8 @@ import android.content.res.TypedArray;
import android.graphics.Point;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.os.Build;
import android.support.annotation.AttrRes;
import android.support.annotation.DrawableRes;
@@ -114,4 +116,19 @@ public class Util {
return config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
} else return false;
}
+
+ public static boolean isAllowedToAutoDownload(final Context context) {
+ switch (PreferenceUtil.getInstance(context).autoDownloadImagesPolicy()) {
+ case "always":
+ return true;
+ case "only_wifi":
+ final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo();
+ return netInfo != null && netInfo.getType() == ConnectivityManager.TYPE_WIFI && netInfo.isConnectedOrConnecting();
+ case "never":
+ default:
+ return false;
+ }
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 107c838c..5960a2b6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -96,6 +96,9 @@
Light
Dark
Black (AMOLED)
+ Always
+ Only on wifi
+ Never
Equalizer
Colors
Now playing
@@ -107,6 +110,7 @@
Colored navigation bar
Start page
Show album cover
+ Auto download artist images
Blur album cover
Colored notification
Ignore Media Store covers
diff --git a/app/src/main/res/values/strings_activity_settings.xml b/app/src/main/res/values/strings_activity_settings.xml
index 850e2d65..80c9fbe6 100644
--- a/app/src/main/res/values/strings_activity_settings.xml
+++ b/app/src/main/res/values/strings_activity_settings.xml
@@ -27,4 +27,16 @@
- 2
+
+ - @string/always
+ - @string/only_on_wifi
+ - @string/never
+
+
+
+ - always
+ - only_wifi
+ - never
+
+
diff --git a/app/src/main/res/xml/pref_images.xml b/app/src/main/res/xml/pref_images.xml
index 1b29a4e9..3a6614dc 100644
--- a/app/src/main/res/xml/pref_images.xml
+++ b/app/src/main/res/xml/pref_images.xml
@@ -11,6 +11,16 @@
android:title="@string/pref_title_ignore_media_store_artwork"
android:widgetLayout="@layout/preference_dynamic_checkbox" />
+
+
\ No newline at end of file