summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/app/PhotoDataAdapter.java
diff options
context:
space:
mode:
authorChih-Chung Chang <chihchung@google.com>2012-04-19 20:14:11 +0800
committerChih-Chung Chang <chihchung@google.com>2012-04-19 20:25:50 +0800
commitc3b2d478f9032a8decf5c6254a238fc49e41b72c (patch)
treebbf41115429dcfa4bf0ff693a8b3054e79d59984 /src/com/android/gallery3d/app/PhotoDataAdapter.java
parentfb1a15559bb2a0a1c8a41efd3e0420a2a2d70590 (diff)
downloadandroid_packages_apps_Gallery2-c3b2d478f9032a8decf5c6254a238fc49e41b72c.tar.gz
android_packages_apps_Gallery2-c3b2d478f9032a8decf5c6254a238fc49e41b72c.tar.bz2
android_packages_apps_Gallery2-c3b2d478f9032a8decf5c6254a238fc49e41b72c.zip
In filmstrip, show placeholders for pictures not loaded yet.
Change-Id: I037f1f054da4a3800045d5b89724341ac22272a5
Diffstat (limited to 'src/com/android/gallery3d/app/PhotoDataAdapter.java')
-rw-r--r--src/com/android/gallery3d/app/PhotoDataAdapter.java58
1 files changed, 42 insertions, 16 deletions
diff --git a/src/com/android/gallery3d/app/PhotoDataAdapter.java b/src/com/android/gallery3d/app/PhotoDataAdapter.java
index ec59997f4..096e781de 100644
--- a/src/com/android/gallery3d/app/PhotoDataAdapter.java
+++ b/src/com/android/gallery3d/app/PhotoDataAdapter.java
@@ -210,20 +210,14 @@ public class PhotoDataAdapter implements PhotoPage.Model {
for (int i = -SCREEN_NAIL_MAX; i <= SCREEN_NAIL_MAX; ++i) {
mChanges[i + SCREEN_NAIL_MAX] = getVersion(mCurrentIndex + i);
}
- mPhotoView.notifyDataChange(mChanges, mCurrentIndex > 0,
- mCurrentIndex < mSize - 1);
+ mPhotoView.notifyDataChange(mChanges, -mCurrentIndex,
+ mSize - 1 - mCurrentIndex);
}
public void setDataListener(DataListener listener) {
mDataListener = listener;
}
- @Override
- public void setNeedFullImage(boolean enabled) {
- mNeedFullImage = enabled;
- mMainHandler.sendEmptyMessage(MSG_UPDATE_IMAGE_REQUESTS);
- }
-
private void updateScreenNail(long version, Future<ScreenNail> future) {
ImageEntry entry = mImageCache.get(version);
ScreenNail screenNail = future.get();
@@ -307,8 +301,14 @@ public class PhotoDataAdapter implements PhotoPage.Model {
return entry == null ? null : entry.screenNail;
}
- public ScreenNail getScreenNail(int offset) {
- return getImage(mCurrentIndex + offset);
+ private MediaItem getItem(int index) {
+ if (index < 0 || index >= mSize || !mIsActive) return null;
+ Utils.assertTrue(index >= mActiveStart && index < mActiveEnd);
+
+ if (index >= mContentStart && index < mContentEnd) {
+ return mData[index % DATA_CACHE_SIZE];
+ }
+ return null;
}
private void updateCurrentIndex(int index) {
@@ -329,14 +329,45 @@ public class PhotoDataAdapter implements PhotoPage.Model {
fireDataChange();
}
+ @Override
public void next() {
updateCurrentIndex(mCurrentIndex + 1);
}
+ @Override
public void previous() {
updateCurrentIndex(mCurrentIndex - 1);
}
+ @Override
+ public ScreenNail getScreenNail(int offset) {
+ return getImage(mCurrentIndex + offset);
+ }
+
+ @Override
+ public void getImageSize(int offset, PhotoView.Size size) {
+ MediaItem item = getItem(mCurrentIndex + offset);
+ if (item == null) {
+ size.width = 0;
+ size.height = 0;
+ } else {
+ size.width = item.getWidth();
+ size.height = item.getHeight();
+ }
+ }
+
+ @Override
+ public int getImageRotation(int offset) {
+ MediaItem item = getItem(mCurrentIndex + offset);
+ return (item == null) ? 0 : item.getFullImageRotation();
+ }
+
+ @Override
+ public void setNeedFullImage(boolean enabled) {
+ mNeedFullImage = enabled;
+ mMainHandler.sendEmptyMessage(MSG_UPDATE_IMAGE_REQUESTS);
+ }
+
public ScreenNail getScreenNail() {
return mTileProvider.getScreenNail();
}
@@ -349,11 +380,6 @@ public class PhotoDataAdapter implements PhotoPage.Model {
return mTileProvider.getImageWidth();
}
- public int getImageRotation() {
- ImageEntry entry = mImageCache.get(getVersion(mCurrentIndex));
- return entry == null ? 0 : entry.rotation;
- }
-
public int getLevelCount() {
return mTileProvider.getLevelCount();
}
@@ -505,7 +531,7 @@ public class PhotoDataAdapter implements PhotoPage.Model {
bitmap = BitmapUtils.rotateBitmap(bitmap,
mItem.getRotation() - mItem.getFullImageRotation(), true);
}
- return new BitmapScreenNail(bitmap, mItem.getFullImageRotation());
+ return new BitmapScreenNail(bitmap);
}
}