summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/data/LocalData.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/data/LocalData.java')
-rw-r--r--src/com/android/camera/data/LocalData.java102
1 files changed, 95 insertions, 7 deletions
diff --git a/src/com/android/camera/data/LocalData.java b/src/com/android/camera/data/LocalData.java
index 9f9be8e80..9ebc9caa3 100644
--- a/src/com/android/camera/data/LocalData.java
+++ b/src/com/android/camera/data/LocalData.java
@@ -21,6 +21,7 @@ import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
+import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.media.MediaMetadataRetriever;
import android.os.AsyncTask;
@@ -32,6 +33,7 @@ import android.view.View;
import android.widget.ImageView;
import com.android.camera.ui.FilmStripView;
+import com.android.gallery3d.R;
import java.util.Comparator;
import java.util.Date;
@@ -39,7 +41,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);
@@ -123,19 +125,23 @@ abstract interface LocalData extends FilmStripView.ImageData {
return false;
}
- @Override
- public View getView(Context c,
+ protected ImageView getImageView(Context c,
int decodeWidth, int decodeHeight, Drawable placeHolder) {
ImageView v = new ImageView(c);
- v.setImageDrawable(placeHolder);
+ v.setBackground(placeHolder);
- v.setScaleType(ImageView.ScaleType.FIT_XY);
BitmapLoadTask task = getBitmapLoadTask(v, decodeWidth, decodeHeight);
task.execute();
return v;
}
@Override
+ public View getView(Context c,
+ int decodeWidth, int decodeHeight, Drawable placeHolder) {
+ return getImageView(c, decodeWidth, decodeHeight, placeHolder);
+ }
+
+ @Override
public void prepare() {
synchronized (mUsing) {
mUsing = true;
@@ -179,8 +185,9 @@ abstract interface LocalData extends FilmStripView.ImageData {
Log.e(TAG, "Failed decoding bitmap for file:" + path);
return;
}
- mView.setScaleType(ImageView.ScaleType.FIT_XY);
- mView.setImageBitmap(bitmap);
+ BitmapDrawable d = new BitmapDrawable(bitmap);
+ d.setGravity(android.view.Gravity.FILL);
+ mView.setBackground(d);
}
}
}
@@ -403,6 +410,15 @@ abstract interface LocalData extends FilmStripView.ImageData {
}
@Override
+ public View getView(Context c,
+ int decodeWidth, int decodeHeight, Drawable placeHolder) {
+ ImageView v = getImageView(c, decodeWidth, decodeHeight, placeHolder);
+ v.setImageResource(R.drawable.ic_control_play);
+ v.setScaleType(ImageView.ScaleType.CENTER);
+ return v;
+ }
+
+ @Override
protected BitmapLoadTask getBitmapLoadTask(
ImageView v, int decodeWidth, int decodeHeight) {
return new VideoBitmapLoadTask(v);
@@ -438,5 +454,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.
+ }
+ }
}