summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/app/StateManager.java
diff options
context:
space:
mode:
authorOwen Lin <owenlin@google.com>2011-08-26 20:45:35 +0800
committerOwen Lin <owenlin@google.com>2011-08-26 20:45:35 +0800
commit799c8444584db9fc945454997669432c279e17ae (patch)
treea1f4b2702269188b2dd9197505aa88f69051ab3d /src/com/android/gallery3d/app/StateManager.java
parent11e7f198384fc18a624b27980fc65ef65fd3cbcb (diff)
downloadandroid_packages_apps_Snap-799c8444584db9fc945454997669432c279e17ae.tar.gz
android_packages_apps_Snap-799c8444584db9fc945454997669432c279e17ae.tar.bz2
android_packages_apps_Snap-799c8444584db9fc945454997669432c279e17ae.zip
Launch Gallery from review intent.
Change-Id: Iaa2e9bdfde3ac6566dd65464ece82f4a5ced6831 fix: 3462852
Diffstat (limited to 'src/com/android/gallery3d/app/StateManager.java')
-rw-r--r--src/com/android/gallery3d/app/StateManager.java22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/com/android/gallery3d/app/StateManager.java b/src/com/android/gallery3d/app/StateManager.java
index b551f693a..caa6e7b58 100644
--- a/src/com/android/gallery3d/app/StateManager.java
+++ b/src/com/android/gallery3d/app/StateManager.java
@@ -36,10 +36,12 @@ public class StateManager {
private static final String KEY_DATA = "data";
private static final String KEY_STATE = "bundle";
private static final String KEY_CLASS = "class";
+ private static final String KEY_LAUNCH_GALLERY_ON_TOP = "launch-gallery-on-top";
private GalleryActivity mContext;
private Stack<StateEntry> mStack = new Stack<StateEntry>();
private ActivityState.ResultEntry mResult;
+ private boolean mLaunchGalleryOnTop = false;
public StateManager(GalleryActivity context) {
mContext = context;
@@ -65,6 +67,10 @@ public class StateManager {
if (mIsResumed) state.resume();
}
+ public void setLaunchGalleryOnTop(boolean enabled) {
+ mLaunchGalleryOnTop = enabled;
+ }
+
public void startStateForResult(Class<? extends ActivityState> klass,
int requestCode, Bundle data) {
Log.v(TAG, "startStateForResult " + klass + ", " + requestCode);
@@ -122,8 +128,15 @@ public class StateManager {
public boolean itemSelected(MenuItem item) {
if (!mStack.isEmpty()) {
- if (mStack.size() > 1 && item.getItemId() == android.R.id.home) {
- getTopState().onBackPressed();
+ if (item.getItemId() == android.R.id.home) {
+ if (mStack.size() > 1) {
+ getTopState().onBackPressed();
+ } else if (mLaunchGalleryOnTop) {
+ Activity activity = (Activity) mContext;
+ Intent intent = new Intent(activity, Gallery.class)
+ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ ((Activity) mContext).startActivity(intent);
+ }
return true;
} else {
return getTopState().onItemSelected(item);
@@ -210,8 +223,8 @@ public class StateManager {
@SuppressWarnings("unchecked")
public void restoreFromState(Bundle inState) {
Log.v(TAG, "restoreFromState");
+ mLaunchGalleryOnTop = inState.getBoolean(KEY_LAUNCH_GALLERY_ON_TOP, false);
Parcelable list[] = inState.getParcelableArray(KEY_MAIN);
-
for (Parcelable parcelable : list) {
Bundle bundle = (Bundle) parcelable;
Class<? extends ActivityState> klass =
@@ -235,8 +248,9 @@ public class StateManager {
public void saveState(Bundle outState) {
Log.v(TAG, "saveState");
- Parcelable list[] = new Parcelable[mStack.size()];
+ outState.putBoolean(KEY_LAUNCH_GALLERY_ON_TOP, mLaunchGalleryOnTop);
+ Parcelable list[] = new Parcelable[mStack.size()];
int i = 0;
for (StateEntry entry : mStack) {
Bundle bundle = new Bundle();