summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2012-10-09 17:50:33 -0700
committerGeorge Mount <mount@google.com>2012-10-10 10:31:23 -0700
commit895e9fad2bbe6031c30b34e44caedaa1f77ca617 (patch)
treeaa5123d4ccb20ca3c944b069a56783cbbea11f07 /src
parentce41d9869c7f4d747ccc85a6a2e8f285be0197c2 (diff)
downloadandroid_packages_apps_Snap-895e9fad2bbe6031c30b34e44caedaa1f77ca617.tar.gz
android_packages_apps_Snap-895e9fad2bbe6031c30b34e44caedaa1f77ca617.tar.bz2
android_packages_apps_Snap-895e9fad2bbe6031c30b34e44caedaa1f77ca617.zip
Move panorama stitch progress outside the image.
Bug 7302513 Change-Id: Ie6505c8ed2125b878e54a93c4b8c0f51d80a1385
Diffstat (limited to 'src')
-rw-r--r--src/com/android/gallery3d/app/PhotoPage.java63
-rw-r--r--src/com/android/gallery3d/app/PhotoPageProgressBar.java50
2 files changed, 109 insertions, 4 deletions
diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java
index 7f8414c36..6f2a1e007 100644
--- a/src/com/android/gallery3d/app/PhotoPage.java
+++ b/src/com/android/gallery3d/app/PhotoPage.java
@@ -91,6 +91,7 @@ public class PhotoPage extends ActivityState implements
private static final int MSG_REFRESH_BOTTOM_CONTROLS = 8;
private static final int MSG_ON_CAMERA_CENTER = 9;
private static final int MSG_ON_PICTURE_CENTER = 10;
+ private static final int MSG_REFRESH_IMAGE = 11;
private static final int HIDE_BARS_TIMEOUT = 3500;
private static final int UNFREEZE_GLROOT_TIMEOUT = 250;
@@ -144,6 +145,7 @@ public class PhotoPage extends ActivityState implements
private boolean mIsMenuVisible;
private boolean mHaveImageEditor;
private PhotoPageBottomControls mBottomControls;
+ private PhotoPageProgressBar mProgressBar;
private MediaItem mCurrentPhoto = null;
private MenuExecutor mMenuExecutor;
private boolean mIsActive;
@@ -178,6 +180,7 @@ public class PhotoPage extends ActivityState implements
private final MyMenuVisibilityListener mMenuVisibilityListener =
new MyMenuVisibilityListener();
+ private UpdateProgressListener mProgressListener;
public static interface Model extends PhotoView.Model {
public void resume();
@@ -201,6 +204,33 @@ public class PhotoPage extends ActivityState implements
}
}
+ private class UpdateProgressListener implements StitchingChangeListener {
+
+ @Override
+ public void onStitchingResult(Path path, Uri uri) {
+ sendUpdate(path);
+ }
+
+ @Override
+ public void onStitchingQueued(Path path) {
+ sendUpdate(path);
+ }
+
+ @Override
+ public void onStitchingProgress(Path path, final int progress) {
+ sendUpdate(path);
+ }
+
+ private void sendUpdate(Path path) {
+ boolean isCurrentPhoto = mCurrentPhoto != null
+ && mCurrentPhoto.getPath().toString().equals(path.toString());
+ if (isCurrentPhoto) {
+ mHandler.sendEmptyMessage(MSG_REFRESH_IMAGE);
+
+ }
+ }
+ };
+
private final FloatAnimation mBackgroundFade = new BackgroundFadeOut();
@Override
@@ -310,6 +340,12 @@ public class PhotoPage extends ActivityState implements
}
break;
}
+ case MSG_REFRESH_IMAGE: {
+ MediaItem currentPhoto = mCurrentPhoto;
+ mCurrentPhoto = null;
+ updateCurrentPhoto(currentPhoto);
+ break;
+ }
default: throw new AssertionError(message.what);
}
}
@@ -481,12 +517,18 @@ public class PhotoPage extends ActivityState implements
}
mPhotoView.setFilmMode(mStartInFilmstrip && mMediaSet.getMediaItemCount() > 1);
- if (mSecureAlbum == null) {
- RelativeLayout galleryRoot = (RelativeLayout) ((Activity) mActivity)
- .findViewById(mAppBridge != null ? R.id.content : R.id.gallery_root);
- if (galleryRoot != null) {
+ RelativeLayout galleryRoot = (RelativeLayout) ((Activity) mActivity)
+ .findViewById(mAppBridge != null ? R.id.content : R.id.gallery_root);
+ if (galleryRoot != null) {
+ if (mSecureAlbum == null) {
mBottomControls = new PhotoPageBottomControls(this, mActivity, galleryRoot);
}
+ StitchingProgressManager progressManager = mApplication.getStitchingProgressManager();
+ if (progressManager != null) {
+ mProgressBar = new PhotoPageProgressBar(mActivity, galleryRoot);
+ mProgressListener = new UpdateProgressListener();
+ progressManager.addChangeListener(mProgressListener);
+ }
}
}
@@ -626,6 +668,18 @@ public class PhotoPage extends ActivityState implements
&& (photo.getSupportedOperations() & MediaItem.SUPPORT_SHARE) != 0) {
updateShareURI(photo.getPath());
}
+ StitchingProgressManager progressManager = mApplication.getStitchingProgressManager();
+ if (progressManager != null) {
+ int itemCount = progressManager.getItemCount();
+ mProgressBar.hideProgress();
+ for (int i = 0; i < itemCount; i++) {
+ MediaItem item = progressManager.getItem(i);
+ if (item.getPath().equals(photo.getPath())) {
+ mProgressBar.setProgress(progressManager.getProgress(item.getFilePath()));
+ break;
+ }
+ }
+ }
}
private void updateMenuOperations() {
@@ -1209,6 +1263,7 @@ public class PhotoPage extends ActivityState implements
mActivity.getGLRoot().unfreeze();
}
+ @Override
public void onFilmModeChanged(boolean enabled) {
mHandler.sendEmptyMessage(MSG_REFRESH_BOTTOM_CONTROLS);
if (enabled) {
diff --git a/src/com/android/gallery3d/app/PhotoPageProgressBar.java b/src/com/android/gallery3d/app/PhotoPageProgressBar.java
new file mode 100644
index 000000000..141fea698
--- /dev/null
+++ b/src/com/android/gallery3d/app/PhotoPageProgressBar.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.gallery3d.app;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.RelativeLayout;
+
+import com.android.gallery3d.R;
+
+public class PhotoPageProgressBar {
+ private ViewGroup mContainer;
+ private View mProgress;
+
+ public PhotoPageProgressBar(Context context, RelativeLayout parentLayout) {
+ LayoutInflater inflater = (LayoutInflater) context
+ .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ mContainer = (ViewGroup) inflater.inflate(R.layout.photopage_progress_bar, parentLayout,
+ false);
+ parentLayout.addView(mContainer);
+ mProgress = mContainer.findViewById(R.id.photopage_progress_foreground);
+ }
+
+ public void setProgress(int progressPercent) {
+ mContainer.setVisibility(View.VISIBLE);
+ LayoutParams layoutParams = mProgress.getLayoutParams();
+ layoutParams.width = mContainer.getWidth() * progressPercent / 100;
+ mProgress.setLayoutParams(layoutParams);
+ }
+
+ public void hideProgress() {
+ mContainer.setVisibility(View.INVISIBLE);
+ }
+}