From 76fd35ee902c59dd5e381edc1595550c5845e22f Mon Sep 17 00:00:00 2001 From: The Android Automerger Date: Tue, 30 Aug 2011 12:45:53 -0700 Subject: merge in ics-release history after reset to master --- src/com/android/gallery3d/app/ActivityState.java | 8 +++--- src/com/android/gallery3d/app/AlbumPage.java | 1 + src/com/android/gallery3d/app/AlbumSetPage.java | 29 ++++++++++++++-------- .../android/gallery3d/app/GalleryActionBar.java | 17 +++---------- src/com/android/gallery3d/app/PhotoPage.java | 11 ++------ .../gallery3d/gadget/WidgetDatabaseHelper.java | 3 +++ 6 files changed, 32 insertions(+), 37 deletions(-) diff --git a/src/com/android/gallery3d/app/ActivityState.java b/src/com/android/gallery3d/app/ActivityState.java index 9f90d7b3c..c8aa2150e 100644 --- a/src/com/android/gallery3d/app/ActivityState.java +++ b/src/com/android/gallery3d/app/ActivityState.java @@ -104,11 +104,11 @@ abstract public class ActivityState { if ((mFlags & FLAG_HIDE_STATUS_BAR) != 0) { WindowManager.LayoutParams params = ((Activity) mActivity).getWindow().getAttributes(); - params.systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE; + params.systemUiVisibility = View.STATUS_BAR_HIDDEN; ((Activity) mActivity).getWindow().setAttributes(params); } else { WindowManager.LayoutParams params = ((Activity) mActivity).getWindow().getAttributes(); - params.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE; + params.systemUiVisibility = View.STATUS_BAR_VISIBLE; ((Activity) mActivity).getWindow().setAttributes(params); } @@ -125,9 +125,7 @@ abstract public class ActivityState { } protected boolean onCreateActionBar(Menu menu) { - // TODO: we should return false if there is no menu to show - // this is a workaround for a bug in system - return true; + return false; } protected boolean onItemSelected(MenuItem item) { diff --git a/src/com/android/gallery3d/app/AlbumPage.java b/src/com/android/gallery3d/app/AlbumPage.java index 672c0da99..8bd1eacb9 100644 --- a/src/com/android/gallery3d/app/AlbumPage.java +++ b/src/com/android/gallery3d/app/AlbumPage.java @@ -54,6 +54,7 @@ import android.view.ActionMode; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.view.View.MeasureSpec; import android.widget.Toast; import java.util.Random; diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java index 6542be1d2..72eae55db 100644 --- a/src/com/android/gallery3d/app/AlbumSetPage.java +++ b/src/com/android/gallery3d/app/AlbumSetPage.java @@ -40,6 +40,7 @@ import com.android.gallery3d.ui.PositionRepository.Position; import com.android.gallery3d.ui.SelectionManager; import com.android.gallery3d.ui.SlotView; import com.android.gallery3d.ui.StaticBackground; +import com.android.gallery3d.ui.SynchronizedHandler; import com.android.gallery3d.util.GalleryUtils; import android.app.Activity; @@ -47,11 +48,13 @@ import android.content.Context; import android.content.Intent; import android.graphics.Rect; import android.os.Bundle; +import android.os.Message; import android.provider.MediaStore; import android.view.ActionMode; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.view.View.MeasureSpec; import android.widget.Toast; public class AlbumSetPage extends ActivityState implements @@ -63,8 +66,6 @@ public class AlbumSetPage extends ActivityState implements public static final String KEY_MEDIA_PATH = "media-path"; public static final String KEY_SET_TITLE = "set-title"; public static final String KEY_SET_SUBTITLE = "set-subtitle"; - public static final String KEY_SELECTED_TAB_TYPE = "selected-tab"; - private static final int DATA_CACHE_SIZE = 256; private static final int REQUEST_DO_ANIMATION = 1; private static final int MSG_GOTO_MANAGE_CACHE_PAGE = 1; @@ -98,6 +99,8 @@ public class AlbumSetPage extends ActivityState implements private float mY; private float mZ; + private SynchronizedHandler mHandler; + private GLView mRootPane = new GLView() { private float mMatrix[] = new float[16]; @@ -228,7 +231,6 @@ public class AlbumSetPage extends ActivityState implements String newPath = FilterUtils.switchClusterPath(basePath, clusterType); Bundle data = new Bundle(getData()); data.putString(AlbumSetPage.KEY_MEDIA_PATH, newPath); - data.putInt(KEY_SELECTED_TAB_TYPE, clusterType); mAlbumSetView.savePositions(PositionRepository.getInstance(mActivity)); mActivity.getStateManager().switchState(this, AlbumSetPage.class, data); } @@ -249,6 +251,18 @@ public class AlbumSetPage extends ActivityState implements @Override public void onCreate(Bundle data, Bundle restoreState) { + mHandler = new SynchronizedHandler(mActivity.getGLRoot()) { + @Override + public void handleMessage(Message message) { + Utils.assertTrue(message.what == MSG_GOTO_MANAGE_CACHE_PAGE); + Bundle data = new Bundle(); + String mediaPath = mActivity.getDataManager().getTopSetPath( + DataManager.INCLUDE_ALL); + data.putString(AlbumSetPage.KEY_MEDIA_PATH, mediaPath); + mActivity.getStateManager().startState(ManageCachePage.class, data); + } + }; + initializeViews(); initializeData(data); mGetContent = data.getBoolean(Gallery.KEY_GET_CONTENT, false); @@ -257,8 +271,7 @@ public class AlbumSetPage extends ActivityState implements mSubtitle = data.getString(AlbumSetPage.KEY_SET_SUBTITLE); mEyePosition = new EyePosition(mActivity.getAndroidContext(), this); mDetailsSource = new MyDetailsSource(); - mActivity.getGalleryActionBar().setSelectedTab(data.getInt( - AlbumSetPage.KEY_SELECTED_TAB_TYPE, FilterUtils.CLUSTER_BY_ALBUM)); + startTransition(); } @@ -419,11 +432,7 @@ public class AlbumSetPage extends ActivityState implements return true; } case R.id.action_manage_offline: { - Bundle data = new Bundle(); - String mediaPath = mActivity.getDataManager().getTopSetPath( - DataManager.INCLUDE_ALL); - data.putString(AlbumSetPage.KEY_MEDIA_PATH, mediaPath); - mActivity.getStateManager().startState(ManageCachePage.class, data); + mHandler.sendEmptyMessage(MSG_GOTO_MANAGE_CACHE_PAGE); return true; } case R.id.action_sync_picasa_albums: { diff --git a/src/com/android/gallery3d/app/GalleryActionBar.java b/src/com/android/gallery3d/app/GalleryActionBar.java index 03621a60a..db64828da 100644 --- a/src/com/android/gallery3d/app/GalleryActionBar.java +++ b/src/com/android/gallery3d/app/GalleryActionBar.java @@ -16,6 +16,8 @@ package com.android.gallery3d.app; +import java.util.ArrayList; + import com.android.gallery3d.R; import android.app.ActionBar; @@ -25,11 +27,11 @@ import android.app.AlertDialog; import android.app.FragmentTransaction; import android.content.Context; import android.content.DialogInterface; +import android.content.Intent; import android.view.Menu; import android.view.MenuItem; import android.widget.ShareActionProvider; - -import java.util.ArrayList; +import android.widget.ShareActionProvider.OnShareTargetSelectedListener; public class GalleryActionBar implements ActionBar.TabListener { private static final String TAG = "GalleryActionBar"; @@ -213,15 +215,4 @@ public class GalleryActionBar implements ActionBar.TabListener { @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } - - public boolean setSelectedTab(int type) { - for (int i = 0, n = sClusterItems.length; i < n; ++i) { - ActionItem item = sClusterItems[i]; - if (item.visible && item.action == type) { - mActionBar.selectTab(mActionBar.getTabAt(i)); - return true; - } - } - return false; - } } diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java index 421f15ca1..4fbffb55a 100644 --- a/src/com/android/gallery3d/app/PhotoPage.java +++ b/src/com/android/gallery3d/app/PhotoPage.java @@ -66,7 +66,6 @@ public class PhotoPage extends ActivityState private static final String TAG = "PhotoPage"; private static final int MSG_HIDE_BARS = 1; - private static final int HIDE_BARS_TIMEOUT = 3500; private static final int REQUEST_SLIDESHOW = 1; @@ -389,7 +388,8 @@ public class PhotoPage extends ActivityState switch (action) { case R.id.action_slideshow: { Bundle data = new Bundle(); - data.putString(SlideshowPage.KEY_SET_PATH, mMediaSet.getPath().toString()); + data.putString(SlideshowPage.KEY_SET_PATH, + mMediaSet.getPath().toString()); data.putInt(SlideshowPage.KEY_PHOTO_INDEX, currentIndex); data.putBoolean(SlideshowPage.KEY_REPEAT, true); mActivity.getStateManager().startStateForResult( @@ -562,24 +562,17 @@ public class PhotoPage extends ActivityState private class MyDetailsSource implements DetailsSource { private int mIndex; - - @Override public MediaDetails getDetails() { return mModel.getCurrentMediaItem().getDetails(); } - - @Override public int size() { return mMediaSet != null ? mMediaSet.getMediaItemCount() : 1; } - - @Override public int findIndex(int indexHint) { mIndex = indexHint; return indexHint; } - @Override public int getIndex() { return mIndex; } diff --git a/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java b/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java index 164878465..1d0754808 100644 --- a/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java +++ b/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java @@ -110,6 +110,7 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper { cursor.close(); } } else if (oldVersion == 3) { + Utils.debug("saveData of version: %s", oldVersion); Cursor cursor = db.query("photos", new String[] {FIELD_APPWIDGET_ID, FIELD_PHOTO_BLOB, FIELD_IMAGE_URI}, null, null, null, null, null); @@ -121,6 +122,8 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper { entry.widgetId = cursor.getInt(0); entry.imageData = cursor.getBlob(1); entry.imageUri = cursor.getString(2); + + Utils.debug("store widget[%s] - %s", entry.widgetId, entry.imageUri); data.add(entry); } } finally { -- cgit v1.2.3 From 28d81efb20707395ee5cc182c0a7a05a549e2f62 Mon Sep 17 00:00:00 2001 From: The Android Automerger Date: Tue, 30 Aug 2011 13:42:54 -0700 Subject: merge in ics-release history after reset to master --- src/com/android/gallery3d/app/ActivityState.java | 8 +++--- src/com/android/gallery3d/app/AlbumPage.java | 1 - src/com/android/gallery3d/app/AlbumSetPage.java | 29 ++++++++-------------- .../android/gallery3d/app/GalleryActionBar.java | 17 ++++++++++--- src/com/android/gallery3d/app/PhotoPage.java | 11 ++++++-- .../gallery3d/gadget/WidgetDatabaseHelper.java | 3 --- 6 files changed, 37 insertions(+), 32 deletions(-) diff --git a/src/com/android/gallery3d/app/ActivityState.java b/src/com/android/gallery3d/app/ActivityState.java index c8aa2150e..9f90d7b3c 100644 --- a/src/com/android/gallery3d/app/ActivityState.java +++ b/src/com/android/gallery3d/app/ActivityState.java @@ -104,11 +104,11 @@ abstract public class ActivityState { if ((mFlags & FLAG_HIDE_STATUS_BAR) != 0) { WindowManager.LayoutParams params = ((Activity) mActivity).getWindow().getAttributes(); - params.systemUiVisibility = View.STATUS_BAR_HIDDEN; + params.systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE; ((Activity) mActivity).getWindow().setAttributes(params); } else { WindowManager.LayoutParams params = ((Activity) mActivity).getWindow().getAttributes(); - params.systemUiVisibility = View.STATUS_BAR_VISIBLE; + params.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE; ((Activity) mActivity).getWindow().setAttributes(params); } @@ -125,7 +125,9 @@ abstract public class ActivityState { } protected boolean onCreateActionBar(Menu menu) { - return false; + // TODO: we should return false if there is no menu to show + // this is a workaround for a bug in system + return true; } protected boolean onItemSelected(MenuItem item) { diff --git a/src/com/android/gallery3d/app/AlbumPage.java b/src/com/android/gallery3d/app/AlbumPage.java index 8bd1eacb9..672c0da99 100644 --- a/src/com/android/gallery3d/app/AlbumPage.java +++ b/src/com/android/gallery3d/app/AlbumPage.java @@ -54,7 +54,6 @@ import android.view.ActionMode; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; -import android.view.View.MeasureSpec; import android.widget.Toast; import java.util.Random; diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java index 72eae55db..6542be1d2 100644 --- a/src/com/android/gallery3d/app/AlbumSetPage.java +++ b/src/com/android/gallery3d/app/AlbumSetPage.java @@ -40,7 +40,6 @@ import com.android.gallery3d.ui.PositionRepository.Position; import com.android.gallery3d.ui.SelectionManager; import com.android.gallery3d.ui.SlotView; import com.android.gallery3d.ui.StaticBackground; -import com.android.gallery3d.ui.SynchronizedHandler; import com.android.gallery3d.util.GalleryUtils; import android.app.Activity; @@ -48,13 +47,11 @@ import android.content.Context; import android.content.Intent; import android.graphics.Rect; import android.os.Bundle; -import android.os.Message; import android.provider.MediaStore; import android.view.ActionMode; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; -import android.view.View.MeasureSpec; import android.widget.Toast; public class AlbumSetPage extends ActivityState implements @@ -66,6 +63,8 @@ public class AlbumSetPage extends ActivityState implements public static final String KEY_MEDIA_PATH = "media-path"; public static final String KEY_SET_TITLE = "set-title"; public static final String KEY_SET_SUBTITLE = "set-subtitle"; + public static final String KEY_SELECTED_TAB_TYPE = "selected-tab"; + private static final int DATA_CACHE_SIZE = 256; private static final int REQUEST_DO_ANIMATION = 1; private static final int MSG_GOTO_MANAGE_CACHE_PAGE = 1; @@ -99,8 +98,6 @@ public class AlbumSetPage extends ActivityState implements private float mY; private float mZ; - private SynchronizedHandler mHandler; - private GLView mRootPane = new GLView() { private float mMatrix[] = new float[16]; @@ -231,6 +228,7 @@ public class AlbumSetPage extends ActivityState implements String newPath = FilterUtils.switchClusterPath(basePath, clusterType); Bundle data = new Bundle(getData()); data.putString(AlbumSetPage.KEY_MEDIA_PATH, newPath); + data.putInt(KEY_SELECTED_TAB_TYPE, clusterType); mAlbumSetView.savePositions(PositionRepository.getInstance(mActivity)); mActivity.getStateManager().switchState(this, AlbumSetPage.class, data); } @@ -251,18 +249,6 @@ public class AlbumSetPage extends ActivityState implements @Override public void onCreate(Bundle data, Bundle restoreState) { - mHandler = new SynchronizedHandler(mActivity.getGLRoot()) { - @Override - public void handleMessage(Message message) { - Utils.assertTrue(message.what == MSG_GOTO_MANAGE_CACHE_PAGE); - Bundle data = new Bundle(); - String mediaPath = mActivity.getDataManager().getTopSetPath( - DataManager.INCLUDE_ALL); - data.putString(AlbumSetPage.KEY_MEDIA_PATH, mediaPath); - mActivity.getStateManager().startState(ManageCachePage.class, data); - } - }; - initializeViews(); initializeData(data); mGetContent = data.getBoolean(Gallery.KEY_GET_CONTENT, false); @@ -271,7 +257,8 @@ public class AlbumSetPage extends ActivityState implements mSubtitle = data.getString(AlbumSetPage.KEY_SET_SUBTITLE); mEyePosition = new EyePosition(mActivity.getAndroidContext(), this); mDetailsSource = new MyDetailsSource(); - + mActivity.getGalleryActionBar().setSelectedTab(data.getInt( + AlbumSetPage.KEY_SELECTED_TAB_TYPE, FilterUtils.CLUSTER_BY_ALBUM)); startTransition(); } @@ -432,7 +419,11 @@ public class AlbumSetPage extends ActivityState implements return true; } case R.id.action_manage_offline: { - mHandler.sendEmptyMessage(MSG_GOTO_MANAGE_CACHE_PAGE); + Bundle data = new Bundle(); + String mediaPath = mActivity.getDataManager().getTopSetPath( + DataManager.INCLUDE_ALL); + data.putString(AlbumSetPage.KEY_MEDIA_PATH, mediaPath); + mActivity.getStateManager().startState(ManageCachePage.class, data); return true; } case R.id.action_sync_picasa_albums: { diff --git a/src/com/android/gallery3d/app/GalleryActionBar.java b/src/com/android/gallery3d/app/GalleryActionBar.java index db64828da..03621a60a 100644 --- a/src/com/android/gallery3d/app/GalleryActionBar.java +++ b/src/com/android/gallery3d/app/GalleryActionBar.java @@ -16,8 +16,6 @@ package com.android.gallery3d.app; -import java.util.ArrayList; - import com.android.gallery3d.R; import android.app.ActionBar; @@ -27,11 +25,11 @@ import android.app.AlertDialog; import android.app.FragmentTransaction; import android.content.Context; import android.content.DialogInterface; -import android.content.Intent; import android.view.Menu; import android.view.MenuItem; import android.widget.ShareActionProvider; -import android.widget.ShareActionProvider.OnShareTargetSelectedListener; + +import java.util.ArrayList; public class GalleryActionBar implements ActionBar.TabListener { private static final String TAG = "GalleryActionBar"; @@ -215,4 +213,15 @@ public class GalleryActionBar implements ActionBar.TabListener { @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } + + public boolean setSelectedTab(int type) { + for (int i = 0, n = sClusterItems.length; i < n; ++i) { + ActionItem item = sClusterItems[i]; + if (item.visible && item.action == type) { + mActionBar.selectTab(mActionBar.getTabAt(i)); + return true; + } + } + return false; + } } diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java index 4fbffb55a..421f15ca1 100644 --- a/src/com/android/gallery3d/app/PhotoPage.java +++ b/src/com/android/gallery3d/app/PhotoPage.java @@ -66,6 +66,7 @@ public class PhotoPage extends ActivityState private static final String TAG = "PhotoPage"; private static final int MSG_HIDE_BARS = 1; + private static final int HIDE_BARS_TIMEOUT = 3500; private static final int REQUEST_SLIDESHOW = 1; @@ -388,8 +389,7 @@ public class PhotoPage extends ActivityState switch (action) { case R.id.action_slideshow: { Bundle data = new Bundle(); - data.putString(SlideshowPage.KEY_SET_PATH, - mMediaSet.getPath().toString()); + data.putString(SlideshowPage.KEY_SET_PATH, mMediaSet.getPath().toString()); data.putInt(SlideshowPage.KEY_PHOTO_INDEX, currentIndex); data.putBoolean(SlideshowPage.KEY_REPEAT, true); mActivity.getStateManager().startStateForResult( @@ -562,17 +562,24 @@ public class PhotoPage extends ActivityState private class MyDetailsSource implements DetailsSource { private int mIndex; + + @Override public MediaDetails getDetails() { return mModel.getCurrentMediaItem().getDetails(); } + + @Override public int size() { return mMediaSet != null ? mMediaSet.getMediaItemCount() : 1; } + + @Override public int findIndex(int indexHint) { mIndex = indexHint; return indexHint; } + @Override public int getIndex() { return mIndex; } diff --git a/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java b/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java index 1d0754808..164878465 100644 --- a/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java +++ b/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java @@ -110,7 +110,6 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper { cursor.close(); } } else if (oldVersion == 3) { - Utils.debug("saveData of version: %s", oldVersion); Cursor cursor = db.query("photos", new String[] {FIELD_APPWIDGET_ID, FIELD_PHOTO_BLOB, FIELD_IMAGE_URI}, null, null, null, null, null); @@ -122,8 +121,6 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper { entry.widgetId = cursor.getInt(0); entry.imageData = cursor.getBlob(1); entry.imageUri = cursor.getString(2); - - Utils.debug("store widget[%s] - %s", entry.widgetId, entry.imageUri); data.add(entry); } } finally { -- cgit v1.2.3 From ce73c4c14e659876c1943ba933e404292166be1a Mon Sep 17 00:00:00 2001 From: Ray Chen Date: Mon, 29 Aug 2011 18:39:55 +0800 Subject: Fix 4975579 PTP: Unable to load the thumbnails while connected to camera There's a deadlock in threadpool. The fix has been verified. Change-Id: I000527f55fc2a3777bd4bb06817a9967b2f50488 --- src/com/android/gallery3d/data/MtpImage.java | 11 ++--------- src/com/android/gallery3d/ui/ActionModeHandler.java | 20 +++++++++++--------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/com/android/gallery3d/data/MtpImage.java b/src/com/android/gallery3d/data/MtpImage.java index e0e5481d9..218f70483 100644 --- a/src/com/android/gallery3d/data/MtpImage.java +++ b/src/com/android/gallery3d/data/MtpImage.java @@ -78,8 +78,8 @@ public class MtpImage extends MediaItem { public Job requestImage(int type) { return new Job() { public Bitmap run(JobContext jc) { - GetThumbnailBytes job = new GetThumbnailBytes(); - byte[] thumbnail = mThreadPool.submit(job).get(); + byte[] thumbnail = mMtpContext.getMtpClient().getThumbnail( + UsbDevice.getDeviceName(mDeviceId), mObjectId); if (thumbnail == null) { Log.w(TAG, "decoding thumbnail failed"); return null; @@ -116,13 +116,6 @@ public class MtpImage extends MediaItem { return SUPPORT_FULL_IMAGE | SUPPORT_IMPORT; } - private class GetThumbnailBytes implements Job { - public byte[] run(JobContext jc) { - return mMtpContext.getMtpClient().getThumbnail( - UsbDevice.getDeviceName(mDeviceId), mObjectId); - } - } - public void updateContent(MtpObjectInfo info) { if (mObjectId != info.getObjectHandle() || mDateTaken != info.getDateCreated()) { mObjectId = info.getObjectHandle(); diff --git a/src/com/android/gallery3d/ui/ActionModeHandler.java b/src/com/android/gallery3d/ui/ActionModeHandler.java index 493c7c5b2..fbe582523 100644 --- a/src/com/android/gallery3d/ui/ActionModeHandler.java +++ b/src/com/android/gallery3d/ui/ActionModeHandler.java @@ -188,16 +188,18 @@ public class ActionModeHandler implements ActionMode.Callback { operation &= SUPPORT_MULTIPLE_MASK; } - + final int size = uris.size(); Log.v(TAG, "Sharing intent MIME type=" + mimeType + ", uri size = "+ uris.size()); - if (uris.size() > 1) { - intent.setAction(Intent.ACTION_SEND_MULTIPLE).setType(mimeType); - intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); - } else { - intent.setAction(Intent.ACTION_SEND).setType(mimeType); - intent.putExtra(Intent.EXTRA_STREAM, uris.get(0)); + if (size > 0) { + if (size > 1) { + intent.setAction(Intent.ACTION_SEND_MULTIPLE).setType(mimeType); + intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); + } else { + intent.setAction(Intent.ACTION_SEND).setType(mimeType); + intent.putExtra(Intent.EXTRA_STREAM, uris.get(0)); + } + intent.setType(mimeType); } - intent.setType(mimeType); final int supportedOperation = operation; @@ -207,7 +209,7 @@ public class ActionModeHandler implements ActionMode.Callback { mMenuTask = null; MenuExecutor.updateMenuOperation(mMenu, supportedOperation); - if (mShareActionProvider != null) { + if (mShareActionProvider != null && size > 0) { Log.v(TAG, "Sharing intent is ready: action = " + intent.getAction()); mShareActionProvider.setShareIntent(intent); } -- cgit v1.2.3 From 6b5f59d91844d5a98af9b92204526cc0b3b4860c Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Tue, 30 Aug 2011 11:33:24 -0700 Subject: bug #5234237: fix NPE in Gallery - mActivity.getGalleryActionBar() can return null, check for null before using it. Change-Id: Ib84d5d56e51e6098adee9323c5e8d5c78f9a76e8 --- src/com/android/gallery3d/app/AlbumSetPage.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java index 6542be1d2..958f9b21d 100644 --- a/src/com/android/gallery3d/app/AlbumSetPage.java +++ b/src/com/android/gallery3d/app/AlbumSetPage.java @@ -257,8 +257,11 @@ public class AlbumSetPage extends ActivityState implements mSubtitle = data.getString(AlbumSetPage.KEY_SET_SUBTITLE); mEyePosition = new EyePosition(mActivity.getAndroidContext(), this); mDetailsSource = new MyDetailsSource(); - mActivity.getGalleryActionBar().setSelectedTab(data.getInt( - AlbumSetPage.KEY_SELECTED_TAB_TYPE, FilterUtils.CLUSTER_BY_ALBUM)); + GalleryActionBar actionBar = mActivity.getGalleryActionBar(); + if (actionBar != null) { + actionBar.setSelectedTab(data.getInt( + AlbumSetPage.KEY_SELECTED_TAB_TYPE, FilterUtils.CLUSTER_BY_ALBUM)); + } startTransition(); } -- cgit v1.2.3 From ed47faab170424a874de90dfd0f21969be96b974 Mon Sep 17 00:00:00 2001 From: Ray Chen Date: Thu, 3 Nov 2011 15:47:38 +0800 Subject: Fix 5556160 Crash in gallery after playing slideshow Crespo IML33B. Change-Id: Ia3de43eae5d96c9f1674dd1ccb01dc004612bda9 --- src/com/android/gallery3d/app/SlideshowPage.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/android/gallery3d/app/SlideshowPage.java b/src/com/android/gallery3d/app/SlideshowPage.java index 629bfd796..938785e9e 100644 --- a/src/com/android/gallery3d/app/SlideshowPage.java +++ b/src/com/android/gallery3d/app/SlideshowPage.java @@ -203,7 +203,8 @@ public class SlideshowPage extends ActivityState { setStateResult(Activity.RESULT_OK, mResultIntent.putExtra(KEY_PHOTO_INDEX, 0)); } else { int index = data.getInt(KEY_PHOTO_INDEX); - Path path = Path.fromString(data.getString(KEY_ITEM_PATH)); + String itemPath = data.getString(KEY_ITEM_PATH); + Path path = itemPath != null ? Path.fromString(itemPath) : null; boolean repeat = data.getBoolean(KEY_REPEAT); mModel = new SlideshowDataAdapter(mActivity, new SequentialSource(mediaSet, repeat), index, path); -- cgit v1.2.3