diff --git a/app/build.gradle b/app/build.gradle index 4db12151..1b81817a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,12 +98,13 @@ dependencies { transitive = true } - compile('com.afollestad.material-dialogs:core:0.8.5.2@aar') { + compile('com.github.afollestad.material-dialogs:core:0.8.5.3@aar') { transitive = true } - compile('com.afollestad.material-dialogs:commons:0.8.5.2@aar') { + compile('com.github.afollestad.material-dialogs:commons:0.8.5.3@aar') { transitive = true } + compile('com.afollestad:material-cab:0.1.6@aar') { transitive = true } @@ -124,7 +125,6 @@ dependencies { compile 'com.github.kabouzeid:AndroidSlidingUpPanel:3.2.1' compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' - compile 'com.squareup.okhttp:okhttp:2.7.0' compile 'com.jakewharton:butterknife:7.0.1' compile 'org.solovyev.android.views:linear-layout-manager:0.5@aar' //noinspection GradleDynamicVersion @@ -132,4 +132,5 @@ dependencies { compile 'de.psdev.licensesdialog:licensesdialog:1.8.0' compile 'com.github.kabouzeid:AppIntro:3.3.0k' compile 'com.github.bumptech.glide:glide:3.6.1' + compile 'com.github.bumptech.glide:okhttp-integration:1.3.1@aar' } diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index c2fb43aa..8f141003 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -22,8 +22,7 @@ -keepattributes Signature -keepattributes Exceptions -# Glide --keepnames class com.kabouzeid.gramophone.glide.PhonographGlideModule +# Glide Modules -keep public class * implements com.bumptech.glide.module.GlideModule # ButterKnife diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java index 8acfb194..62a01b1c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java @@ -10,7 +10,9 @@ import android.view.View; import android.view.ViewGroup; import com.bumptech.glide.Glide; +import com.bumptech.glide.Priority; import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.request.target.Target; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder; import com.kabouzeid.gramophone.glide.SongGlideRequest; @@ -108,9 +110,11 @@ public class SearchAdapter extends RecyclerView.Adapter { + public static final String TAG = ArtistImageFetcher.class.getSimpleName(); private Context context; private final LastFMRestClient lastFMRestClient; private final ArtistImage model; - private HttpUrlFetcher urlFetcher; + private ModelLoader urlLoader; + private final int width; + private final int height; private volatile boolean isCancelled; + private DataFetcher urlFetcher; - public ArtistImageFetcher(Context context, LastFMRestClient lastFMRestClient, ArtistImage model) { + public ArtistImageFetcher(Context context, LastFMRestClient lastFMRestClient, ArtistImage model, ModelLoader urlLoader, int width, int height) { this.context = context; this.lastFMRestClient = lastFMRestClient; this.model = model; + this.urlLoader = urlLoader; + this.width = width; + this.height = height; } @Override @@ -42,7 +49,7 @@ public class ArtistImageFetcher implements DataFetcher { if (isCancelled) return null; - urlFetcher = new HttpUrlFetcher(new GlideUrl(LastFMUtil.getLargestArtistImageUrl(lastFmArtist.getArtist().getImage()))); + urlFetcher = urlLoader.getResourceFetcher(new GlideUrl(LastFMUtil.getLargestArtistImageUrl(lastFmArtist.getArtist().getImage())), width, height); return urlFetcher.loadData(priority); } return null; 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 504552a1..e7798c7f 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 @@ -2,8 +2,10 @@ package com.kabouzeid.gramophone.glide.artistimage; import android.content.Context; +import com.bumptech.glide.integration.okhttp.OkHttpUrlLoader; import com.bumptech.glide.load.data.DataFetcher; import com.bumptech.glide.load.model.GenericLoaderFactory; +import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.load.model.ModelLoader; import com.bumptech.glide.load.model.ModelLoaderFactory; import com.bumptech.glide.load.model.stream.StreamModelLoader; @@ -18,20 +20,24 @@ import java.io.InputStream; public class ArtistImageLoader implements StreamModelLoader { private Context context; private LastFMRestClient lastFMRestClient; + private ModelLoader urlLoader; - public ArtistImageLoader(Context context, LastFMRestClient lastFMRestClient) { + public ArtistImageLoader(Context context, LastFMRestClient lastFMRestClient, ModelLoader urlLoader) { this.context = context; this.lastFMRestClient = lastFMRestClient; + this.urlLoader = urlLoader; } @Override public DataFetcher getResourceFetcher(ArtistImage model, int width, int height) { - return new ArtistImageFetcher(context, lastFMRestClient, model); + return new ArtistImageFetcher(context, lastFMRestClient, model, urlLoader, width, height); } public static class Factory implements ModelLoaderFactory { private static volatile LastFMRestClient internalClient; private LastFMRestClient client; + private OkHttpUrlLoader.Factory okHttpFactory; + private static LastFMRestClient getInternalClient(Context context) { if (internalClient == null) { @@ -49,15 +55,17 @@ public class ArtistImageLoader implements StreamModelLoader { */ public Factory(Context context) { client = getInternalClient(context); + okHttpFactory = new OkHttpUrlLoader.Factory(); } @Override public ModelLoader build(Context context, GenericLoaderFactory factories) { - return new ArtistImageLoader(context, client); + return new ArtistImageLoader(context, client, okHttpFactory.build(context, factories)); } @Override public void teardown() { + okHttpFactory.teardown(); } } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index fc9f9b85..d2d08250 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -259,9 +259,10 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement .asBitmap() .transcode(new BitmapPaletteTranscoder(this), BitmapPaletteWrapper.class) .diskCacheStrategy(DiskCacheStrategy.SOURCE) - .error(R.drawable.default_artist_image) + .placeholder(R.drawable.default_artist_image) .signature(ArtistSignatureUtil.getInstance(this).getArtistSignature(artist.name)) .dontAnimate() + .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) .listener(new RequestListener() { @Override public boolean onException(Exception e, ArtistImage model, Target target, boolean isFirstResource) { 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 5f5ac57b..c64b958e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java @@ -294,7 +294,7 @@ public final class PreferenceUtil { } public final int getArtistGridSize(Context context) { - return mPreferences.getInt(ARTIST_GRID_SIZE, context.getResources().getInteger(R.integer.default_grid_columns)); + return mPreferences.getInt(ARTIST_GRID_SIZE, context.getResources().getInteger(R.integer.default_list_columns)); } public void setAlbumGridSizeLand(final int gridSize) { @@ -324,7 +324,7 @@ public final class PreferenceUtil { } public final int getArtistGridSizeLand(Context context) { - return mPreferences.getInt(ARTIST_GRID_SIZE_LAND, context.getResources().getInteger(R.integer.default_grid_columns_land)); + return mPreferences.getInt(ARTIST_GRID_SIZE_LAND, context.getResources().getInteger(R.integer.default_list_columns_land)); } public void setAlbumColoredFooters(final boolean value) {