diff options
-rw-r--r-- | TestCommon/src/com/android/contacts/common/test/mocks/MockContactPhotoManager.java | 5 | ||||
-rw-r--r-- | src/com/android/contacts/common/ContactPhotoManager.java | 36 |
2 files changed, 36 insertions, 5 deletions
diff --git a/TestCommon/src/com/android/contacts/common/test/mocks/MockContactPhotoManager.java b/TestCommon/src/com/android/contacts/common/test/mocks/MockContactPhotoManager.java index fce5cee9..af96b30c 100644 --- a/TestCommon/src/com/android/contacts/common/test/mocks/MockContactPhotoManager.java +++ b/TestCommon/src/com/android/contacts/common/test/mocks/MockContactPhotoManager.java @@ -51,6 +51,11 @@ public class MockContactPhotoManager extends ContactPhotoManager { } @Override + public void getBitmapForContact(long photoId, ImageView imgView, int widthHint, + PhotoFetcherCallback cb) { + } + + @Override public void removePhoto(ImageView view) { view.setImageDrawable(null); } diff --git a/src/com/android/contacts/common/ContactPhotoManager.java b/src/com/android/contacts/common/ContactPhotoManager.java index 547b5623..6fa20f69 100644 --- a/src/com/android/contacts/common/ContactPhotoManager.java +++ b/src/com/android/contacts/common/ContactPhotoManager.java @@ -543,6 +543,8 @@ public abstract class ContactPhotoManager implements ComponentCallbacks2 { public abstract void getBitmapForContact(Uri photoUri, ImageView imgView, int widthHint, PhotoFetcherCallback cb); + public abstract void getBitmapForContact(long photoId, ImageView imgView, int widthHint, + PhotoFetcherCallback cb); /** * Calls {@link #loadPhoto(ImageView, Uri, boolean, boolean, DefaultImageRequest, * DefaultImageProvider)} with {@link #DEFAULT_AVATAR} and with the assumption, that @@ -917,13 +919,22 @@ class ContactPhotoManagerImpl extends ContactPhotoManager implements Callback { // formulate the contact bitmap request Request request = Request.createBitmapOnly(photoUri, widthHint, cb); - // check bitmap cache - boolean done = decodeContactBitmapFromCache(request); + getBitmapForContact(imgView, request); + } - // if not in cache, put request in loading queue + @Override + public void getBitmapForContact(long photoId, ImageView imgView, int widthHint, + PhotoFetcherCallback cb) { + if (photoId <= 0) return; + Request request = Request.createBitmapOnly(photoId, widthHint, cb); + getBitmapForContact(imgView, request); + } + + private void getBitmapForContact(ImageView imgView, Request request) { + boolean done = decodeContactBitmapFromCache(request); + // if not in cache, put request into loading queue if (!done) { - Request loadRequest = Request.createBitmapOnly(photoUri, widthHint, cb); - mPendingRequests.put(imgView, loadRequest); + mPendingRequests.put(imgView, request); if (!mPaused) { requestLoading(); } @@ -1737,6 +1748,21 @@ class ContactPhotoManagerImpl extends ContactPhotoManager implements Callback { return request; } + public static Request createBitmapOnly(long photoId, int requestedExtent, + PhotoFetcherCallback cb) { + return createBitmapOnly(photoId, requestedExtent, cb, null); + } + + public static Request createBitmapOnly(long photoId, int requestedExtent, + PhotoFetcherCallback cb, DefaultImageRequest defaultImageRequest) { + Request request = new Request(photoId, null, requestedExtent, false, false, null, + defaultImageRequest); + request.setBitmapOnly(); + request.mCallback = cb; + + return request; + } + public boolean isBitmapOnly() { return mIsBitmapOnly; } |