summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gallerycommon/src/com/android/gallery3d/common/ApiHelper.java4
-rw-r--r--src/com/android/gallery3d/app/GalleryActionBar.java20
-rw-r--r--src/com/android/gallery3d/app/PhotoPage.java32
-rw-r--r--src/com/android/gallery3d/exif/ExifData.java13
-rw-r--r--src/com/android/gallery3d/exif/ExifParser.java7
-rw-r--r--src/com/android/gallery3d/exif/ExifReader.java2
-rw-r--r--src/com/android/gallery3d/exif/IfdData.java14
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