summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/data
diff options
context:
space:
mode:
authorAngus Kong <shkong@google.com>2013-05-31 16:30:32 -0700
committerAngus Kong <shkong@google.com>2013-05-31 17:01:24 -0700
commit885367cc5add241f6cb9ac243381400b497d630e (patch)
tree707b96d4eaf57ad25a9687c07328df6a24fcc121 /src/com/android/camera/data
parent5334fa3036425acf843072f32af72565b5547cf3 (diff)
downloadandroid_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.java40
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;