summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/camera/data/FixedFirstDataAdapter.java24
-rw-r--r--src/com/android/camera/ui/FilmStripView.java26
2 files changed, 44 insertions, 6 deletions
diff --git a/src/com/android/camera/data/FixedFirstDataAdapter.java b/src/com/android/camera/data/FixedFirstDataAdapter.java
index 2bff22aa4..ecb9c1402 100644
--- a/src/com/android/camera/data/FixedFirstDataAdapter.java
+++ b/src/com/android/camera/data/FixedFirstDataAdapter.java
@@ -133,6 +133,11 @@ public class FixedFirstDataAdapter extends AbstractLocalDataAdapterWrapper
public void setListener(Listener listener) {
mListener = listener;
mAdapter.setListener((listener == null) ? null : this);
+ // The first data is always there. Thus, When the listener is set,
+ // we should call listener.onDataLoaded().
+ if (mListener != null) {
+ mListener.onDataLoaded();
+ }
}
@Override
@@ -145,7 +150,20 @@ public class FixedFirstDataAdapter extends AbstractLocalDataAdapterWrapper
@Override
public void onDataLoaded() {
- mListener.onDataLoaded();
+ if (mListener == null) {
+ return;
+ }
+ mListener.onDataUpdated(new UpdateReporter() {
+ @Override
+ public boolean isDataRemoved(int dataID) {
+ return false;
+ }
+
+ @Override
+ public boolean isDataUpdated(int dataID) {
+ return (dataID != 0);
+ }
+ });
}
@Override
@@ -153,12 +171,12 @@ public class FixedFirstDataAdapter extends AbstractLocalDataAdapterWrapper
mListener.onDataUpdated(new UpdateReporter() {
@Override
public boolean isDataRemoved(int dataID) {
- return reporter.isDataRemoved(dataID - 1);
+ return (dataID != 0) && reporter.isDataRemoved(dataID - 1);
}
@Override
public boolean isDataUpdated(int dataID) {
- return reporter.isDataUpdated(dataID - 1);
+ return (dataID != 0) && reporter.isDataUpdated(dataID - 1);
}
});
}
diff --git a/src/com/android/camera/ui/FilmStripView.java b/src/com/android/camera/ui/FilmStripView.java
index c21f2b2a2..c11b93fd1 100644
--- a/src/com/android/camera/ui/FilmStripView.java
+++ b/src/com/android/camera/ui/FilmStripView.java
@@ -491,6 +491,9 @@ public class FilmStripView extends ViewGroup {
}
public boolean isAnchoredTo(int id) {
+ if (mViewInfo[mCurrentInfo] == null) {
+ return false;
+ }
if (mViewInfo[mCurrentInfo].getID() == id
&& mViewInfo[mCurrentInfo].getCenterX() == mCenterX) {
return true;
@@ -511,7 +514,7 @@ public class FilmStripView extends ViewGroup {
@Override
public void onDraw(Canvas c) {
- if (mController.hasNewGeometry()) {
+ if (mViewInfo[mCurrentInfo] != null && mController.hasNewGeometry()) {
layoutChildren();
}
}
@@ -796,6 +799,9 @@ public class FilmStripView extends ViewGroup {
}
private void layoutChildren() {
+ if (mViewInfo[mCurrentInfo] == null) {
+ return;
+ }
if (mAnchorPending) {
mCenterX = mViewInfo[mCurrentInfo].getCenterX();
mAnchorPending = false;
@@ -1261,6 +1267,9 @@ public class FilmStripView extends ViewGroup {
mViewInfo[mCurrentInfo] = buildInfoFromData(0);
mViewInfo[mCurrentInfo].setLeftPosition(0);
+ if (mViewInfo[mCurrentInfo] == null) {
+ return;
+ }
if (getCurrentType() == ImageData.TYPE_CAMERA_PREVIEW) {
// we are in camera mode by default.
mController.lockAtCurrentView();
@@ -1437,8 +1446,9 @@ public class FilmStripView extends ViewGroup {
@Override
public boolean stopScrolling() {
- if (!mCanStopScroll)
+ if (!mCanStopScroll) {
return false;
+ }
mScroller.forceFinished(true);
mHasNewPosition = false;
return true;
@@ -1451,8 +1461,9 @@ public class FilmStripView extends ViewGroup {
@Override
public void scrollTo(int position, int duration, boolean interruptible) {
- if (!stopScrolling() || mIsPositionLocked)
+ if (!stopScrolling() || mIsPositionLocked) {
return;
+ }
mCanStopScroll = interruptible;
stopScrolling();
mScroller.startScroll(mCenterX, 0, position - mCenterX,
@@ -1461,6 +1472,9 @@ public class FilmStripView extends ViewGroup {
}
private void scaleTo(float scale, int duration) {
+ if (mViewInfo[mCurrentInfo] == null) {
+ return;
+ }
stopScale();
mScaleAnimator.setDuration(duration);
mScaleAnimator.setFloatValues(mScale, scale);
@@ -1518,6 +1532,9 @@ public class FilmStripView extends ViewGroup {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
+ if (mViewInfo[mCurrentInfo] == null) {
+ return;
+ }
mHasNewScale = true;
mNewScale = (Float) animation.getAnimatedValue();
layoutChildren();
@@ -1628,6 +1645,9 @@ public class FilmStripView extends ViewGroup {
@Override
public boolean onScroll(float x, float y, float dx, float dy) {
+ if (mViewInfo[mCurrentInfo] == null) {
+ return false;
+ }
int deltaX = (int) (dx / mScale);
if (inFilmStrip()) {
if (Math.abs(dx) > Math.abs(dy)) {