diff options
author | Angus Kong <shkong@google.com> | 2013-05-31 16:30:32 -0700 |
---|---|---|
committer | Angus Kong <shkong@google.com> | 2013-05-31 17:01:24 -0700 |
commit | 885367cc5add241f6cb9ac243381400b497d630e (patch) | |
tree | 707b96d4eaf57ad25a9687c07328df6a24fcc121 /src/com/android/camera/data | |
parent | 5334fa3036425acf843072f32af72565b5547cf3 (diff) | |
download | android_packages_apps_Snap-885367cc5add241f6cb9ac243381400b497d630e.tar.gz android_packages_apps_Snap-885367cc5add241f6cb9ac243381400b497d630e.tar.bz2 android_packages_apps_Snap-885367cc5add241f6cb9ac243381400b497d630e.zip |
Add newly taken photos/videos to film strip.
Change-Id: I82d9e83d0a45f14036a194cf1ad5793b436357cd
Diffstat (limited to 'src/com/android/camera/data')
-rw-r--r-- | src/com/android/camera/data/CameraDataAdapter.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/com/android/camera/data/CameraDataAdapter.java b/src/com/android/camera/data/CameraDataAdapter.java index 1e5f1a8f0..6e2ff101b 100644 --- a/src/com/android/camera/data/CameraDataAdapter.java +++ b/src/com/android/camera/data/CameraDataAdapter.java @@ -20,6 +20,7 @@ import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.graphics.drawable.Drawable; +import android.net.Uri; import android.os.AsyncTask; import android.provider.MediaStore; import android.provider.MediaStore.Images; @@ -33,6 +34,7 @@ import com.android.camera.ui.FilmStripView.ImageData; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.List; /** @@ -124,6 +126,44 @@ public class CameraDataAdapter implements FilmStripView.DataAdapter { mListener.onDataRemoved(dataID, d); } + private void insertData(LocalData data) { + if (mImages == null) { + mImages = new ArrayList<LocalData>(); + } + + // Since this function is mostly for adding the newest data, + // a simple linear search should yield the best performance over a + // binary search. + int pos = 0; + Comparator<LocalData> comp = new LocalData.NewestFirstComparator(); + for (; pos < mImages.size() + && comp.compare(data, mImages.get(pos)) > 0; pos++); + mImages.add(pos, data); + if (mListener != null) { + mListener.onDataInserted(pos, data); + } + } + + public void addNewVideo(ContentResolver cr, Uri uri) { + Cursor c = cr.query(uri, + LocalData.Video.QUERY_PROJECTION, + MediaStore.Images.Media.DATA + " like ? ", CAMERA_PATH, + LocalData.Video.QUERY_ORDER); + if (c != null && c.moveToFirst()) { + insertData(LocalData.Video.buildFromCursor(c)); + } + } + + public void addNewPhoto(ContentResolver cr, Uri uri) { + Cursor c = cr.query(uri, + LocalData.Photo.QUERY_PROJECTION, + MediaStore.Images.Media.DATA + " like ? ", CAMERA_PATH, + LocalData.Photo.QUERY_ORDER); + if (c != null && c.moveToFirst()) { + insertData(LocalData.Photo.buildFromCursor(c)); + } + } + private LocalData buildCameraImageData(int width, int height) { LocalData d = new CameraPreviewData(width, height); return d; |