diff options
author | Bobby Georgescu <georgescu@google.com> | 2013-03-06 19:54:37 -0800 |
---|---|---|
committer | Bobby Georgescu <georgescu@google.com> | 2013-03-07 11:20:00 -0800 |
commit | 8c12028e716792bb083dc57dda58b8be26a16ef7 (patch) | |
tree | da7d78745cf56702037fa5b06ae4e10a4423d41b /src/com/android/photos/shims | |
parent | 2ff8d80018c27abdd475a7610ab3d684c4b33acb (diff) | |
download | android_packages_apps_Gallery2-8c12028e716792bb083dc57dda58b8be26a16ef7.tar.gz android_packages_apps_Gallery2-8c12028e716792bb083dc57dda58b8be26a16ef7.tar.bz2 android_packages_apps_Gallery2-8c12028e716792bb083dc57dda58b8be26a16ef7.zip |
Album set shim
Change-Id: I12257ea09b7b5bc4b1d5ef638e685c66df86538a
Diffstat (limited to 'src/com/android/photos/shims')
-rw-r--r-- | src/com/android/photos/shims/MediaSetLoader.java | 62 |
1 files changed, 58 insertions, 4 deletions
diff --git a/src/com/android/photos/shims/MediaSetLoader.java b/src/com/android/photos/shims/MediaSetLoader.java index 353fd4e1a..7a6fcb865 100644 --- a/src/com/android/photos/shims/MediaSetLoader.java +++ b/src/com/android/photos/shims/MediaSetLoader.java @@ -18,17 +18,32 @@ package com.android.photos.shims; import android.content.AsyncTaskLoader; import android.content.Context; +import android.database.Cursor; +import android.database.MatrixCursor; +import android.graphics.drawable.Drawable; +import android.provider.MediaStore.Files.FileColumns; import com.android.gallery3d.data.ContentListener; import com.android.gallery3d.data.DataManager; +import com.android.gallery3d.data.MediaDetails; +import com.android.gallery3d.data.MediaItem; import com.android.gallery3d.data.MediaSet; +import com.android.gallery3d.data.MediaSet.ItemConsumer; import com.android.gallery3d.data.MediaSet.SyncListener; import com.android.gallery3d.util.Future; +import com.android.photos.data.AlbumSetLoader; +import com.android.photos.data.PhotoSetLoader; +import com.android.photos.drawables.DrawableFactory; + +import java.text.DateFormat; +import java.text.ParseException; +import java.util.ArrayList; /** - * Proof of concept, don't use + * Returns all MediaSets in a MediaSet, wrapping them in a cursor to appear + * like a AlbumSetLoader. */ -public class MediaSetLoader extends AsyncTaskLoader<MediaSet> { +public class MediaSetLoader extends AsyncTaskLoader<Cursor> implements DrawableFactory<Cursor>{ private static final SyncListener sNullListener = new SyncListener() { @Override @@ -45,6 +60,15 @@ public class MediaSetLoader extends AsyncTaskLoader<MediaSet> { } }; + private ArrayList<MediaItem> mCoverItems = new ArrayList<MediaItem>(); + + public MediaSetLoader(Context context) { + super(context); + DataManager dm = DataManager.from(context); + String path = dm.getTopSetPath(DataManager.INCLUDE_ALL); + mMediaSet = dm.getMediaSet(path); + } + public MediaSetLoader(Context context, String path) { super(context); mMediaSet = DataManager.from(getContext()).getMediaSet(path); @@ -81,9 +105,39 @@ public class MediaSetLoader extends AsyncTaskLoader<MediaSet> { } @Override - public MediaSet loadInBackground() { + public Cursor loadInBackground() { mMediaSet.loadIfDirty(); - return mMediaSet; + final MatrixCursor cursor = new MatrixCursor(AlbumSetLoader.PROJECTION); + final Object[] row = new Object[AlbumSetLoader.PROJECTION.length]; + int count = mMediaSet.getSubMediaSetCount(); + for (int i = 0; i < count; i++) { + MediaSet m = mMediaSet.getSubMediaSet(i); + m.loadIfDirty(); + row[AlbumSetLoader.INDEX_ID] = i; + row[AlbumSetLoader.INDEX_TITLE] = m.getName(); + row[AlbumSetLoader.INDEX_COUNT] = m.getMediaItemCount(); + MediaItem coverItem = m.getCoverMediaItem(); + row[AlbumSetLoader.INDEX_TIMESTAMP] = coverItem.getDateInMs(); + mCoverItems.add(coverItem); + cursor.addRow(row); + } + return cursor; } + @Override + public Drawable drawableForItem(Cursor item, Drawable recycle) { + BitmapJobDrawable drawable = null; + if (recycle == null || !(recycle instanceof BitmapJobDrawable)) { + drawable = new BitmapJobDrawable(); + } else { + drawable = (BitmapJobDrawable) recycle; + } + int index = item.getInt(AlbumSetLoader.INDEX_ID); + drawable.setMediaItem(mCoverItems.get(index)); + return drawable; + } + + public static int getThumbnailSize() { + return MediaItem.getTargetSize(MediaItem.TYPE_MICROTHUMBNAIL); + } } |