OSDN Git Service

Update thumbnail if a picture is deleted in background.
authorChih-Chung Chang <chihchung@google.com>
Tue, 26 Jun 2012 11:12:09 +0000 (19:12 +0800)
committerChih-Chung Chang <chihchung@google.com>
Tue, 26 Jun 2012 11:59:05 +0000 (19:59 +0800)
Bug: 6712751
Change-Id: I17f56c9ff04441e51f28b3e3bec23b1ac308b70c

src/com/android/gallery3d/data/DataManager.java
src/com/android/gallery3d/data/LocalAlbum.java
src/com/android/gallery3d/data/LocalImage.java
src/com/android/gallery3d/data/LocalVideo.java

index 0eb6af5..8551327 100644 (file)
 
 package com.android.gallery3d.data;
 
+import android.content.Intent;
 import android.database.ContentObserver;
 import android.net.Uri;
 import android.os.Handler;
+import android.support.v4.content.LocalBroadcastManager;
 
 import com.android.gallery3d.app.GalleryApp;
 import com.android.gallery3d.common.Utils;
@@ -78,6 +80,9 @@ public class DataManager {
     private static final String TOP_LOCAL_VIDEO_SET_PATH =
             "/local/video";
 
+    private static final String ACTION_DELETE_PICTURE =
+            "com.android.gallery3d.action.DELETE_PICTURE";
+
     public static final Comparator<MediaItem> sDateTakenComparator =
             new DateTakenComparator();
 
@@ -305,6 +310,15 @@ public class DataManager {
         }
     }
 
+    // Sends a local broadcast if a local image or video is deleted. This is
+    // used to update the thumbnail shown in the camera app.
+    public void broadcastLocalDeletion() {
+        LocalBroadcastManager manager = LocalBroadcastManager.getInstance(
+                mApplication.getAndroidContext());
+        Intent intent = new Intent(ACTION_DELETE_PICTURE);
+        manager.sendBroadcast(intent);
+    }
+
     private static class NotifyBroker extends ContentObserver {
         private WeakHashMap<ChangeNotifier, Object> mNotifiers =
                 new WeakHashMap<ChangeNotifier, Object>();
index 117dbb6..f45eebf 100644 (file)
@@ -260,6 +260,7 @@ public class LocalAlbum extends MediaSet {
         GalleryUtils.assertNotInRenderThread();
         mResolver.delete(mBaseUri, mWhereClause,
                 new String[]{String.valueOf(mBucketId)});
+        mApplication.getDataManager().broadcastLocalDeletion();
     }
 
     @Override
index aa27c6f..c3095a0 100644 (file)
@@ -231,6 +231,7 @@ public class LocalImage extends LocalMediaItem {
         Uri baseUri = Images.Media.EXTERNAL_CONTENT_URI;
         mApplication.getContentResolver().delete(baseUri, "_id=?",
                 new String[]{String.valueOf(id)});
+        mApplication.getDataManager().broadcastLocalDeletion();
     }
 
     private static String getExifOrientation(int orientation) {
index 4e888a5..5ccc21b 100644 (file)
@@ -187,6 +187,7 @@ public class LocalVideo extends LocalMediaItem {
         Uri baseUri = Video.Media.EXTERNAL_CONTENT_URI;
         mApplication.getContentResolver().delete(baseUri, "_id=?",
                 new String[]{String.valueOf(id)});
+        mApplication.getDataManager().broadcastLocalDeletion();
     }
 
     @Override