OSDN Git Service

Show stitched panorama in secure album.
authorWu-cheng Li <wuchengli@google.com>
Sun, 7 Oct 2012 13:43:12 +0000 (21:43 +0800)
committerWu-cheng Li <wuchengli@google.com>
Sun, 7 Oct 2012 15:25:06 +0000 (23:25 +0800)
bug:7285105
Change-Id: I36801d4e5b19cceb10600d41a3a3c78244c5ee4a

src/com/android/gallery3d/app/StitchingChangeListener.java
src/com/android/gallery3d/data/SecureAlbum.java

index 901f379..980f145 100644 (file)
 
 package com.android.gallery3d.app;
 
+import android.net.Uri;
 
 public interface StitchingChangeListener {
-    public void onFileAdded(String filePath);
+    public void onStitchingQueued(String filePath);
 
-    public void onFileRemoved(String filePath);
+    public void onStitchingResult(String filePath, Uri uri);
 
-    public void onProgressChanged(String filePath, int progress);
+    public void onStitchingProgress(String filePath, int progress);
 }
index b841df7..382de5b 100644 (file)
@@ -24,12 +24,13 @@ import android.provider.MediaStore.Images;
 import android.provider.MediaStore.Video;
 
 import com.android.gallery3d.app.GalleryApp;
+import com.android.gallery3d.app.StitchingChangeListener;
 import com.android.gallery3d.util.MediaSetUtils;
 
 import java.util.ArrayList;
 
 // This class lists all media items added by the client.
-public class SecureAlbum extends MediaSet {
+public class SecureAlbum extends MediaSet implements StitchingChangeListener {
     @SuppressWarnings("unused")
     private static final String TAG = "SecureAlbum";
     private static final String[] PROJECTION = {MediaColumns._ID};
@@ -42,6 +43,7 @@ public class SecureAlbum extends MediaSet {
     // The types of items in mAllItems. True is video and false is image.
     private ArrayList<Boolean> mAllItemTypes = new ArrayList<Boolean>();
     private ArrayList<Path> mExistingItems = new ArrayList<Path>();
+    private ArrayList<String> mStitchingFilePaths = new ArrayList<String>();
     private Context mContext;
     private DataManager mDataManager;
     private static final Uri[] mWatchUris =
@@ -60,6 +62,7 @@ public class SecureAlbum extends MediaSet {
         mUnlockItem = unlock;
         mShowUnlockItem = (!isCameraBucketEmpty(Images.Media.EXTERNAL_CONTENT_URI)
                 || !isCameraBucketEmpty(Video.Media.EXTERNAL_CONTENT_URI));
+        application.getStitchingProgressManager().addChangeListener(this);
     }
 
     public void addMediaItem(boolean isVideo, int id) {
@@ -178,4 +181,21 @@ public class SecureAlbum extends MediaSet {
     public boolean isLeafAlbum() {
         return true;
     }
+
+    @Override
+    public void onStitchingQueued(String filePath) {
+        mStitchingFilePaths.add(filePath);
+    }
+
+    @Override
+    public void onStitchingResult(String filePath, Uri uri) {
+        if (mStitchingFilePaths.remove(filePath)) {
+            int id = Integer.parseInt(uri.getLastPathSegment());
+            addMediaItem(false, id);
+        }
+    }
+
+    @Override
+    public void onStitchingProgress(String filePath, int progress) {
+    }
 }