Move isImage method to BitmapUtils class
[pub/Android/ownCloud.git] / src / com / owncloud / android / datamodel / ThumbnailsCacheManager.java
index 41a0d8b..bf62a23 100644 (file)
@@ -29,8 +29,10 @@ import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.Bitmap.CompressFormat;
 import android.graphics.BitmapFactory;
+import android.graphics.Matrix;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
+import android.media.ExifInterface;
 import android.media.ThumbnailUtils;
 import android.net.Uri;
 import android.os.AsyncTask;
@@ -188,7 +190,7 @@ public class ThumbnailsCacheManager {
     public static ThumbnailLocalGenerationTask getBitmapLocalWorkerTask(ImageView imageView) {
         if (imageView != null) {
             final Drawable drawable = imageView.getDrawable();
-            if (drawable instanceof AsyncDrawable) {
+            if (drawable instanceof AsyncLocalDrawable) {
                 final AsyncLocalDrawable asyncDrawable = (AsyncLocalDrawable) drawable;
                 return asyncDrawable.getBitmapWorkerTask();
             }
@@ -197,12 +199,12 @@ public class ThumbnailsCacheManager {
      }
     
     public static class ThumbnailLocalGenerationTask extends AsyncTask<File, Void, Bitmap> {
-        private final WeakReference<ImageView> mImageViewReference;
+        private final WeakReference<ImageView> mImageViewLocalReference;
         private File mFile;
         
         public ThumbnailLocalGenerationTask(ImageView imageView) {
          // Use a WeakReference to ensure the ImageView can be garbage collected
-            mImageViewReference = new WeakReference<ImageView>(imageView);
+            mImageViewLocalReference = new WeakReference<ImageView>(imageView);
         }
 
         // Decode image in background.
@@ -251,8 +253,8 @@ public class ThumbnailsCacheManager {
                 bitmap = null;
             }
 
-            if (mImageViewReference != null && bitmap != null) {
-                final ImageView imageView = mImageViewReference.get();
+            if (mImageViewLocalReference != null && bitmap != null) {
+                final ImageView imageView = mImageViewLocalReference.get();
                 final ThumbnailLocalGenerationTask bitmapWorkerTask = getBitmapLocalWorkerTask(imageView);
                 if (this == bitmapWorkerTask && imageView != null) {
                     if (imageView.getTag().equals(mFile.hashCode())) {
@@ -312,6 +314,9 @@ public class ThumbnailsCacheManager {
                         
                         if (bitmap != null) {
                             thumbnail = ThumbnailUtils.extractThumbnail(bitmap, px, px);
+                            
+                            // Rotate image, obeying exif tag
+                            thumbnail = BitmapUtils.rotateImage(thumbnail, mFile.getStoragePath());
     
                             // Add thumbnail to cache
                             addBitmapToCache(imageKey, thumbnail);
@@ -401,16 +406,16 @@ public class ThumbnailsCacheManager {
     }
     
     public static class AsyncLocalDrawable extends BitmapDrawable {
-        private final WeakReference<ThumbnailLocalGenerationTask> bitmapWorkerTaskReference;
+        private final WeakReference<ThumbnailLocalGenerationTask> bitmapWorkerLocalTaskReference;
 
         public AsyncLocalDrawable(Resources res, Bitmap bitmap, ThumbnailLocalGenerationTask bitmapWorkerTask) {
             super(res, bitmap);
-            bitmapWorkerTaskReference =
+            bitmapWorkerLocalTaskReference =
                 new WeakReference<ThumbnailLocalGenerationTask>(bitmapWorkerTask);
         }
 
         public ThumbnailLocalGenerationTask getBitmapWorkerTask() {
-            return bitmapWorkerTaskReference.get();
+            return bitmapWorkerLocalTaskReference.get();
         }
     }
 
@@ -427,5 +432,5 @@ public class ThumbnailsCacheManager {
             mThumbnailsDiskCacheLock.notifyAll(); // Wake any waiting threads
         }
     }
-
+    
 }