Load image attachments from live conversations.

MessageAttachmentTile automatically downloads image attachment thumbnails when
missing.

PhotoViewFragment first loads thumbnail, then loads the full image. Shows and
hides the progressbar correctly.

Added ability for UiProvider to specify which rendition of an attachment to
download.

Bug: 7987412
Change-Id: I7aec4dd80e6fda1b7f4b5f25caffa69380d269d3
diff --git a/src/com/android/ex/photo/fragments/PhotoViewFragment.java b/src/com/android/ex/photo/fragments/PhotoViewFragment.java
index f263710..ae0ef11 100644
--- a/src/com/android/ex/photo/fragments/PhotoViewFragment.java
+++ b/src/com/android/ex/photo/fragments/PhotoViewFragment.java
@@ -276,48 +276,43 @@
 
         final int id = loader.getId();
         switch (id) {
+            case LOADER_ID_THUMBNAIL:
+                if (isPhotoBound()) {
+                    // There is need to do anything with the thumbnail image, as the full size
+                    // image is being shown.
+                    mProgressBarNeeded = false;
+                    mPhotoPreviewAndProgress.setVisibility(View.GONE);
+                    return;
+                }
+
+                if (data == null) {
+                    // no preview, show default
+                    mPhotoPreviewImage.setImageResource(R.drawable.default_image);
+                } else {
+                    // show preview
+                    mPhotoPreviewImage.setImageBitmap(data);
+                }
+                mPhotoPreviewImage.setVisibility(View.VISIBLE);
+                mPhotoPreviewImage.setScaleType(ImageView.ScaleType.CENTER);
+                enableImageTransforms(false);
+                mPhotoProgressBar.setIndeterminate(true);
+                mProgressBarNeeded = true;
+
+                Handler handler = new Handler();
+                handler.post(new Runnable() {
+                    @Override
+                    public void run() {
+                        getLoaderManager().initLoader(LOADER_ID_PHOTO, null,
+                            PhotoViewFragment.this);
+                    }
+                });
+                break;
             case LOADER_ID_PHOTO:
                 if (data != null) {
                     bindPhoto(data);
                     enableImageTransforms(true);
                     mPhotoPreviewAndProgress.setVisibility(View.GONE);
                     mProgressBarNeeded = false;
-                } else {
-                    // Received a null result for the full size image.  Instead attempt to load the
-                    // thumbnail
-                    Handler handler = new Handler();
-                    handler.post(new Runnable() {
-                        @Override
-                        public void run() {
-                            getLoaderManager().initLoader(LOADER_ID_THUMBNAIL, null,
-                                                          PhotoViewFragment.this);
-                        }
-                    });
-                }
-                break;
-            case LOADER_ID_THUMBNAIL:
-                mProgressBarNeeded = false;
-                if (isPhotoBound()) {
-                    // There is need to do anything with the thumbnail image, as the full size
-                    // image is being shown.
-                    mPhotoPreviewAndProgress.setVisibility(View.GONE);
-                    return;
-                } else if (data == null) {
-                    // no preview, show default
-                    mPhotoPreviewImage.setVisibility(View.VISIBLE);
-                    mPhotoPreviewImage.setImageResource(R.drawable.default_image);
-                    mPhotoPreviewImage.setScaleType(ImageView.ScaleType.CENTER);
-                } else {
-                    bindPhoto(data);
-                    enableImageTransforms(false);
-                    Handler handler = new Handler();
-                    handler.post(new Runnable() {
-                        @Override
-                        public void run() {
-                            getLoaderManager().initLoader(LOADER_ID_PHOTO, null,
-                                PhotoViewFragment.this);
-                        }
-                    });
                 }
                 break;
             default: