diff options
author | Angus Kong <shkong@google.com> | 2013-06-03 11:10:11 -0700 |
---|---|---|
committer | Angus Kong <shkong@google.com> | 2013-06-03 12:00:56 -0700 |
commit | a06b4e2f2664bdd0b966ed3fb24e560cd9be7124 (patch) | |
tree | 1f63abaf521ae6ab0c2596d647a588080bcfbe4a /src/com/android/camera/data | |
parent | 4c400b2f79ff7b4b4f11f5b45326316ac7af075c (diff) | |
download | android_packages_apps_Snap-a06b4e2f2664bdd0b966ed3fb24e560cd9be7124.tar.gz android_packages_apps_Snap-a06b4e2f2664bdd0b966ed3fb24e560cd9be7124.tar.bz2 android_packages_apps_Snap-a06b4e2f2664bdd0b966ed3fb24e560cd9be7124.zip |
Add secure camera support.
Change-Id: I672d76cb4de37c46394a5e8ee2899cf571158a2c
Diffstat (limited to 'src/com/android/camera/data')
-rw-r--r-- | src/com/android/camera/data/CameraDataAdapter.java | 88 | ||||
-rw-r--r-- | src/com/android/camera/data/LocalData.java | 74 |
2 files changed, 123 insertions, 39 deletions
diff --git a/src/com/android/camera/data/CameraDataAdapter.java b/src/com/android/camera/data/CameraDataAdapter.java index 6e2ff101b..32b3afecc 100644 --- a/src/com/android/camera/data/CameraDataAdapter.java +++ b/src/com/android/camera/data/CameraDataAdapter.java @@ -164,6 +164,55 @@ public class CameraDataAdapter implements FilmStripView.DataAdapter { } } + // Update all the data but keep the camera data if already set. + private void replaceData(List<LocalData> list) { + boolean changed = (list != mImages); + LocalData cameraData = null; + if (mImages != null && mImages.size() > 0) { + cameraData = mImages.get(0); + if (cameraData.getType() != ImageData.TYPE_CAMERA_PREVIEW) { + cameraData = null; + } + } + + mImages = list; + if (cameraData != null) { + // camera view exists, so we make sure at least 1 data is in the list. + if (mImages == null) { + mImages = new ArrayList<LocalData>(); + } + mImages.add(0, cameraData); + if (mListener != null) { + // Only the camera data is not changed, everything else is changed. + mListener.onDataUpdated(new UpdateReporter() { + @Override + public boolean isDataRemoved(int id) { + return false; + } + + @Override + public boolean isDataUpdated(int id) { + if (id == 0) return false; + return true; + } + }); + } + } else { + // both might be null. + if (changed) { + mListener.onDataLoaded(); + } + } + } + + public void flush() { + replaceData(null); + } + + public void addLocalData(LocalData data) { + insertData(data); + } + private LocalData buildCameraImageData(int width, int height) { LocalData d = new CameraPreviewData(width, height); return d; @@ -277,43 +326,7 @@ public class CameraDataAdapter implements FilmStripView.DataAdapter { @Override protected void onPostExecute(List<LocalData> l) { - boolean changed = (l != mImages); - LocalData cameraData = null; - if (mImages != null && mImages.size() > 0) { - cameraData = mImages.get(0); - if (cameraData.getType() != ImageData.TYPE_CAMERA_PREVIEW) { - cameraData = null; - } - } - - mImages = l; - if (cameraData != null) { - // camera view exists, so we make sure at least 1 data is in the list. - if (mImages == null) { - mImages = new ArrayList<LocalData>(); - } - mImages.add(0, cameraData); - if (mListener != null) { - // Only the camera data is not changed, everything else is changed. - mListener.onDataUpdated(new UpdateReporter() { - @Override - public boolean isDataRemoved(int id) { - return false; - } - - @Override - public boolean isDataUpdated(int id) { - if (id == 0) return false; - return true; - } - }); - } - } else { - // both might be null. - if (changed) { - mListener.onDataLoaded(); - } - } + replaceData(l); } } @@ -378,5 +391,4 @@ public class CameraDataAdapter implements FilmStripView.DataAdapter { // do nothing. } } - } diff --git a/src/com/android/camera/data/LocalData.java b/src/com/android/camera/data/LocalData.java index 9f9be8e80..f81c9e535 100644 --- a/src/com/android/camera/data/LocalData.java +++ b/src/com/android/camera/data/LocalData.java @@ -39,7 +39,7 @@ import java.util.Date; /* An abstract interface that represents the local media data. Also implements * Comparable interface so we can sort in DataAdapter. */ -abstract interface LocalData extends FilmStripView.ImageData { +public abstract interface LocalData extends FilmStripView.ImageData { static final String TAG = "LocalData"; abstract View getView(Context c, int width, int height, Drawable placeHolder); @@ -438,5 +438,77 @@ abstract interface LocalData extends FilmStripView.ImageData { } } } + + /* + * A LocalData that does nothing but only shows a view. + */ + public static class LocalViewData implements LocalData { + private int mWidth; + private int mHeight; + View mView; + private long mDateTaken; + private long mDateModified; + + public LocalViewData(View v, + int width, int height, + int dateTaken, int dateModified) { + mView = v; + mWidth = width; + mHeight = height; + mDateTaken = dateTaken; + mDateModified = dateModified; + } + + @Override + public long getDateTaken() { + return mDateTaken; + } + + @Override + public long getDateModified() { + return mDateModified; + } + + @Override + public String getTitle() { + return ""; + } + + @Override + public int getWidth() { + return mWidth; + } + + @Override + public int getHeight() { + return mHeight; + } + + @Override + public int getType() { + return FilmStripView.ImageData.TYPE_PHOTO; + } + + @Override + public boolean isActionSupported(int action) { + if (action == FilmStripView.ImageData.ACTION_PLAY) return true; + return false; + } + + @Override + public View getView(Context c, int width, int height, Drawable placeHolder) { + return mView; + } + + @Override + public void prepare() { + // do nothing. + } + + @Override + public void recycle() { + // do nothing. + } + } } |