diff options
author | Mangesh Ghiware <mghiware@google.com> | 2012-09-27 23:48:44 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-09-27 23:48:45 -0700 |
commit | d9b8148210e667c19835460260b8609ac0ad4299 (patch) | |
tree | bedd1e54a76e2e9f6d615890978e168ac67c2c8e /src | |
parent | 15ecac8f62d550de5e6f597630c650a92ae67d9c (diff) | |
parent | 5c9b8b60fec038876778093edbb1fba4005e696a (diff) | |
download | android_packages_apps_Snap-d9b8148210e667c19835460260b8609ac0ad4299.tar.gz android_packages_apps_Snap-d9b8148210e667c19835460260b8609ac0ad4299.tar.bz2 android_packages_apps_Snap-d9b8148210e667c19835460260b8609ac0ad4299.zip |
Merge "Update to sharing panorama" into gb-ub-photos-arches
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/gallery3d/app/GalleryActionBar.java | 37 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/PhotoPage.java | 20 | ||||
-rw-r--r-- | src/com/android/gallery3d/ui/ActionModeHandler.java | 82 | ||||
-rw-r--r-- | src/com/android/gallery3d/ui/MenuExecutor.java | 20 | ||||
-rw-r--r-- | src/com/android/gallery3d/util/GalleryUtils.java | 8 |
5 files changed, 124 insertions, 43 deletions
diff --git a/src/com/android/gallery3d/app/GalleryActionBar.java b/src/com/android/gallery3d/app/GalleryActionBar.java index 0aac60e77..867ca6b3b 100644 --- a/src/com/android/gallery3d/app/GalleryActionBar.java +++ b/src/com/android/gallery3d/app/GalleryActionBar.java @@ -297,28 +297,45 @@ public class GalleryActionBar implements OnNavigationListener { } private Menu mActionBarMenu; + private MenuItem mSharePanoramaMenuItem; private MenuItem mShareMenuItem; - private Intent mShareIntent; + private ShareActionProvider mSharePanoramaActionProvider; + private ShareActionProvider mShareActionProvider; public void createActionBarMenu(int menuRes, Menu menu) { mActivity.getSupportMenuInflater().inflate(menuRes, menu); mActionBarMenu = menu; + + mSharePanoramaMenuItem = menu.findItem(R.id.action_share_panorama); + mSharePanoramaActionProvider = (ShareActionProvider) + mSharePanoramaMenuItem.getActionProvider(); + mSharePanoramaActionProvider.setShareHistoryFileName("panorama_share_history.xml"); + mShareMenuItem = menu.findItem(R.id.action_share); - if (mShareMenuItem != null) { - ((ShareActionProvider) mShareMenuItem.getActionProvider()) - .setShareIntent(mShareIntent); - } + mShareActionProvider = (ShareActionProvider) + mShareMenuItem.getActionProvider(); + mShareActionProvider.setShareHistoryFileName("share_history.xml"); } public Menu getMenu() { return mActionBarMenu; } - public void setShareIntent(Intent shareIntent) { - mShareIntent = shareIntent; - if (mShareMenuItem != null) { - ((ShareActionProvider) mShareMenuItem.getActionProvider()) - .setShareIntent(shareIntent); + public void setShareIntents(Intent sharePanoramaIntent, Intent shareIntent) { + // if panorama sharing is enabled, rename share to share as photo, + // and move it to overflow + if (sharePanoramaIntent != null) { + mActivity.invalidateOptionsMenu(); + mShareMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); + mShareMenuItem.setTitle( + mContext.getResources().getString(R.string.share_as_photo)); + } else { + mSharePanoramaMenuItem.setVisible(false); + mShareMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); + mShareMenuItem.setTitle( + mContext.getResources().getString(R.string.share)); } + mSharePanoramaActionProvider.setShareIntent(sharePanoramaIntent); + mShareActionProvider.setShareIntent(shareIntent); } } diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java index 49d1e6ee7..caa5fde61 100644 --- a/src/com/android/gallery3d/app/PhotoPage.java +++ b/src/com/android/gallery3d/app/PhotoPage.java @@ -485,14 +485,24 @@ public class PhotoPage extends ActivityState implements private Intent createShareIntent(Path path) { DataManager manager = mActivity.getDataManager(); int type = manager.getMediaType(path); - int support = manager.getSupportedOperations(path); - boolean isPanorama = (support & MediaObject.SUPPORT_PANORAMA) != 0; Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType(MenuExecutor.getMimeType(type, isPanorama)); + intent.setType(MenuExecutor.getMimeType(type)); Uri uri = manager.getContentUri(path); intent.putExtra(Intent.EXTRA_STREAM, uri); return intent; + } + private Intent createSharePanoramaIntent(Path path) { + DataManager manager = mActivity.getDataManager(); + int supported = manager.getSupportedOperations(path); + if ((supported & MediaObject.SUPPORT_PANORAMA) == 0) { + return null; + } + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType(GalleryUtils.MIME_TYPE_PANORAMA); + Uri uri = manager.getContentUri(path); + intent.putExtra(Intent.EXTRA_STREAM, uri); + return intent; } private void launchPhotoEditor() { @@ -512,8 +522,10 @@ public class PhotoPage extends ActivityState implements private void updateShareURI(Path path) { DataManager manager = mActivity.getDataManager(); + mActionBar.setShareIntents( + createSharePanoramaIntent(path), + createShareIntent(path)); Uri uri = manager.getContentUri(path); - mActionBar.setShareIntent(createShareIntent(path)); setNfcBeamPushUri(uri); } diff --git a/src/com/android/gallery3d/ui/ActionModeHandler.java b/src/com/android/gallery3d/ui/ActionModeHandler.java index 2adb05cf0..f0ddde839 100644 --- a/src/com/android/gallery3d/ui/ActionModeHandler.java +++ b/src/com/android/gallery3d/ui/ActionModeHandler.java @@ -54,7 +54,8 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi private static final int SUPPORT_MULTIPLE_MASK = MediaObject.SUPPORT_DELETE | MediaObject.SUPPORT_ROTATE | MediaObject.SUPPORT_SHARE - | MediaObject.SUPPORT_CACHE | MediaObject.SUPPORT_IMPORT; + | MediaObject.SUPPORT_CACHE | MediaObject.SUPPORT_IMPORT + | MediaObject.SUPPORT_PANORAMA; public interface ActionModeListener { public boolean onActionItemClicked(MenuItem item); @@ -65,7 +66,10 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi private final SelectionManager mSelectionManager; private final NfcAdapter mNfcAdapter; private Menu mMenu; + private MenuItem mSharePanoramaMenuItem; private MenuItem mShareMenuItem; + private ShareActionProvider mSharePanoramaActionProvider; + private ShareActionProvider mShareActionProvider; private SelectionMenu mSelectionMenu; private ActionModeListener mListener; private Future<?> mMenuTask; @@ -183,10 +187,21 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi mode.getMenuInflater().inflate(R.menu.operation, menu); mMenu = menu; + mSharePanoramaMenuItem = menu.findItem(R.id.action_share_panorama); + if (mSharePanoramaMenuItem != null) { + mSharePanoramaActionProvider = (ShareActionProvider) mSharePanoramaMenuItem + .getActionProvider(); + mSharePanoramaActionProvider.setOnShareTargetSelectedListener( + mShareTargetSelectedListener); + mSharePanoramaActionProvider.setShareHistoryFileName("panorama_share_history.xml"); + } mShareMenuItem = menu.findItem(R.id.action_share); if (mShareMenuItem != null) { - ((ShareActionProvider) mShareMenuItem.getActionProvider()) - .setOnShareTargetSelectedListener(mShareTargetSelectedListener); + mShareActionProvider = (ShareActionProvider) mShareMenuItem + .getActionProvider(); + mShareActionProvider.setOnShareTargetSelectedListener( + mShareTargetSelectedListener); + mShareActionProvider.setShareHistoryFileName("share_history.xml"); } return true; } @@ -219,7 +234,7 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi switch (unexpandedPaths.size()) { case 1: - final String mimeType = MenuExecutor.getMimeType(type, false); + final String mimeType = MenuExecutor.getMimeType(type); if (!GalleryUtils.isEditorAvailable(mActivity, mimeType)) { operation &= ~MediaObject.SUPPORT_EDIT; } @@ -240,6 +255,35 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi // Share intent needs to expand the selection set so we can get URI of // each media item + private Intent computePanoramaSharingIntent(JobContext jc) { + ArrayList<Path> expandedPaths = mSelectionManager.getSelected(true); + if (expandedPaths.size() == 0) { + return null; + } + final ArrayList<Uri> uris = new ArrayList<Uri>(); + DataManager manager = mActivity.getDataManager(); + final Intent intent = new Intent(); + for (Path path : expandedPaths) { + if (jc.isCancelled()) return null; + uris.add(manager.getContentUri(path)); + } + + final int size = uris.size(); + if (size > 0) { + if (size > 1) { + intent.setAction(Intent.ACTION_SEND_MULTIPLE); + intent.setType(GalleryUtils.MIME_TYPE_PANORAMA); + intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); + } else { + intent.setAction(Intent.ACTION_SEND); + intent.setType(GalleryUtils.MIME_TYPE_PANORAMA); + intent.putExtra(Intent.EXTRA_STREAM, uris.get(0)); + } + } + + return intent; + } + private Intent computeSharingIntent(JobContext jc) { ArrayList<Path> expandedPaths = mSelectionManager.getSelected(true); if (expandedPaths.size() == 0) { @@ -249,7 +293,6 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi final ArrayList<Uri> uris = new ArrayList<Uri>(); DataManager manager = mActivity.getDataManager(); int type = 0; - boolean isPanorama = true; final Intent intent = new Intent(); for (Path path : expandedPaths) { if (jc.isCancelled()) return null; @@ -259,14 +302,11 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi if ((support & MediaObject.SUPPORT_SHARE) != 0) { uris.add(manager.getContentUri(path)); } - if ((support & MediaObject.SUPPORT_PANORAMA) == 0) { - isPanorama = false; - } } final int size = uris.size(); if (size > 0) { - final String mimeType = MenuExecutor.getMimeType(type, isPanorama); + final String mimeType = MenuExecutor.getMimeType(type); if (size > 1) { intent.setAction(Intent.ACTION_SEND_MULTIPLE).setType(mimeType); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); @@ -293,7 +333,8 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi updateSelectionMenu(); - // Disable share action until share intent is in good shape + // Disable share actions until share intent is in good shape + if (mSharePanoramaMenuItem != null) mSharePanoramaMenuItem.setEnabled(false); if (mShareMenuItem != null) mShareMenuItem.setEnabled(false); // Generate sharing intent and update supported operations in the background @@ -305,17 +346,32 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi final int operation = computeMenuOptions(jc); // Pass2: Deal with expanded media object list for sharing operation. - final Intent intent = (mShareMenuItem != null) ? computeSharingIntent(jc) : null; + final Intent share_panorama_intent = computePanoramaSharingIntent(jc); + final Intent share_intent = computeSharingIntent(jc); mMainHandler.post(new Runnable() { @Override public void run() { mMenuTask = null; if (jc.isCancelled()) return; MenuExecutor.updateMenuOperation(mMenu, operation); + if (mSharePanoramaMenuItem != null) { + mSharePanoramaMenuItem.setEnabled(true); + if ((operation & MediaObject.SUPPORT_PANORAMA) != 0) { + mActivity.invalidateOptionsMenu(); + mShareMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); + mShareMenuItem.setTitle( + mActivity.getResources().getString(R.string.share_as_photo)); + } else { + mSharePanoramaMenuItem.setVisible(false); + mShareMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); + mShareMenuItem.setTitle( + mActivity.getResources().getString(R.string.share)); + } + mSharePanoramaActionProvider.setShareIntent(share_panorama_intent); + } if (mShareMenuItem != null) { mShareMenuItem.setEnabled(true); - ((ShareActionProvider) mShareMenuItem.getActionProvider()) - .setShareIntent(intent); + mShareActionProvider.setShareIntent(share_intent); } } }); diff --git a/src/com/android/gallery3d/ui/MenuExecutor.java b/src/com/android/gallery3d/ui/MenuExecutor.java index 1f28555ad..f866688e6 100644 --- a/src/com/android/gallery3d/ui/MenuExecutor.java +++ b/src/com/android/gallery3d/ui/MenuExecutor.java @@ -49,11 +49,6 @@ public class MenuExecutor { @SuppressWarnings("unused") private static final String TAG = "MenuExecutor"; - private static final String MIME_TYPE_IMAGE = "image/*"; - private static final String MIME_TYPE_VIDEO = "video/*"; - private static final String MIME_TYPE_PANORAMA = "application/vnd.google.panorama+jpg"; - private static final String MIME_TYPE_ALL = "*/*"; - private static final int MSG_TASK_COMPLETE = 1; private static final int MSG_TASK_UPDATE = 2; private static final int MSG_TASK_START = 3; @@ -166,6 +161,7 @@ public class MenuExecutor { boolean supportRotate = (supported & MediaObject.SUPPORT_ROTATE) != 0; boolean supportCrop = (supported & MediaObject.SUPPORT_CROP) != 0; boolean supportTrim = (supported & MediaObject.SUPPORT_TRIM) != 0; + boolean supportSharePanorama = (supported & MediaObject.SUPPORT_PANORAMA) != 0; boolean supportShare = (supported & MediaObject.SUPPORT_SHARE) != 0; boolean supportSetAs = (supported & MediaObject.SUPPORT_SETAS) != 0; boolean supportShowOnMap = (supported & MediaObject.SUPPORT_SHOW_ON_MAP) != 0; @@ -179,6 +175,7 @@ public class MenuExecutor { setMenuItemVisible(menu, R.id.action_rotate_cw, supportRotate); setMenuItemVisible(menu, R.id.action_crop, supportCrop); setMenuItemVisible(menu, R.id.action_trim, supportTrim); + setMenuItemVisible(menu, R.id.action_share_panorama, supportSharePanorama); setMenuItemVisible(menu, R.id.action_share, supportShare); setMenuItemVisible(menu, R.id.action_setas, supportSetAs); setMenuItemVisible(menu, R.id.action_show_on_map, supportShowOnMap); @@ -201,9 +198,7 @@ public class MenuExecutor { private Intent getIntentBySingleSelectedPath(String action) { DataManager manager = mActivity.getDataManager(); Path path = getSingleSelectedPath(); - int support = manager.getSupportedOperations(path); - boolean isPanorama = (support & MediaObject.SUPPORT_PANORAMA) != 0; - String mimeType = getMimeType(manager.getMediaType(path), isPanorama); + String mimeType = getMimeType(manager.getMediaType(path)); return new Intent(action).setDataAndType(manager.getContentUri(path), mimeType); } @@ -331,14 +326,13 @@ public class MenuExecutor { mWaitOnStop = waitOnStop; } - public static String getMimeType(int type, boolean isPanorama) { - if (isPanorama) return MIME_TYPE_PANORAMA; + public static String getMimeType(int type) { switch (type) { case MediaObject.MEDIA_TYPE_IMAGE : - return MIME_TYPE_IMAGE; + return GalleryUtils.MIME_TYPE_IMAGE; case MediaObject.MEDIA_TYPE_VIDEO : - return MIME_TYPE_VIDEO; - default: return MIME_TYPE_ALL; + return GalleryUtils.MIME_TYPE_VIDEO; + default: return GalleryUtils.MIME_TYPE_ALL; } } diff --git a/src/com/android/gallery3d/util/GalleryUtils.java b/src/com/android/gallery3d/util/GalleryUtils.java index 6639c55f0..a3eccb89b 100644 --- a/src/com/android/gallery3d/util/GalleryUtils.java +++ b/src/com/android/gallery3d/util/GalleryUtils.java @@ -56,9 +56,11 @@ public class GalleryUtils { private static final String MAPS_CLASS_NAME = "com.google.android.maps.MapsActivity"; private static final String CAMERA_LAUNCHER_NAME = "com.android.camera.CameraLauncher"; - private static final String MIME_TYPE_IMAGE = "image/*"; - private static final String MIME_TYPE_VIDEO = "video/*"; - private static final String MIME_TYPE_ALL = "*/*"; + public static final String MIME_TYPE_IMAGE = "image/*"; + public static final String MIME_TYPE_VIDEO = "video/*"; + public static final String MIME_TYPE_PANORAMA = "application/vnd.google.panorama360+jpg"; + public static final String MIME_TYPE_ALL = "*/*"; + private static final String DIR_TYPE_IMAGE = "vnd.android.cursor.dir/image"; private static final String DIR_TYPE_VIDEO = "vnd.android.cursor.dir/video"; |