diff options
-rw-r--r-- | gallerycommon/src/com/android/gallery3d/common/ApiHelper.java | 4 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/GalleryActionBar.java | 20 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/PhotoPage.java | 32 | ||||
-rw-r--r-- | src/com/android/gallery3d/exif/ExifData.java | 13 | ||||
-rw-r--r-- | src/com/android/gallery3d/exif/ExifParser.java | 7 | ||||
-rw-r--r-- | src/com/android/gallery3d/exif/ExifReader.java | 2 | ||||
-rw-r--r-- | src/com/android/gallery3d/exif/IfdData.java | 14 |
7 files changed, 62 insertions, 30 deletions
diff --git a/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java b/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java index 402424123..ca778365c 100644 --- a/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java +++ b/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java @@ -106,8 +106,8 @@ public class ApiHelper { public static final boolean HAS_MEDIA_ACTION_SOUND = Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN; - public static final boolean HAS_PANORAMA = - Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; + public static final boolean HAS_OLD_PANORAMA = + Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH; public static final boolean HAS_TIME_LAPSE_RECORDING = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; diff --git a/src/com/android/gallery3d/app/GalleryActionBar.java b/src/com/android/gallery3d/app/GalleryActionBar.java index 0f7579e60..0aac60e77 100644 --- a/src/com/android/gallery3d/app/GalleryActionBar.java +++ b/src/com/android/gallery3d/app/GalleryActionBar.java @@ -298,27 +298,27 @@ public class GalleryActionBar implements OnNavigationListener { private Menu mActionBarMenu; private MenuItem mShareMenuItem; + private Intent mShareIntent; public void createActionBarMenu(int menuRes, Menu menu) { mActivity.getSupportMenuInflater().inflate(menuRes, menu); mActionBarMenu = menu; mShareMenuItem = menu.findItem(R.id.action_share); + if (mShareMenuItem != null) { + ((ShareActionProvider) mShareMenuItem.getActionProvider()) + .setShareIntent(mShareIntent); + } } public Menu getMenu() { return mActionBarMenu; } - public boolean hasShareMenuItem() { - return mShareMenuItem != null; - } - public void setShareIntent(Intent shareIntent) { - ((ShareActionProvider) mShareMenuItem.getActionProvider()) - .setShareIntent(shareIntent); - } - - public MenuItem findMenuItem(int itemId) { - return mActionBarMenu.findItem(itemId); + mShareIntent = shareIntent; + if (mShareMenuItem != null) { + ((ShareActionProvider) mShareMenuItem.getActionProvider()) + .setShareIntent(shareIntent); + } } } diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java index b50f0b762..71f886129 100644 --- a/src/com/android/gallery3d/app/PhotoPage.java +++ b/src/com/android/gallery3d/app/PhotoPage.java @@ -53,13 +53,13 @@ import com.android.gallery3d.data.SnailItem; import com.android.gallery3d.data.SnailSource; import com.android.gallery3d.picasasource.PicasaSource; import com.android.gallery3d.ui.AnimationTime; +import com.android.gallery3d.ui.BitmapScreenNail; import com.android.gallery3d.ui.DetailsHelper; import com.android.gallery3d.ui.DetailsHelper.CloseListener; import com.android.gallery3d.ui.DetailsHelper.DetailsSource; import com.android.gallery3d.ui.GLCanvas; import com.android.gallery3d.ui.GLRoot; import com.android.gallery3d.ui.GLRoot.OnGLIdleListener; -import com.android.gallery3d.ui.BitmapScreenNail; import com.android.gallery3d.ui.GLView; import com.android.gallery3d.ui.ImportCompleteListener; import com.android.gallery3d.ui.MenuExecutor; @@ -108,7 +108,6 @@ public class PhotoPage extends ActivityState implements private PhotoPage.Model mModel; private DetailsHelper mDetailsHelper; private boolean mShowDetails; - private Path mPendingSharePath; // mMediaSet could be null if there is no KEY_MEDIA_SET_PATH supplied. // E.g., viewing a photo in gmail attachment @@ -377,7 +376,7 @@ public class PhotoPage extends ActivityState implements @TargetApi(ApiHelper.VERSION_CODES.JELLY_BEAN) private void setNfcBeamPushUris(Uri[] uris) { if (mNfcAdapter != null && ApiHelper.HAS_SET_BEAM_PUSH_URIS) { - mNfcAdapter.setBeamPushUris(uris, (Activity)mActivity); + mNfcAdapter.setBeamPushUris(uris, mActivity); } } @@ -393,16 +392,10 @@ public class PhotoPage extends ActivityState implements } private void updateShareURI(Path path) { - if (mActionBar.hasShareMenuItem()) { - DataManager manager = mActivity.getDataManager(); - Uri uri = manager.getContentUri(path); - mActionBar.setShareIntent(createShareIntent(path)); - 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); + mActionBar.setShareIntent(createShareIntent(path)); + setNfcBeamPushUris(new Uri[]{uri}); } private void updateCurrentPhoto(MediaItem photo) { @@ -432,16 +425,22 @@ public class PhotoPage extends ActivityState implements } private void updateMenuOperations() { - MenuItem item = mActionBar.findMenuItem(R.id.action_slideshow); + Menu menu = mActionBar.getMenu(); + + // it could be null if onCreateActionBar has not been called yet + if (menu == null) return; + + MenuItem item = menu.findItem(R.id.action_slideshow); item.setVisible((mSecureAlbum == null) && canDoSlideShow()); if (mCurrentPhoto == null) return; + int supportedOperations = mCurrentPhoto.getSupportedOperations(); if (mSecureAlbum != null) { - supportedOperations = supportedOperations & MediaObject.SUPPORT_DELETE; + supportedOperations &= MediaObject.SUPPORT_DELETE; } else if (!GalleryUtils.isEditorAvailable(mActivity, "image/*")) { supportedOperations &= ~MediaObject.SUPPORT_EDIT; } - MenuExecutor.updateMenuOperation(mActionBar.getMenu(), supportedOperations); + MenuExecutor.updateMenuOperation(menu, supportedOperations); } private boolean canDoSlideShow() { @@ -600,7 +599,6 @@ public class PhotoPage extends ActivityState implements @Override protected boolean onCreateActionBar(Menu menu) { mActionBar.createActionBarMenu(R.menu.photo, menu); - if (mPendingSharePath != null) updateShareURI(mPendingSharePath); updateMenuOperations(); updateTitle(); return true; diff --git a/src/com/android/gallery3d/exif/ExifData.java b/src/com/android/gallery3d/exif/ExifData.java index 5b0e3d8e4..14d482221 100644 --- a/src/com/android/gallery3d/exif/ExifData.java +++ b/src/com/android/gallery3d/exif/ExifData.java @@ -16,6 +16,7 @@ package com.android.gallery3d.exif; +import java.nio.ByteOrder; import java.util.ArrayList; /** @@ -28,6 +29,11 @@ public class ExifData { private final IfdData[] mIfdDatas = new IfdData[IfdId.TYPE_IFD_COUNT]; private byte[] mThumbnail; private ArrayList<byte[]> mStripBytes = new ArrayList<byte[]>(); + private final ByteOrder mByteOrder; + + public ExifData(ByteOrder order) { + mByteOrder = order; + } /** * Gets the IFD data of the specified IFD. @@ -101,4 +107,11 @@ public class ExifData { public byte[] getStrip(int index) { return mStripBytes.get(index); } + + /** + * Gets the byte order. + */ + public ByteOrder getByteOrder() { + return mByteOrder; + } }
\ No newline at end of file diff --git a/src/com/android/gallery3d/exif/ExifParser.java b/src/com/android/gallery3d/exif/ExifParser.java index bd8a97dac..268c989b0 100644 --- a/src/com/android/gallery3d/exif/ExifParser.java +++ b/src/com/android/gallery3d/exif/ExifParser.java @@ -713,4 +713,11 @@ public class ExifParser { this.isRequested = isRequireByUser; } } + + /** + * Gets the byte order of the current InputStream. + */ + public ByteOrder getByteOrder() { + return mTiffStream.getByteOrder(); + } }
\ No newline at end of file diff --git a/src/com/android/gallery3d/exif/ExifReader.java b/src/com/android/gallery3d/exif/ExifReader.java index c259461f2..d8083b2dd 100644 --- a/src/com/android/gallery3d/exif/ExifReader.java +++ b/src/com/android/gallery3d/exif/ExifReader.java @@ -31,7 +31,7 @@ public class ExifReader { public ExifData read(InputStream inputStream) throws ExifInvalidFormatException, IOException { ExifParser parser = ExifParser.parse(inputStream); - ExifData exifData = new ExifData(); + ExifData exifData = new ExifData(parser.getByteOrder()); int event = parser.next(); while (event != ExifParser.EVENT_END) { diff --git a/src/com/android/gallery3d/exif/IfdData.java b/src/com/android/gallery3d/exif/IfdData.java index 4747c3cce..41093617f 100644 --- a/src/com/android/gallery3d/exif/IfdData.java +++ b/src/com/android/gallery3d/exif/IfdData.java @@ -29,6 +29,7 @@ public class IfdData { private final int mIfdId; private final Map<Short, ExifTag> mExifTags = new HashMap<Short, ExifTag>(); + private int mOffsetToNextIfd = 0; /** * Creates an IfdData with given IFD ID. @@ -76,4 +77,17 @@ public class IfdData { public void setTag(ExifTag tag) { mExifTags.put(tag.getTagId(), tag); } + /** + * Sets the offset of next IFD. + */ + void setOffsetToNextIfd(int offset) { + mOffsetToNextIfd = offset; + } + + /** + * Gets the offset of next IFD. + */ + int getOffsetToNextIfd() { + return mOffsetToNextIfd; + } }
\ No newline at end of file |