summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2013-03-08 01:34:24 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-03-08 01:34:24 +0000
commit7924bfe301b05c3c38b9b4c1ec9af541688facff (patch)
treeea6a4a11e0bfd26549f077b103da0f7b12e8c0a8
parent84931eeed7067c2607786fd3cd61b87d893d79f5 (diff)
parent6a8ded56f04fdac34bad34bc22f34df69228b9e6 (diff)
downloadandroid_packages_apps_Snap-7924bfe301b05c3c38b9b4c1ec9af541688facff.tar.gz
android_packages_apps_Snap-7924bfe301b05c3c38b9b4c1ec9af541688facff.tar.bz2
android_packages_apps_Snap-7924bfe301b05c3c38b9b4c1ec9af541688facff.zip
Merge "Fix stuff" into gb-ub-photos-bryce
-rw-r--r--src/com/android/photos/AlbumSetFragment.java7
-rw-r--r--src/com/android/photos/PhotoSetFragment.java7
-rw-r--r--src/com/android/photos/shims/BitmapJobDrawable.java11
-rw-r--r--src/com/android/photos/shims/MediaItemsLoader.java13
-rw-r--r--src/com/android/photos/shims/MediaSetLoader.java20
5 files changed, 37 insertions, 21 deletions
diff --git a/src/com/android/photos/AlbumSetFragment.java b/src/com/android/photos/AlbumSetFragment.java
index 3c51bbac3..6a3760779 100644
--- a/src/com/android/photos/AlbumSetFragment.java
+++ b/src/com/android/photos/AlbumSetFragment.java
@@ -54,13 +54,18 @@ public class AlbumSetFragment extends Fragment implements OnItemClickListener,
private static final int LOADER_ALBUMSET = 1;
@Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mAdapter = new AlbumSetCursorAdapter(getActivity());
+ }
+
+ @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.album_set, container, false);
mAlbumSetView = (GridView) root.findViewById(android.R.id.list);
mEmptyView = root.findViewById(android.R.id.empty);
mEmptyView.setVisibility(View.GONE);
- mAdapter = new AlbumSetCursorAdapter(getActivity());
mAlbumSetView.setAdapter(mAdapter);
mAlbumSetView.setOnItemClickListener(this);
getLoaderManager().initLoader(LOADER_ALBUMSET, null, this);
diff --git a/src/com/android/photos/PhotoSetFragment.java b/src/com/android/photos/PhotoSetFragment.java
index 1de8de5a7..5911ad0c8 100644
--- a/src/com/android/photos/PhotoSetFragment.java
+++ b/src/com/android/photos/PhotoSetFragment.java
@@ -47,6 +47,12 @@ public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor
private ThumbnailAdapter mAdapter;
@Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mAdapter = new ThumbnailAdapter(getActivity());
+ }
+
+ @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.photo_set, container, false);
@@ -55,7 +61,6 @@ public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor
mPhotoSetView.setColumnWidth(MediaItemsLoader.getThumbnailSize());
mEmptyView = root.findViewById(android.R.id.empty);
mEmptyView.setVisibility(View.GONE);
- mAdapter = new ThumbnailAdapter(getActivity());
mPhotoSetView.setAdapter(mAdapter);
getLoaderManager().initLoader(LOADER_PHOTOSET, null, this);
updateEmptyStatus();
diff --git a/src/com/android/photos/shims/BitmapJobDrawable.java b/src/com/android/photos/shims/BitmapJobDrawable.java
index 299becb07..e13e636bb 100644
--- a/src/com/android/photos/shims/BitmapJobDrawable.java
+++ b/src/com/android/photos/shims/BitmapJobDrawable.java
@@ -15,7 +15,6 @@ import com.android.gallery3d.util.Future;
import com.android.gallery3d.util.FutureListener;
import com.android.gallery3d.util.ThreadPool;
import com.android.photos.data.GalleryBitmapPool;
-import com.android.photos.drawables.AutoThumbnailDrawable;
public class BitmapJobDrawable extends Drawable implements Runnable {
@@ -30,6 +29,8 @@ public class BitmapJobDrawable extends Drawable implements Runnable {
}
public void setMediaItem(MediaItem item) {
+ if (mItem == item) return;
+
if (mLoader != null) {
mLoader.cancelLoad();
}
@@ -38,9 +39,11 @@ public class BitmapJobDrawable extends Drawable implements Runnable {
GalleryBitmapPool.getInstance().put(mBitmap);
mBitmap = null;
}
- // TODO: Figure out why ThumbnailLoader doesn't like to be re-used
- mLoader = new ThumbnailLoader(this);
- mLoader.startLoad();
+ if (mItem != null) {
+ // TODO: Figure out why ThumbnailLoader doesn't like to be re-used
+ mLoader = new ThumbnailLoader(this);
+ mLoader.startLoad();
+ }
invalidateSelf();
}
diff --git a/src/com/android/photos/shims/MediaItemsLoader.java b/src/com/android/photos/shims/MediaItemsLoader.java
index 886b3c3a1..2907eaf02 100644
--- a/src/com/android/photos/shims/MediaItemsLoader.java
+++ b/src/com/android/photos/shims/MediaItemsLoader.java
@@ -22,6 +22,7 @@ import android.database.Cursor;
import android.database.MatrixCursor;
import android.graphics.drawable.Drawable;
import android.provider.MediaStore.Files.FileColumns;
+import android.util.SparseArray;
import com.android.gallery3d.data.ContentListener;
import com.android.gallery3d.data.DataManager;
@@ -33,8 +34,6 @@ import com.android.gallery3d.util.Future;
import com.android.photos.data.PhotoSetLoader;
import com.android.photos.drawables.DrawableFactory;
-import java.util.ArrayList;
-
/**
* Returns all MediaItems in a MediaSet, wrapping them in a cursor to appear
* like a PhotoSetLoader
@@ -47,7 +46,7 @@ public class MediaItemsLoader extends AsyncTaskLoader<Cursor> implements Drawabl
}
};
- private MediaSet mMediaSet;
+ private final MediaSet mMediaSet;
private Future<Integer> mSyncTask = null;
private ContentListener mObserver = new ContentListener() {
@Override
@@ -55,7 +54,7 @@ public class MediaItemsLoader extends AsyncTaskLoader<Cursor> implements Drawabl
onContentChanged();
}
};
- private ArrayList<MediaItem> mMediaItems = new ArrayList<MediaItem>();
+ private SparseArray<MediaItem> mMediaItems;
public MediaItemsLoader(Context context) {
super(context);
@@ -104,6 +103,7 @@ public class MediaItemsLoader extends AsyncTaskLoader<Cursor> implements Drawabl
mMediaSet.loadIfDirty();
final MatrixCursor cursor = new MatrixCursor(PhotoSetLoader.PROJECTION);
final Object[] row = new Object[PhotoSetLoader.PROJECTION.length];
+ final SparseArray<MediaItem> mediaItems = new SparseArray<MediaItem>();
mMediaSet.enumerateTotalMediaItems(new ItemConsumer() {
@Override
public void consume(int index, MediaItem item) {
@@ -122,9 +122,12 @@ public class MediaItemsLoader extends AsyncTaskLoader<Cursor> implements Drawabl
}
row[PhotoSetLoader.INDEX_MEDIA_TYPE] = mappedMediaType;
cursor.addRow(row);
- mMediaItems.add(item);
+ mediaItems.append(index, item);
}
});
+ synchronized (mMediaSet) {
+ mMediaItems = mediaItems;
+ }
return cursor;
}
diff --git a/src/com/android/photos/shims/MediaSetLoader.java b/src/com/android/photos/shims/MediaSetLoader.java
index 7a6fcb865..87039c209 100644
--- a/src/com/android/photos/shims/MediaSetLoader.java
+++ b/src/com/android/photos/shims/MediaSetLoader.java
@@ -21,22 +21,16 @@ 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;
/**
@@ -51,7 +45,7 @@ public class MediaSetLoader extends AsyncTaskLoader<Cursor> implements DrawableF
}
};
- private MediaSet mMediaSet;
+ private final MediaSet mMediaSet;
private Future<Integer> mSyncTask = null;
private ContentListener mObserver = new ContentListener() {
@Override
@@ -60,7 +54,7 @@ public class MediaSetLoader extends AsyncTaskLoader<Cursor> implements DrawableF
}
};
- private ArrayList<MediaItem> mCoverItems = new ArrayList<MediaItem>();
+ private ArrayList<MediaItem> mCoverItems;
public MediaSetLoader(Context context) {
super(context);
@@ -110,6 +104,7 @@ public class MediaSetLoader extends AsyncTaskLoader<Cursor> implements DrawableF
final MatrixCursor cursor = new MatrixCursor(AlbumSetLoader.PROJECTION);
final Object[] row = new Object[AlbumSetLoader.PROJECTION.length];
int count = mMediaSet.getSubMediaSetCount();
+ ArrayList<MediaItem> coverItems = new ArrayList<MediaItem>(count);
for (int i = 0; i < count; i++) {
MediaSet m = mMediaSet.getSubMediaSet(i);
m.loadIfDirty();
@@ -117,10 +112,15 @@ public class MediaSetLoader extends AsyncTaskLoader<Cursor> implements DrawableF
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);
+ if (coverItem != null) {
+ row[AlbumSetLoader.INDEX_TIMESTAMP] = coverItem.getDateInMs();
+ }
+ coverItems.add(coverItem);
cursor.addRow(row);
}
+ synchronized (mMediaSet) {
+ mCoverItems = coverItems;
+ }
return cursor;
}