diff options
author | Danesh M <daneshm90@gmail.com> | 2015-04-22 09:27:38 -0700 |
---|---|---|
committer | Michael Bestas <mikeioannina@gmail.com> | 2015-04-23 01:22:10 +0000 |
commit | 5df27c08028896bf90f548ff5b81d1b682325f86 (patch) | |
tree | ed94eab27b4e659e512ea711ab5e8de7970b0f3f | |
parent | f23375743411d20f76ee5b2a772838f3f230644a (diff) | |
download | packages_apps_ContactsCommon-5df27c08028896bf90f548ff5b81d1b682325f86.tar.gz packages_apps_ContactsCommon-5df27c08028896bf90f548ff5b81d1b682325f86.tar.bz2 packages_apps_ContactsCommon-5df27c08028896bf90f548ff5b81d1b682325f86.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
(cherry picked from commit ce096acee71b168f630a684d61294fb733472bd1)
-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 c7bee4a9..c260eea7 100644 --- a/src/com/android/contacts/common/ContactPhotoManager.java +++ b/src/com/android/contacts/common/ContactPhotoManager.java @@ -858,7 +858,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)); } } @@ -878,7 +878,7 @@ class ContactPhotoManagerImpl extends ContactPhotoManager implements Callback { darkTheme, isCircular, defaultProvider); } else { loadPhotoByIdOrUri(view, Request.createFromUri(photoUri, requestedExtent, - darkTheme, isCircular, defaultProvider)); + darkTheme, isCircular, defaultProvider, defaultImageRequest)); } } } @@ -1690,32 +1690,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; @@ -1781,25 +1796,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); } } |