aboutsummaryrefslogtreecommitdiff
path: root/samples
diff options
context:
space:
mode:
authorSam Judd <sam@bu.mp>2013-07-19 16:54:45 -0700
committerSam Judd <sam@bu.mp>2013-07-19 16:54:45 -0700
commitc717f77320080cf52eae84f740f40911b5bf0733 (patch)
treea68b9ee82644c40ff06838565d7713706306280d /samples
parente13dcedf144c02927c122fae32179f460b21fef5 (diff)
downloadglide-c717f77320080cf52eae84f740f40911b5bf0733.tar.gz
Update the flickr sample for the new interface
Diffstat (limited to 'samples')
-rw-r--r--samples/flickr/src/com/bumptech/flickr/DirectFlickrStreamLoader.java25
-rw-r--r--samples/flickr/src/com/bumptech/flickr/FlickrModelLoader.java41
-rw-r--r--samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java4
-rw-r--r--samples/flickr/src/com/bumptech/flickr/FlickrPhotoList.java3
-rw-r--r--samples/flickr/src/com/bumptech/flickr/FlickrStreamLoader.java45
-rw-r--r--samples/flickr/src/com/bumptech/flickr/VolleyStreamLoader.java57
6 files changed, 102 insertions, 73 deletions
diff --git a/samples/flickr/src/com/bumptech/flickr/DirectFlickrStreamLoader.java b/samples/flickr/src/com/bumptech/flickr/DirectFlickrStreamLoader.java
deleted file mode 100644
index bf4db4d2..00000000
--- a/samples/flickr/src/com/bumptech/flickr/DirectFlickrStreamLoader.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.bumptech.flickr;
-
-import com.bumptech.flickr.api.Api;
-import com.bumptech.flickr.api.Photo;
-import com.bumptech.glide.loader.model.DirectModelStreamLoader;
-import com.bumptech.glide.loader.opener.HttpInputStreamOpener;
-import com.bumptech.glide.loader.opener.StreamOpener;
-
-/**
- * An implementation of ModelStreamLoader that leverages the StreamOpener class and the ExecutorService backing the
- * ImageManager to download the image and resize it in memory before saving the resized version
- * directly to the disk cache.
- */
-public class DirectFlickrStreamLoader extends DirectModelStreamLoader<Photo>{
-
- @Override
- protected StreamOpener getStreamOpener(Photo model, int width, int height) {
- return new HttpInputStreamOpener(Api.getPhotoURL(model, width, height));
- }
-
- @Override
- protected String getId(Photo model) {
- return model.id;
- }
-}
diff --git a/samples/flickr/src/com/bumptech/flickr/FlickrModelLoader.java b/samples/flickr/src/com/bumptech/flickr/FlickrModelLoader.java
new file mode 100644
index 00000000..d8d10953
--- /dev/null
+++ b/samples/flickr/src/com/bumptech/flickr/FlickrModelLoader.java
@@ -0,0 +1,41 @@
+package com.bumptech.flickr;
+
+import com.android.volley.RequestQueue;
+import com.bumptech.flickr.api.Api;
+import com.bumptech.flickr.api.Photo;
+import com.bumptech.glide.loader.stream.StreamLoader;
+import com.bumptech.glide.loader.model.ModelLoader;
+
+/**
+ * An implementation of ModelStreamLoader that leverages the StreamOpener class and the ExecutorService backing the
+ * ImageManager to download the image and resize it in memory before saving the resized version
+ * directly to the disk cache.
+ */
+public class FlickrModelLoader implements ModelLoader<Photo> {
+ private final RequestQueue requestQueue;
+ private StreamLoader current;
+
+ public FlickrModelLoader(RequestQueue requestQueue) {
+ this.requestQueue = requestQueue;
+ }
+
+ @Override
+ public StreamLoader getStreamOpener(Photo model, int width, int height) {
+ clear();
+ current = new VolleyStreamLoader(requestQueue, Api.getPhotoURL(model, width, height));
+ return current;
+ }
+
+ @Override
+ public String getId(Photo model) {
+ return model.id;
+ }
+
+ @Override
+ public void clear() {
+ if (current != null) {
+ current.cancel();
+ current = null;
+ }
+ }
+}
diff --git a/samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java b/samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java
index 7dbd7a4b..5db19a69 100644
--- a/samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java
+++ b/samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java
@@ -10,7 +10,7 @@ import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import com.actionbarsherlock.app.SherlockFragment;
-import com.bumptech.flickr.api.Api;
+import com.bumptech.flickr.api.Downloader;
import com.bumptech.flickr.api.Photo;
import com.bumptech.glide.Glide;
import com.bumptech.glide.presenter.ImagePresenter;
@@ -112,7 +112,7 @@ public class FlickrPhotoGrid extends SherlockFragment implements PhotoViewer {
final Animation fadeIn = AnimationUtils.loadAnimation(getActivity(), R.anim.fade_in);
imagePresenter = new ImagePresenter.Builder<Photo>()
.setImageView(imageView)
- .setModelStreamLoader(new FlickrStreamLoader(Api.get(getActivity()), cacheDir))
+ .setModelLoader(new FlickrModelLoader(Downloader.get(getActivity()).getQueue()))
.setImageLoader(new CenterCrop(Glide.get().getImageManager(getActivity())))
.setImageSetCallback(new ImageSetCallback() {
@Override
diff --git a/samples/flickr/src/com/bumptech/flickr/FlickrPhotoList.java b/samples/flickr/src/com/bumptech/flickr/FlickrPhotoList.java
index 5d1f4ebd..36827b87 100644
--- a/samples/flickr/src/com/bumptech/flickr/FlickrPhotoList.java
+++ b/samples/flickr/src/com/bumptech/flickr/FlickrPhotoList.java
@@ -9,6 +9,7 @@ import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockFragment;
+import com.bumptech.flickr.api.Downloader;
import com.bumptech.flickr.api.Photo;
import com.bumptech.glide.Glide;
@@ -102,7 +103,7 @@ public class FlickrPhotoList extends SherlockFragment implements PhotoViewer {
Glide.load(current)
.into(viewHolder.imageView)
- .with(new DirectFlickrStreamLoader())
+ .with(new FlickrModelLoader(Downloader.get(getActivity()).getQueue()))
.centerCrop()
.animate(R.anim.fade_in)
.begin();
diff --git a/samples/flickr/src/com/bumptech/flickr/FlickrStreamLoader.java b/samples/flickr/src/com/bumptech/flickr/FlickrStreamLoader.java
deleted file mode 100644
index 9785dd5e..00000000
--- a/samples/flickr/src/com/bumptech/flickr/FlickrStreamLoader.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.bumptech.flickr;
-
-import com.android.volley.Request;
-import com.bumptech.flickr.api.Api;
-import com.bumptech.flickr.api.Photo;
-import com.bumptech.glide.loader.model.BaseModelStreamLoader;
-import com.bumptech.glide.loader.opener.FileInputStreamOpener;
-
-import java.io.File;
-
-/**
- * An implementation of a ModelStreamLoader that uses a separate class to download images to disk and then uses
- * the path where the image is downloaded to create an input stream opener. Demonstrates one way of integrating this
- * library with existing apis for download or otherwise retrieving images
- *
- */
-public class FlickrStreamLoader extends BaseModelStreamLoader<Photo>{
- private final Api flickrApi;
- private final File cacheDir;
- private Request current = null;
-
- public FlickrStreamLoader(Api flickrApi, File cacheDir) {
- this.flickrApi = flickrApi;
- this.cacheDir = cacheDir;
- }
-
- @Override
- protected void doFetchModelStreams(final Photo model, int width, int height, final ModelStreamReadyCallback cb) {
- clear();
- current = flickrApi.downloadPhoto(model, cacheDir, new Api.PhotoCallback() {
- @Override
- public void onDownloadComplete(String path) {
- cb.onStreamReady(model.id, new FileInputStreamOpener(path));
- }
- });
- }
-
- @Override
- public void clear() {
- if (current != null) {
- current.cancel();
- current = null;
- }
- }
-}
diff --git a/samples/flickr/src/com/bumptech/flickr/VolleyStreamLoader.java b/samples/flickr/src/com/bumptech/flickr/VolleyStreamLoader.java
new file mode 100644
index 00000000..aa20a613
--- /dev/null
+++ b/samples/flickr/src/com/bumptech/flickr/VolleyStreamLoader.java
@@ -0,0 +1,57 @@
+package com.bumptech.flickr;
+
+import com.android.volley.NetworkResponse;
+import com.android.volley.Request;
+import com.android.volley.RequestQueue;
+import com.android.volley.Response;
+import com.android.volley.VolleyError;
+import com.bumptech.glide.loader.stream.StreamLoader;
+
+import java.io.ByteArrayInputStream;
+import java.net.URL;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: sam
+ * Date: 7/19/13
+ * Time: 8:51 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class VolleyStreamLoader implements StreamLoader {
+ private final RequestQueue requestQueue;
+ private final URL url;
+ private Request current = null;
+
+ public VolleyStreamLoader(RequestQueue requestQueue, URL url) {
+ this.requestQueue = requestQueue;
+ this.url = url;
+ }
+
+ @Override
+ public void loadStream(final StreamReadyCallback cb) {
+ current = requestQueue.add(new Request<ByteArrayInputStream>(Request.Method.GET, url.toString(), new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ cb.onException(error);
+ }
+ }) {
+ @Override
+ protected Response<ByteArrayInputStream> parseNetworkResponse(NetworkResponse response) {
+ return Response.success(new ByteArrayInputStream(response.data), getCacheEntry());
+ }
+
+ @Override
+ protected void deliverResponse(ByteArrayInputStream response) {
+ cb.onStreamReady(response);
+ }
+ });
+ }
+
+ @Override
+ public void cancel() {
+ if (current != null) {
+ current.cancel();
+ current = null;
+ }
+ }
+}