summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMangesh Ghiware <mghiware@google.com>2012-09-27 23:48:44 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-09-27 23:48:45 -0700
commitd9b8148210e667c19835460260b8609ac0ad4299 (patch)
treebedd1e54a76e2e9f6d615890978e168ac67c2c8e /src
parent15ecac8f62d550de5e6f597630c650a92ae67d9c (diff)
parent5c9b8b60fec038876778093edbb1fba4005e696a (diff)
downloadandroid_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.java37
-rw-r--r--src/com/android/gallery3d/app/PhotoPage.java20
-rw-r--r--src/com/android/gallery3d/ui/ActionModeHandler.java82
-rw-r--r--src/com/android/gallery3d/ui/MenuExecutor.java20
-rw-r--r--src/com/android/gallery3d/util/GalleryUtils.java8
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";