diff options
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/gallery3d/app/GalleryActionBar.java | 10 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/MovieActivity.java | 36 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/PhotoPage.java | 54 | ||||
-rw-r--r-- | src/com/android/gallery3d/ui/ActionModeHandler.java | 46 | ||||
-rw-r--r-- | src/com/android/gallery3d/ui/MenuExecutor.java | 14 |
5 files changed, 115 insertions, 45 deletions
diff --git a/src/com/android/gallery3d/app/GalleryActionBar.java b/src/com/android/gallery3d/app/GalleryActionBar.java index 2df6535c9..69f51bccb 100644 --- a/src/com/android/gallery3d/app/GalleryActionBar.java +++ b/src/com/android/gallery3d/app/GalleryActionBar.java @@ -130,12 +130,12 @@ public class GalleryActionBar implements ActionBar.OnNavigationListener { return null; } - public static ShareActionProvider initializeShareActionProvider(Menu menu) { + @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) + public static ShareActionProvider initializeShareActionProvider(Menu menu, + Context context) { MenuItem item = menu.findItem(R.id.action_share); - ShareActionProvider shareActionProvider = null; - if (item != null) { - shareActionProvider = (ShareActionProvider) item.getActionProvider(); - } + ShareActionProvider shareActionProvider = new ShareActionProvider(context); + item.setActionProvider(shareActionProvider); return shareActionProvider; } diff --git a/src/com/android/gallery3d/app/MovieActivity.java b/src/com/android/gallery3d/app/MovieActivity.java index aa55c9bdf..0a2475acb 100644 --- a/src/com/android/gallery3d/app/MovieActivity.java +++ b/src/com/android/gallery3d/app/MovieActivity.java @@ -167,26 +167,38 @@ public class MovieActivity extends Activity { @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); - getMenuInflater().inflate(R.menu.movie, menu); - ShareActionProvider provider = GalleryActionBar.initializeShareActionProvider(menu); // Document says EXTRA_STREAM should be a content: Uri // So, we only share the video if it's "content:". - if (provider != null && ContentResolver.SCHEME_CONTENT - .equals(mUri.getScheme())) { - Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType("video/*"); - intent.putExtra(Intent.EXTRA_STREAM, mUri); - provider.setShareIntent(intent); + if (ContentResolver.SCHEME_CONTENT.equals(mUri.getScheme())) { + initializeShareActionProvider(menu); + } else { + menu.findItem(R.id.action_share).setVisible(false); } - return true; } + @TargetApi(ApiHelper.VERSION_CODES.JELLY_BEAN) + private void initializeShareActionProvider(Menu menu) { + if (!ApiHelper.HAS_SHARE_ACTION_PROVIDER) return; + + ShareActionProvider provider = GalleryActionBar.initializeShareActionProvider( + menu, this); + provider.setShareIntent(createShareIntent()); + } + + private Intent createShareIntent() { + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType("video/*"); + intent.putExtra(Intent.EXTRA_STREAM, mUri); + return intent; + } + @Override public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { + int id = item.getItemId(); + if (id == android.R.id.home) { if (mTreatUpAsBack) { finish(); } else { @@ -194,6 +206,10 @@ public class MovieActivity extends Activity { finish(); } return true; + } else if (id == R.id.action_share) { + startActivity(Intent.createChooser(createShareIntent(), + getString(R.string.share))); + return true; } return false; } diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java index 678ba6daf..36a3f876f 100644 --- a/src/com/android/gallery3d/app/PhotoPage.java +++ b/src/com/android/gallery3d/app/PhotoPage.java @@ -120,7 +120,7 @@ public class PhotoPage extends ActivityState implements private MediaItem mCurrentPhoto = null; private MenuExecutor mMenuExecutor; private boolean mIsActive; - private ShareActionProvider mShareActionProvider; + private Object mShareActionProvider; // class ShareActionProvider private String mSetPathString; // This is the original mSetPathString before adding the camera preview item. private String mOriginalSetPathString; @@ -325,20 +325,34 @@ public class PhotoPage extends ActivityState implements } } + private Intent createShareIntent(Path path) { + DataManager manager = mActivity.getDataManager(); + Uri uri = manager.getContentUri(path); + int type = manager.getMediaType(path); + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType(MenuExecutor.getMimeType(type)); + intent.putExtra(Intent.EXTRA_STREAM, uri); + return intent; + } + private void updateShareURI(Path path) { - if (mShareActionProvider != null) { - DataManager manager = mActivity.getDataManager(); - int type = manager.getMediaType(path); - Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType(MenuExecutor.getMimeType(type)); - Uri uri = manager.getContentUri(path); - intent.putExtra(Intent.EXTRA_STREAM, uri); - mShareActionProvider.setShareIntent(intent); - setNfcBeamPushUris(new Uri[]{uri}); - mPendingSharePath = null; - } else { - // This happens when ActionBar is not created yet. - mPendingSharePath = path; + DataManager manager = mActivity.getDataManager(); + Uri uri = manager.getContentUri(path); + setNfcBeamPushUris(new Uri[]{uri}); + setShareActionProviderIntent(path); + } + + @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) + private void setShareActionProviderIntent(Path path) { + if (ApiHelper.HAS_SHARE_ACTION_PROVIDER) { + if (mShareActionProvider != null) { + Intent intent = createShareIntent(path); + ((ShareActionProvider) mShareActionProvider).setShareIntent(intent); + mPendingSharePath = null; + } else { + // This happens when ActionBar is not created yet. + mPendingSharePath = path; + } } } @@ -533,7 +547,11 @@ public class PhotoPage extends ActivityState implements protected boolean onCreateActionBar(Menu menu) { MenuInflater inflater = ((Activity) mActivity).getMenuInflater(); inflater.inflate(R.menu.photo, menu); - mShareActionProvider = GalleryActionBar.initializeShareActionProvider(menu); + + if (ApiHelper.HAS_SHARE_ACTION_PROVIDER) { + mShareActionProvider = GalleryActionBar.initializeShareActionProvider( + menu, mActivity.getAndroidContext()); + } if (mPendingSharePath != null) updateShareURI(mPendingSharePath); mMenu = menu; updateMenuOperations(); @@ -634,6 +652,12 @@ public class PhotoPage extends ActivityState implements mMenuExecutor.onMenuClicked(item, confirmMsg, new ImportCompleteListener(mActivity)); return true; + case R.id.action_share: + Activity activity = (Activity) mActivity; + Intent intent = createShareIntent(mCurrentPhoto.getPath()); + activity.startActivity(Intent.createChooser(intent, + activity.getString(R.string.share))); + return true; default : return false; } diff --git a/src/com/android/gallery3d/ui/ActionModeHandler.java b/src/com/android/gallery3d/ui/ActionModeHandler.java index 0b5cd54cd..12a0e89f4 100644 --- a/src/com/android/gallery3d/ui/ActionModeHandler.java +++ b/src/com/android/gallery3d/ui/ActionModeHandler.java @@ -70,7 +70,7 @@ public class ActionModeHandler implements private ActionModeListener mListener; private Future<?> mMenuTask; private final Handler mMainHandler; - private ShareActionProvider mShareActionProvider; + private Object mShareActionProvider; // class ShareActionProvider public ActionModeHandler( GalleryActivity activity, SelectionManager selectionManager) { @@ -166,21 +166,32 @@ public class ActionModeHandler implements public boolean onCreateActionMode(ActionMode mode, Menu menu) { MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.operation, menu); - - mShareActionProvider = GalleryActionBar.initializeShareActionProvider(menu); - OnShareTargetSelectedListener listener = new OnShareTargetSelectedListener() { - @Override - public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) { - mSelectionManager.leaveSelectionMode(); - return false; - } - }; - - mShareActionProvider.setOnShareTargetSelectedListener(listener); + initializeShareActionProvider(menu); mMenu = menu; return true; } + @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) + private void initializeShareActionProvider(Menu menu) { + if (ApiHelper.HAS_SHARE_ACTION_PROVIDER) { + mShareActionProvider = GalleryActionBar.initializeShareActionProvider(menu, + mActivity.getAndroidContext()); + OnShareTargetSelectedListener listener = new OnShareTargetSelectedListener() { + @Override + public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) { + mSelectionManager.leaveSelectionMode(); + return false; + } + }; + ((ShareActionProvider) mShareActionProvider).setOnShareTargetSelectedListener(listener); + } + } + + @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) + private void setShareActionProviderIntent(Intent intent) { + ((ShareActionProvider) mShareActionProvider).setShareIntent(intent); + } + @Override public void onDestroyActionMode(ActionMode mode) { mSelectionManager.leaveSelectionMode(); @@ -288,8 +299,9 @@ public class ActionModeHandler implements updateSelectionMenu(); // Disable share action until share intent is in good shape - final MenuItem item = mShareActionProvider != null ? - mMenu.findItem(R.id.action_share) : null; + final MenuItem item = (!ApiHelper.HAS_SHARE_ACTION_PROVIDER + || (mShareActionProvider != null)) + ? mMenu.findItem(R.id.action_share) : null; final boolean supportShare = item != null; if (supportShare) item.setEnabled(false); @@ -311,7 +323,11 @@ public class ActionModeHandler implements MenuExecutor.updateMenuOperation(mMenu, operation); if (supportShare) { item.setEnabled(true); - mShareActionProvider.setShareIntent(intent); + if (ApiHelper.HAS_SHARE_ACTION_PROVIDER) { + setShareActionProviderIntent(intent); + } else { + mMenuExecutor.setShareIntent(intent); + } } } } diff --git a/src/com/android/gallery3d/ui/MenuExecutor.java b/src/com/android/gallery3d/ui/MenuExecutor.java index aaf5d3974..2ff0327da 100644 --- a/src/com/android/gallery3d/ui/MenuExecutor.java +++ b/src/com/android/gallery3d/ui/MenuExecutor.java @@ -32,6 +32,7 @@ import android.view.MenuItem; import com.android.gallery3d.R; import com.android.gallery3d.app.CropImage; import com.android.gallery3d.app.GalleryActivity; +import com.android.gallery3d.common.ApiHelper; import com.android.gallery3d.common.Utils; import com.android.gallery3d.data.DataManager; import com.android.gallery3d.data.MediaItem; @@ -60,6 +61,7 @@ public class MenuExecutor { private Future<?> mTask; // wait the operation to finish when we want to stop it. private boolean mWaitOnStop; + private Intent mShareIntent; private final GalleryActivity mActivity; private final SelectionManager mSelectionManager; @@ -235,6 +237,14 @@ public class MenuExecutor { case R.id.action_import: title = R.string.Import; break; + case R.id.action_share: { + if (!ApiHelper.HAS_SHARE_ACTION_PROVIDER) { + Activity activity = (Activity) mActivity; + activity.startActivity(Intent.createChooser( + mShareIntent, activity.getString(R.string.share))); + } + return; + } default: return; } @@ -309,6 +319,10 @@ public class MenuExecutor { mWaitOnStop = waitOnStop; } + public void setShareIntent(Intent intent) { + mShareIntent = intent; + } + public static String getMimeType(int type) { switch (type) { case MediaObject.MEDIA_TYPE_IMAGE : |