summaryrefslogtreecommitdiffstats
path: root/photoviewer
diff options
context:
space:
mode:
Diffstat (limited to 'photoviewer')
-rw-r--r--photoviewer/src/com/android/ex/photo/Intents.java18
-rw-r--r--photoviewer/src/com/android/ex/photo/PhotoViewActivity.java20
2 files changed, 37 insertions, 1 deletions
diff --git a/photoviewer/src/com/android/ex/photo/Intents.java b/photoviewer/src/com/android/ex/photo/Intents.java
index e1e77d3..24c48fe 100644
--- a/photoviewer/src/com/android/ex/photo/Intents.java
+++ b/photoviewer/src/com/android/ex/photo/Intents.java
@@ -29,7 +29,7 @@ import com.android.ex.photo.fragments.PhotoViewFragment;
public class Intents {
// Intent extras
public static final String EXTRA_PHOTO_INDEX = "photo_index";
- public static final String EXTRA_PHOTO_ID = "photo_id";
+ public static final String EXTRA_INITIAL_PHOTO_URI = "initial_photo_uri";
public static final String EXTRA_PHOTOS_URI = "photos_uri";
public static final String EXTRA_RESOLVED_PHOTO_URI = "resolved_photo_uri";
public static final String EXTRA_PROJECTION = "projection";
@@ -68,6 +68,8 @@ public class Intents {
/** The index of the photo to show */
private Integer mPhotoIndex;
+ /** The URI of the initial photo to show */
+ private String mInitialPhotoUri;
/** The URI of the group of photos to display */
private String mPhotosUri;
/** The URL of the photo to display */
@@ -89,6 +91,12 @@ public class Intents {
return this;
}
+ /** Sets the initial photo URI */
+ public PhotoViewIntentBuilder setInitialPhotoUri(String initialPhotoUri) {
+ mInitialPhotoUri = initialPhotoUri;
+ return this;
+ }
+
/** Sets the photos URI */
public PhotoViewIntentBuilder setPhotosUri(String photosUri) {
mPhotosUri = photosUri;
@@ -137,6 +145,14 @@ public class Intents {
mIntent.putExtra(EXTRA_PHOTO_INDEX, (int) mPhotoIndex);
}
+ if (mInitialPhotoUri != null) {
+ mIntent.putExtra(EXTRA_INITIAL_PHOTO_URI, mInitialPhotoUri);
+ }
+ if (mInitialPhotoUri != null && mPhotoIndex != null) {
+ throw new IllegalStateException(
+ "specified both photo index and photo uri");
+ }
+
if (mPhotosUri != null) {
mIntent.putExtra(EXTRA_PHOTOS_URI, mPhotosUri);
}
diff --git a/photoviewer/src/com/android/ex/photo/PhotoViewActivity.java b/photoviewer/src/com/android/ex/photo/PhotoViewActivity.java
index 5e45f5e..30017da 100644
--- a/photoviewer/src/com/android/ex/photo/PhotoViewActivity.java
+++ b/photoviewer/src/com/android/ex/photo/PhotoViewActivity.java
@@ -31,6 +31,7 @@ import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager.OnPageChangeListener;
+import android.text.TextUtils;
import android.view.MenuItem;
import android.view.View;
@@ -112,6 +113,8 @@ public class PhotoViewActivity extends Activity implements
/** The URI of the photos we're viewing; may be {@code null} */
private String mPhotosUri;
+ /** The URI of the photo currently viewed photo */
+ private String mInitialPhotoUri;
/** The index of the currently viewed photo */
private int mPhotoIndex;
/** The query projection to use; may be {@code null} */
@@ -179,6 +182,9 @@ public class PhotoViewActivity extends Activity implements
if (mIntent.hasExtra(Intents.EXTRA_PHOTO_INDEX) && currentItem < 0) {
currentItem = mIntent.getIntExtra(Intents.EXTRA_PHOTO_INDEX, -1);
}
+ if (mIntent.hasExtra(Intents.EXTRA_INITIAL_PHOTO_URI) && currentItem < 0) {
+ mInitialPhotoUri = mIntent.getStringExtra(Intents.EXTRA_INITIAL_PHOTO_URI);
+ }
// Set the max initial scale, defaulting to 1x
mMaxInitialScale = mIntent.getFloatExtra(Intents.EXTRA_MAX_INITIAL_SCALE, 1.0f);
@@ -313,6 +319,20 @@ public class PhotoViewActivity extends Activity implements
} else {
mAlbumCount = data.getCount();
+ if (mInitialPhotoUri != null) {
+ int index = 0;
+ int uriIndex = data.getColumnIndex(PhotoContract.PhotoViewColumns.URI);
+ while (data.moveToNext()) {
+ String uri = data.getString(uriIndex);
+ if (TextUtils.equals(uri, mInitialPhotoUri)) {
+ mInitialPhotoUri = null;
+ mPhotoIndex = index;
+ break;
+ }
+ index++;
+ }
+ }
+
// We're paused; don't do anything now, we'll get re-invoked
// when the activity becomes active again
// TODO(pwestbro): This shouldn't be necessary, as the loader manager should