diff options
author | Owen Lin <owenlin@google.com> | 2011-08-26 20:45:35 +0800 |
---|---|---|
committer | Owen Lin <owenlin@google.com> | 2011-08-26 20:45:35 +0800 |
commit | 799c8444584db9fc945454997669432c279e17ae (patch) | |
tree | a1f4b2702269188b2dd9197505aa88f69051ab3d /src/com/android/gallery3d/app/StateManager.java | |
parent | 11e7f198384fc18a624b27980fc65ef65fd3cbcb (diff) | |
download | android_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.java | 22 |
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(); |