From cd2eeb0efc4370f20e9836e20eb11cb974e3b00d Mon Sep 17 00:00:00 2001 From: Mangesh Ghiware Date: Fri, 23 Aug 2013 13:28:21 -0700 Subject: Bring back Share to filmstrip Bug: 10367406 Change-Id: I37834442e3af209fb00b98e6da524263ac8c70f0 --- src/com/android/camera/CameraActivity.java | 75 ++++++++++++++++++++++--- src/com/android/camera/data/LocalData.java | 36 ++++++++---- src/com/android/camera/data/LocalMediaData.java | 8 ++- 3 files changed, 99 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index 6f8530612..0603dd36f 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -49,6 +49,7 @@ import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ProgressBar; +import android.widget.ShareActionProvider; import com.android.camera.data.CameraDataAdapter; import com.android.camera.data.CameraPreviewData; @@ -96,7 +97,9 @@ public class CameraActivity extends Activity private static final int SUPPORT_SETAS = 1 << 4; private static final int SUPPORT_EDIT = 1 << 5; private static final int SUPPORT_TRIM = 1 << 6; - private static final int SUPPORT_SHOW_ON_MAP = 1 << 7; + private static final int SUPPORT_SHARE = 1 << 7; + private static final int SUPPORT_SHARE_PANORAMA360 = 1 << 8; + private static final int SUPPORT_SHOW_ON_MAP = 1 << 9; private static final int SUPPORT_ALL = 0xffffffff; /** This data adapter is used by FilmStripView. */ @@ -131,6 +134,11 @@ public class CameraActivity extends Activity private Menu mActionBarMenu; private ViewGroup mUndoDeletionBar; + private ShareActionProvider mStandardShareActionProvider; + private Intent mStandardShareIntent; + private ShareActionProvider mPanoramaShareActionProvider; + private Intent mPanoramaShareIntent; + public void gotoGallery() { mFilmStripView.getController().goToNextItem(); } @@ -268,6 +276,28 @@ public class CameraActivity extends Activity mBottomProgress.setProgress(progress); } + private void setStandardShareIntent(Uri contentUri, String mimeType) { + if (mStandardShareIntent == null) { + mStandardShareIntent = new Intent(Intent.ACTION_SEND); + } + mStandardShareIntent.setType(mimeType); + mStandardShareIntent.putExtra(Intent.EXTRA_STREAM, contentUri); + if (mStandardShareActionProvider != null) { + mStandardShareActionProvider.setShareIntent(mStandardShareIntent); + } + } + + private void setPanoramaShareIntent(Uri contentUri) { + if (mPanoramaShareIntent == null) { + mPanoramaShareIntent = new Intent(Intent.ACTION_SEND); + } + mPanoramaShareIntent.setType("application/vnd.google.panorama360+jpg"); + mPanoramaShareIntent.putExtra(Intent.EXTRA_STREAM, contentUri); + if (mPanoramaShareActionProvider != null) { + mPanoramaShareActionProvider.setShareIntent(mPanoramaShareIntent); + } + } + /** * According to the data type, make the menu items for supported operations * visible. @@ -286,14 +316,21 @@ public class CameraActivity extends Activity case LocalData.LOCAL_IMAGE: supported |= SUPPORT_DELETE | SUPPORT_ROTATE | SUPPORT_INFO | SUPPORT_CROP | SUPPORT_SETAS | SUPPORT_EDIT - | SUPPORT_SHOW_ON_MAP; + | SUPPORT_SHARE | SUPPORT_SHOW_ON_MAP; break; case LocalData.LOCAL_VIDEO: - supported |= SUPPORT_DELETE | SUPPORT_INFO | SUPPORT_TRIM; + supported |= SUPPORT_DELETE | SUPPORT_INFO | SUPPORT_TRIM + | SUPPORT_SHARE; break; case LocalData.LOCAL_PHOTO_SPHERE: supported |= SUPPORT_DELETE | SUPPORT_ROTATE | SUPPORT_INFO | SUPPORT_CROP | SUPPORT_SETAS | SUPPORT_EDIT + | SUPPORT_SHARE | SUPPORT_SHOW_ON_MAP; + break; + case LocalData.LOCAL_360_PHOTO_SPHERE: + supported |= SUPPORT_DELETE | SUPPORT_ROTATE | SUPPORT_INFO + | SUPPORT_CROP | SUPPORT_SETAS | SUPPORT_EDIT + | SUPPORT_SHARE | SUPPORT_SHARE_PANORAMA360 | SUPPORT_SHOW_ON_MAP; break; default: @@ -306,16 +343,25 @@ public class CameraActivity extends Activity (supported & SUPPORT_ROTATE) != 0); setMenuItemVisible(mActionBarMenu, R.id.action_rotate_cw, (supported & SUPPORT_ROTATE) != 0); + setMenuItemVisible(mActionBarMenu, R.id.action_details, + (supported & SUPPORT_INFO) != 0); setMenuItemVisible(mActionBarMenu, R.id.action_crop, (supported & SUPPORT_CROP) != 0); - setMenuItemVisible(mActionBarMenu, R.id.action_trim, - (supported & SUPPORT_TRIM) != 0); setMenuItemVisible(mActionBarMenu, R.id.action_setas, (supported & SUPPORT_SETAS) != 0); setMenuItemVisible(mActionBarMenu, R.id.action_edit, (supported & SUPPORT_EDIT) != 0); - setMenuItemVisible(mActionBarMenu, R.id.action_details, - (supported & SUPPORT_INFO) != 0); + setMenuItemVisible(mActionBarMenu, R.id.action_trim, + (supported & SUPPORT_TRIM) != 0); + + if ((supported & SUPPORT_SHARE) != 0) { + setMenuItemVisible(mActionBarMenu, R.id.action_share, true); + setStandardShareIntent(currentData.getContentUri(), currentData.getMimeType()); + } + if ((supported & SUPPORT_SHARE_PANORAMA360) != 0) { + setMenuItemVisible(mActionBarMenu, R.id.action_share_panorama, true); + setPanoramaShareIntent(currentData.getContentUri()); + } boolean itemHasLocation = currentData.getLatLong() != null; setMenuItemVisible(mActionBarMenu, R.id.action_show_on_map, @@ -431,6 +477,21 @@ public class CameraActivity extends Activity MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.operations, menu); mActionBarMenu = menu; + + // Configure the standard share action provider + MenuItem item = menu.findItem(R.id.action_share); + mStandardShareActionProvider = (ShareActionProvider) item.getActionProvider(); + if (mStandardShareIntent != null) { + mStandardShareActionProvider.setShareIntent(mStandardShareIntent); + } + + // Configure the panorama share action provider + item = menu.findItem(R.id.action_share_panorama); + mPanoramaShareActionProvider = (ShareActionProvider) item.getActionProvider(); + if (mPanoramaShareIntent != null) { + mPanoramaShareActionProvider.setShareIntent(mPanoramaShareIntent); + } + return super.onCreateOptionsMenu(menu); } diff --git a/src/com/android/camera/data/LocalData.java b/src/com/android/camera/data/LocalData.java index 82567120e..11d36da82 100644 --- a/src/com/android/camera/data/LocalData.java +++ b/src/com/android/camera/data/LocalData.java @@ -38,16 +38,30 @@ public interface LocalData extends FilmStripView.ImageData { public static final int ACTION_DELETE = (1 << 1); // Local data types. Returned by getLocalDataType(). - // Camera preview. - public static final int LOCAL_CAMERA_PREVIEW = 1; - // A data for showing an arbitrary view. - public static final int LOCAL_VIEW = 2; - // A still image. - public static final int LOCAL_IMAGE = 3; - // A video. - public static final int LOCAL_VIDEO = 4; - // A still image but with valid PhotoSphere metadata. - public static final int LOCAL_PHOTO_SPHERE = 5; + /** + * Constant for denoting a camera preview. + */ + public static final int LOCAL_CAMERA_PREVIEW = 1; + /** + * Constant for denoting an arbitrary view. + */ + public static final int LOCAL_VIEW = 2; + /** + * Constant for denoting a still image. + */ + public static final int LOCAL_IMAGE = 3; + /** + * Constant for denoting a video. + */ + public static final int LOCAL_VIDEO = 4; + /** + * Constant for denoting a still image, with valid PhotoSphere metadata. + */ + public static final int LOCAL_PHOTO_SPHERE = 5; + /** + * Constant for denoting a still image, with valid 360 PhotoSphere metadata. + */ + public static final int LOCAL_360_PHOTO_SPHERE = 6; View getView(Context c, int width, int height, Drawable placeHolder); @@ -118,7 +132,7 @@ public interface LocalData extends FilmStripView.ImageData { * * @return The local data type. Could be one of the following: * {@code LOCAL_CAMERA_PREVIEW}, {@code LOCAL_VIEW}, {@code LOCAL_IMAGE}, - * {@code LOCAL_VIDEO}, and {@code LOCAL_PHOTO_SPHERE}, + * {@code LOCAL_VIDEO}, {@code LOCAL_PHOTO_SPHERE}, and {@code LOCAL_360_PHOTO_SPHERE} */ int getLocalDataType(); diff --git a/src/com/android/camera/data/LocalMediaData.java b/src/com/android/camera/data/LocalMediaData.java index 1f87b5040..88f127f3e 100644 --- a/src/com/android/camera/data/LocalMediaData.java +++ b/src/com/android/camera/data/LocalMediaData.java @@ -380,8 +380,12 @@ public abstract class LocalMediaData implements LocalData { @Override public int getLocalDataType() { - if (mPanoramaMetadata != null && mPanoramaMetadata.mUsePanoramaViewer) { - return LOCAL_PHOTO_SPHERE; + if (mPanoramaMetadata != null) { + if (mPanoramaMetadata.mIsPanorama360) { + return LOCAL_360_PHOTO_SPHERE; + } else if (mPanoramaMetadata.mUsePanoramaViewer) { + return LOCAL_PHOTO_SPHERE; + } } return LOCAL_IMAGE; } -- cgit v1.2.3