summaryrefslogtreecommitdiffstats
path: root/src/com/android/dreams/phototable/StockSource.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/dreams/phototable/StockSource.java')
-rw-r--r--src/com/android/dreams/phototable/StockSource.java59
1 files changed, 42 insertions, 17 deletions
diff --git a/src/com/android/dreams/phototable/StockSource.java b/src/com/android/dreams/phototable/StockSource.java
index 3d44309..be2a860 100644
--- a/src/com/android/dreams/phototable/StockSource.java
+++ b/src/com/android/dreams/phototable/StockSource.java
@@ -17,45 +17,55 @@ package com.android.dreams.phototable;
import android.content.Context;
import android.content.SharedPreferences;
-import android.util.Log;
import java.io.InputStream;
-import java.util.Collection;
import java.util.ArrayList;
+import java.util.Collection;
/**
* Picks a random image from the local store.
*/
-public class
-
-StockSource extends PhotoSource {
+public class StockSource extends PhotoSource {
public static final String ALBUM_ID = "com.android.dreams.phototable.StockSource";
private static final String TAG = "PhotoTable.StockSource";
private static final int[] PHOTOS = { R.drawable.blank_photo };
+ private final ArrayList<ImageData> mImageCache;
+ private final ArrayList<AlbumData> mAlbumCache;
+
private final ArrayList<ImageData> mImageList;
private final ArrayList<AlbumData> mAlbumList;
private final String mStockPhotoName;
- private int mNextPosition;
public StockSource(Context context, SharedPreferences settings) {
super(context, settings, null);
mSourceName = TAG;
mStockPhotoName = mResources.getString(R.string.stock_photo_album_name, "Default Photos");
+ mImageCache = new ArrayList<ImageData>(PHOTOS.length);
+ mAlbumCache = new ArrayList<AlbumData>(1);
mImageList = new ArrayList<ImageData>(PHOTOS.length);
mAlbumList = new ArrayList<AlbumData>(1);
+
+ AlbumData albumData = new AlbumData();
+ albumData.id = ALBUM_ID;
+ albumData.account = mStockPhotoName;
+ albumData.title = mStockPhotoName;
+ mAlbumCache.add(albumData);
+
+ for (int i = 0; i < PHOTOS.length; i++) {
+ ImageData imageData = new ImageData();
+ imageData.id = Integer.toString(i);
+ mImageCache.add(imageData);
+ }
+
fillQueue();
}
@Override
public Collection<AlbumData> findAlbums() {
if (mAlbumList.isEmpty()) {
- AlbumData data = new AlbumData();
- data.id = ALBUM_ID;
- data.account = mStockPhotoName;
- data.title = mStockPhotoName;
- mAlbumList.add(data);
+ mAlbumList.addAll(mAlbumCache);
}
log(TAG, "returning a list of albums: " + mAlbumList.size());
return mAlbumList;
@@ -64,11 +74,7 @@ StockSource extends PhotoSource {
@Override
protected Collection<ImageData> findImages(int howMany) {
if (mImageList.isEmpty()) {
- for (int i = 0; i < PHOTOS.length; i++) {
- ImageData data = new ImageData();
- data.id = Integer.toString(PHOTOS[i]);
- mImageList.add(data);
- }
+ mImageList.addAll(mImageCache);
}
return mImageList;
}
@@ -78,7 +84,8 @@ StockSource extends PhotoSource {
InputStream is = null;
try {
log(TAG, "opening:" + data.id);
- is = mResources.openRawResource(Integer.valueOf(data.id));
+ int idx = Integer.valueOf(data.id);
+ is = mResources.openRawResource(PHOTOS[idx]);
} catch (Exception ex) {
log(TAG, ex.toString());
is = null;
@@ -86,5 +93,23 @@ StockSource extends PhotoSource {
return is;
}
+
+ @Override
+ public ImageData naturalNext(ImageData current) {
+ int idx = Integer.valueOf(current.id);
+ idx = (idx + 1) % PHOTOS.length;
+ return mImageCache.get(idx);
+ }
+
+ @Override
+ public ImageData naturalPrevious(ImageData current) {
+ int idx = Integer.valueOf(current.id);
+ idx = (PHOTOS.length + idx - 1) % PHOTOS.length;
+ return mImageCache.get(idx);
+ }
+
+ @Override
+ protected void donePaging(ImageData current) {
+ }
}