diff options
author | Danesh M <daneshm90@gmail.com> | 2015-04-22 09:27:38 -0700 |
---|---|---|
committer | Rohit Yengisetty <rohit@cyngn.com> | 2015-04-22 09:33:27 -0700 |
commit | ce096acee71b168f630a684d61294fb733472bd1 (patch) | |
tree | fa776154c174f5912970b1e5affae9b0664bc866 | |
parent | ad0dff5a4331a1625c51c8b9cbcdbfbe5364dae2 (diff) | |
download | android_packages_apps_ContactsCommon-ce096acee71b168f630a684d61294fb733472bd1.tar.gz android_packages_apps_ContactsCommon-ce096acee71b168f630a684d61294fb733472bd1.tar.bz2 android_packages_apps_ContactsCommon-ce096acee71b168f630a684d61294fb733472bd1.zip |
ContactsCommon : Only use default requests if one is not provided
This solves the issue where the provider doesn't end up receiving the
request it initially created and passed along.
Change-Id: Ie39d66a87eb3a1088a4eb62e11084e1123f707f5
-rw-r--r-- | src/com/android/contacts/common/ContactPhotoManager.java | 60 |
1 files changed, 39 insertions, 21 deletions
diff --git a/src/com/android/contacts/common/ContactPhotoManager.java b/src/com/android/contacts/common/ContactPhotoManager.java index afa715e5..a19ef2de 100644 --- a/src/com/android/contacts/common/ContactPhotoManager.java +++ b/src/com/android/contacts/common/ContactPhotoManager.java @@ -852,7 +852,7 @@ class ContactPhotoManagerImpl extends ContactPhotoManager implements Callback { } else { if (DEBUG) Log.d(TAG, "loadPhoto request: " + photoId); loadPhotoByIdOrUri(view, Request.createFromThumbnailId(photoId, darkTheme, isCircular, - defaultProvider)); + defaultProvider, defaultImageRequest)); } } @@ -872,7 +872,7 @@ class ContactPhotoManagerImpl extends ContactPhotoManager implements Callback { darkTheme, isCircular, defaultProvider); } else { loadPhotoByIdOrUri(view, Request.createFromUri(photoUri, requestedExtent, - darkTheme, isCircular, defaultProvider)); + darkTheme, isCircular, defaultProvider, defaultImageRequest)); } } } @@ -1684,32 +1684,47 @@ class ContactPhotoManagerImpl extends ContactPhotoManager implements Callback { // params for bitmap requests private boolean mIsBitmapOnly; private PhotoFetcherCallback mCallback; - + private DefaultImageRequest mDefaultImageRequest; private Request(long id, Uri uri, int requestedExtent, boolean darkTheme, - boolean isCircular, DefaultImageProvider defaultProvider) { + boolean isCircular, DefaultImageProvider defaultProvider, DefaultImageRequest defaultImageRequest) { mId = id; mUri = uri; mDarkTheme = darkTheme; mIsCircular = isCircular; mRequestedExtent = requestedExtent; mDefaultProvider = defaultProvider; + mDefaultImageRequest = defaultImageRequest; } public static Request createFromThumbnailId(long id, boolean darkTheme, boolean isCircular, - DefaultImageProvider defaultProvider) { - return new Request(id, null /* no URI */, -1, darkTheme, isCircular, defaultProvider); + DefaultImageProvider defaultProvider, DefaultImageRequest defaultImageRequest) { + return new Request(id, null /* no URI */, -1, darkTheme, isCircular, defaultProvider, + defaultImageRequest); } public static Request createFromUri(Uri uri, int requestedExtent, boolean darkTheme, boolean isCircular, DefaultImageProvider defaultProvider) { + return createFromUri(uri, requestedExtent, darkTheme, isCircular, + defaultProvider, null); + } + + public static Request createFromUri(Uri uri, int requestedExtent, boolean darkTheme, + boolean isCircular, DefaultImageProvider defaultProvider, + DefaultImageRequest defaultImageRequest) { return new Request(0 /* no ID */, uri, requestedExtent, darkTheme, isCircular, - defaultProvider); + defaultProvider, defaultImageRequest); + } + + public static Request createBitmapOnly(Uri uri, int requestedExtent, + PhotoFetcherCallback cb) { + return createBitmapOnly(uri, requestedExtent, cb, null); } public static Request createBitmapOnly(Uri uri, int requestedExtent, - PhotoFetcherCallback cb) { - Request request = new Request(0, uri, requestedExtent, false, false, null); + PhotoFetcherCallback cb, DefaultImageRequest defaultImageRequest) { + Request request = new Request(0, uri, requestedExtent, false, false, null, + defaultImageRequest); request.setBitmapOnly(); request.mCallback = cb; @@ -1775,25 +1790,28 @@ class ContactPhotoManagerImpl extends ContactPhotoManager implements Callback { } /** - * Applies the default image to the current view. If the request is URI-based, looks for - * the contact type encoded fragment to determine if this is a request for a business photo, - * in which case we will load the default business photo. + * Applies the default image to the current view. The original {@link DefaultImageRequest}, + * if present, will be passed along to the {@link DefaultImageProvider}. Otherwise, a + * default {@link DefaultImageRequest} is used based on the uri type. * * @param view The current image view to apply the image to. * @param isCircular Whether the image is circular or not. */ public void applyDefaultImage(ImageView view, boolean isCircular) { - final DefaultImageRequest request; + DefaultImageRequest request = mDefaultImageRequest; - if (isCircular) { - request = ContactPhotoManager.isBusinessContactUri(mUri) - ? DefaultImageRequest.EMPTY_CIRCULAR_BUSINESS_IMAGE_REQUEST - : DefaultImageRequest.EMPTY_CIRCULAR_DEFAULT_IMAGE_REQUEST; - } else { - request = ContactPhotoManager.isBusinessContactUri(mUri) - ? DefaultImageRequest.EMPTY_DEFAULT_BUSINESS_IMAGE_REQUEST - : DefaultImageRequest.EMPTY_DEFAULT_IMAGE_REQUEST; + if (request == null) { + if (isCircular) { + request = ContactPhotoManager.isBusinessContactUri(mUri) + ? DefaultImageRequest.EMPTY_CIRCULAR_BUSINESS_IMAGE_REQUEST + : DefaultImageRequest.EMPTY_CIRCULAR_DEFAULT_IMAGE_REQUEST; + } else { + request = ContactPhotoManager.isBusinessContactUri(mUri) + ? DefaultImageRequest.EMPTY_DEFAULT_BUSINESS_IMAGE_REQUEST + : DefaultImageRequest.EMPTY_DEFAULT_IMAGE_REQUEST; + } } + mDefaultProvider.applyDefaultImage(view, null, mRequestedExtent, mDarkTheme, request); } } |