summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/app/PhotoPage.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/app/PhotoPage.java')
-rw-r--r--src/com/android/gallery3d/app/PhotoPage.java39
1 files changed, 30 insertions, 9 deletions
diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java
index dd5274517..db7f3d9f1 100644
--- a/src/com/android/gallery3d/app/PhotoPage.java
+++ b/src/com/android/gallery3d/app/PhotoPage.java
@@ -50,6 +50,7 @@ import com.android.gallery3d.data.LocalImage;
import com.android.gallery3d.data.MediaDetails;
import com.android.gallery3d.data.MediaItem;
import com.android.gallery3d.data.MediaObject;
+import com.android.gallery3d.data.MediaObject.SupportedOperationsListener;
import com.android.gallery3d.data.MediaSet;
import com.android.gallery3d.data.MtpSource;
import com.android.gallery3d.data.Path;
@@ -94,6 +95,7 @@ public class PhotoPage extends ActivityState implements
private static final int MSG_ON_PICTURE_CENTER = 10;
private static final int MSG_REFRESH_IMAGE = 11;
private static final int MSG_UPDATE_DEFERRED = 12;
+ private static final int MSG_UPDATE_PROGRESS = 13;
private static final int HIDE_BARS_TIMEOUT = 3500;
private static final int UNFREEZE_GLROOT_TIMEOUT = 250;
@@ -188,6 +190,14 @@ public class PhotoPage extends ActivityState implements
new MyMenuVisibilityListener();
private UpdateProgressListener mProgressListener;
+ private SupportedOperationsListener mSupportedOperationsListener =
+ new SupportedOperationsListener() {
+ @Override
+ public void onChange(int operations) {
+ mHandler.sendEmptyMessage(MSG_REFRESH_IMAGE);
+ }
+ };
+
public static interface Model extends PhotoView.Model {
public void resume();
public void pause();
@@ -214,24 +224,24 @@ public class PhotoPage extends ActivityState implements
@Override
public void onStitchingResult(Uri uri) {
- sendUpdate(uri);
+ sendUpdate(uri, MSG_REFRESH_IMAGE);
}
@Override
public void onStitchingQueued(Uri uri) {
- sendUpdate(uri);
+ sendUpdate(uri, MSG_UPDATE_PROGRESS);
}
@Override
public void onStitchingProgress(Uri uri, final int progress) {
- sendUpdate(uri);
+ sendUpdate(uri, MSG_UPDATE_PROGRESS);
}
- private void sendUpdate(Uri uri) {
+ private void sendUpdate(Uri uri, int message) {
boolean isCurrentPhoto = mCurrentPhoto instanceof LocalImage
&& mCurrentPhoto.getContentUri().equals(uri);
if (isCurrentPhoto) {
- mHandler.sendEmptyMessage(MSG_REFRESH_IMAGE);
+ mHandler.sendEmptyMessage(message);
}
}
};
@@ -356,9 +366,11 @@ public class PhotoPage extends ActivityState implements
break;
}
case MSG_REFRESH_IMAGE: {
- MediaItem currentPhoto = mCurrentPhoto;
- mCurrentPhoto = null;
- updateCurrentPhoto(currentPhoto);
+ updateUIForCurrentPhoto();
+ break;
+ }
+ case MSG_UPDATE_PROGRESS: {
+ updateProgressBar();
break;
}
default: throw new AssertionError(message.what);
@@ -682,21 +694,30 @@ public class PhotoPage extends ActivityState implements
&& (mCurrentPhoto.getSupportedOperations() & MediaItem.SUPPORT_SHARE) != 0) {
updateShareURI(mCurrentPhoto.getPath());
}
+ updateProgressBar();
}
private void updateCurrentPhoto(MediaItem photo) {
if (mCurrentPhoto == photo) return;
+ if (mCurrentPhoto != null) {
+ mCurrentPhoto.setSupportedOperationsListener(null);
+ }
mCurrentPhoto = photo;
+ mCurrentPhoto.setSupportedOperationsListener(
+ mSupportedOperationsListener);
if (mPhotoView.getFilmMode()) {
requestDeferredUpdate();
} else {
updateUIForCurrentPhoto();
}
+ }
+
+ private void updateProgressBar() {
if (mProgressBar != null) {
mProgressBar.hideProgress();
StitchingProgressManager progressManager = mApplication.getStitchingProgressManager();
if (progressManager != null && mCurrentPhoto instanceof LocalImage) {
- Integer progress = progressManager.getProgress(photo.getContentUri());
+ Integer progress = progressManager.getProgress(mCurrentPhoto.getContentUri());
if (progress != null) {
mProgressBar.setProgress(progress);
}