summaryrefslogtreecommitdiffstats
path: root/src/com/android/photos/PhotoSetFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/photos/PhotoSetFragment.java')
-rw-r--r--src/com/android/photos/PhotoSetFragment.java61
1 files changed, 51 insertions, 10 deletions
diff --git a/src/com/android/photos/PhotoSetFragment.java b/src/com/android/photos/PhotoSetFragment.java
index e9bfce56f..a3406bea4 100644
--- a/src/com/android/photos/PhotoSetFragment.java
+++ b/src/com/android/photos/PhotoSetFragment.java
@@ -18,40 +18,41 @@ package com.android.photos;
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
+import android.content.Context;
import android.content.Loader;
import android.database.Cursor;
import android.os.Bundle;
-import android.provider.MediaStore.Files.FileColumns;
+import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
-import android.widget.ListView;
-import android.widget.SimpleCursorAdapter;
+import android.widget.ImageView;
+import android.widget.ImageView.ScaleType;
import com.android.gallery3d.R;
import com.android.photos.data.PhotoSetLoader;
+import com.android.photos.drawables.AutoThumbnailDrawable;
+import com.android.photos.views.GalleryThumbnailView;
+import com.android.photos.views.GalleryThumbnailView.GalleryThumbnailAdapter;
public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor> {
private static final int LOADER_PHOTOSET = 1;
- private ListView mPhotoSetView;
+ private GalleryThumbnailView mPhotoSetView;
private View mEmptyView;
- private CursorAdapter mAdapter;
+ private ThumbnailAdapter mAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.photo_set, container, false);
- mPhotoSetView = (ListView) root.findViewById(android.R.id.list);
+ mPhotoSetView = (GalleryThumbnailView) root.findViewById(android.R.id.list);
mEmptyView = root.findViewById(android.R.id.empty);
mEmptyView.setVisibility(View.GONE);
- mAdapter = new SimpleCursorAdapter(getActivity(),
- android.R.layout.simple_list_item_1, null,
- new String[] { FileColumns.DATA },
- new int[] { android.R.id.text1 }, 0);
+ mAdapter = new ThumbnailAdapter(getActivity());
mPhotoSetView.setAdapter(mAdapter);
getLoaderManager().initLoader(LOADER_PHOTOSET, null, this);
updateEmptyStatus();
@@ -79,4 +80,44 @@ public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
+
+ private static class ThumbnailAdapter extends CursorAdapter implements GalleryThumbnailAdapter {
+
+ public ThumbnailAdapter(Context context) {
+ super(context, null, false);
+ }
+
+ @Override
+ public void bindView(View view, Context context, Cursor cursor) {
+ ImageView iv = (ImageView) view;
+ AutoThumbnailDrawable drawable = (AutoThumbnailDrawable) iv.getDrawable();
+ int width = cursor.getInt(PhotoSetLoader.INDEX_WIDTH);
+ int height = cursor.getInt(PhotoSetLoader.INDEX_HEIGHT);
+ String path = cursor.getString(PhotoSetLoader.INDEX_DATA);
+ drawable.setImage(path, width, height);
+ }
+
+ @Override
+ public View newView(Context context, Cursor cursor, ViewGroup parent) {
+ ImageView iv = new ImageView(context);
+ AutoThumbnailDrawable drawable = new AutoThumbnailDrawable();
+ iv.setImageDrawable(drawable);
+ int padding = (int) Math.ceil(2 * context.getResources().getDisplayMetrics().density);
+ iv.setPadding(padding, padding, padding, padding);
+ return iv;
+ }
+
+ @Override
+ public float getIntrinsicAspectRatio(int position) {
+ Cursor cursor = getItem(position);
+ float width = cursor.getInt(PhotoSetLoader.INDEX_WIDTH);
+ float height = cursor.getInt(PhotoSetLoader.INDEX_HEIGHT);
+ return width / height;
+ }
+
+ @Override
+ public Cursor getItem(int position) {
+ return (Cursor) super.getItem(position);
+ }
+ }
}