Added option to only download artist images on wifi
This commit is contained in:
parent
2e5b17be38
commit
585fd1013c
9 changed files with 78 additions and 10 deletions
|
|
@ -7,6 +7,7 @@
|
|||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||
<uses-permission android:name="com.android.vending.BILLING" />
|
||||
|
|
|
|||
|
|
@ -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<InputStream> {
|
||||
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<InputStream> {
|
|||
|
||||
@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
|
||||
|
|
|
|||
|
|
@ -16,15 +16,17 @@ import java.io.InputStream;
|
|||
*/
|
||||
|
||||
public class ArtistImageLoader implements StreamModelLoader<ArtistImageRequest> {
|
||||
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<InputStream> getResourceFetcher(ArtistImageRequest model, int width, int height) {
|
||||
return new ArtistImageFetcher(lastFMRestClient, model);
|
||||
return new ArtistImageFetcher(context, lastFMRestClient, model);
|
||||
}
|
||||
|
||||
public static class Factory implements ModelLoaderFactory<ArtistImageRequest, InputStream> {
|
||||
|
|
@ -51,7 +53,7 @@ public class ArtistImageLoader implements StreamModelLoader<ArtistImageRequest>
|
|||
|
||||
@Override
|
||||
public ModelLoader<ArtistImageRequest, InputStream> build(Context context, GenericLoaderFactory factories) {
|
||||
return new ArtistImageLoader(client);
|
||||
return new ArtistImageLoader(context, client);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -96,6 +96,9 @@
|
|||
<string name="light_theme_name">Light</string>
|
||||
<string name="dark_theme_name">Dark</string>
|
||||
<string name="black_theme_name">Black (AMOLED)</string>
|
||||
<string name="always">Always</string>
|
||||
<string name="only_on_wifi">Only on wifi</string>
|
||||
<string name="never">Never</string>
|
||||
<string name="equalizer">Equalizer</string>
|
||||
<string name="pref_header_colors">Colors</string>
|
||||
<string name="pref_header_now_playing_screen">Now playing</string>
|
||||
|
|
@ -107,6 +110,7 @@
|
|||
<string name="pref_title_navigation_bar">Colored navigation bar</string>
|
||||
<string name="pref_title_set_default_start_page">Start page</string>
|
||||
<string name="pref_title_album_art_on_lockscreen">Show album cover</string>
|
||||
<string name="pref_title_auto_download_artist_images">Auto download artist images</string>
|
||||
<string name="pref_title_blurred_album_art">Blur album cover</string>
|
||||
<string name="pref_title_colored_notification">Colored notification</string>
|
||||
<string name="pref_title_ignore_media_store_artwork">Ignore Media Store covers</string>
|
||||
|
|
|
|||
|
|
@ -27,4 +27,16 @@
|
|||
<item>2</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="pref_auto_download_images_titles">
|
||||
<item>@string/always</item>
|
||||
<item>@string/only_on_wifi</item>
|
||||
<item>@string/never</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="pref_auto_download_images_values">
|
||||
<item>always</item>
|
||||
<item>only_wifi</item>
|
||||
<item>never</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,16 @@
|
|||
android:title="@string/pref_title_ignore_media_store_artwork"
|
||||
android:widgetLayout="@layout/preference_dynamic_checkbox" />
|
||||
|
||||
<com.afollestad.materialdialogs.prefs.MaterialListPreference
|
||||
android:defaultValue="only_wifi"
|
||||
android:entries="@array/pref_auto_download_images_titles"
|
||||
android:entryValues="@array/pref_auto_download_images_values"
|
||||
android:key="auto_download_images_policy"
|
||||
android:layout="@layout/preference_custom"
|
||||
android:negativeButtonText="@null"
|
||||
android:positiveButtonText="@null"
|
||||
android:title="@string/pref_title_auto_download_artist_images" />
|
||||
|
||||
</com.kabouzeid.gramophone.prefs.DynamicPreferenceCategory>
|
||||
|
||||
</PreferenceScreen>
|
||||
Loading…
Add table
Add a link
Reference in a new issue