ActivityState.java revision bcb427870043b12d4a1a454c08a088933d0eaf23
1f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/* 2f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Copyright (C) 2010 The Android Open Source Project 3f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 4f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 5f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * you may not use this file except in compliance with the License. 6f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * You may obtain a copy of the License at 7f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 8f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * http://www.apache.org/licenses/LICENSE-2.0 9f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 10f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Unless required by applicable law or agreed to in writing, software 11f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * distributed under the License is distributed on an "AS IS" BASIS, 12f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * See the License for the specific language governing permissions and 14f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * limitations under the License. 15f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin */ 16f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 17f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpackage com.android.gallery3d.app; 18f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 19f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.app.Activity; 208e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.content.BroadcastReceiver; 218e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.content.Context; 228e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.content.Intent; 238e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.content.IntentFilter; 248e565703e8d482421714383a8ad40a67929ce2daOwen Linimport android.content.res.Configuration; 258e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.os.BatteryManager; 26f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.os.Bundle; 27bcb427870043b12d4a1a454c08a088933d0eaf23Bobby Georgescuimport android.view.HapticFeedbackConstants; 288e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.view.Window; 29f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.view.WindowManager; 30f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 31372152961edd8feada0ae6478c91ba6b2565191dJohn Reckimport com.actionbarsherlock.app.ActionBar; 32372152961edd8feada0ae6478c91ba6b2565191dJohn Reckimport com.actionbarsherlock.app.SherlockActivity; 33372152961edd8feada0ae6478c91ba6b2565191dJohn Reckimport com.actionbarsherlock.view.Menu; 34372152961edd8feada0ae6478c91ba6b2565191dJohn Reckimport com.actionbarsherlock.view.MenuInflater; 35372152961edd8feada0ae6478c91ba6b2565191dJohn Reckimport com.actionbarsherlock.view.MenuItem; 36915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescuimport com.android.gallery3d.R; 374831c7494373c360062a7becac820eba3bc39287Bobby Georgescuimport com.android.gallery3d.anim.StateTransitionAnimation; 38a9bd72c2efc7f7c26c60083d8f00380e60caf94eRay Chenimport com.android.gallery3d.ui.GLView; 395585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescuimport com.android.gallery3d.ui.PreparePageFadeoutTexture; 405585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescuimport com.android.gallery3d.ui.RawTexture; 41915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescuimport com.android.gallery3d.util.GalleryUtils; 42a9bd72c2efc7f7c26c60083d8f00380e60caf94eRay Chen 43f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linabstract public class ActivityState { 44d83f5f227315cccfe3c23db90c93b5fd7be20597Yuli Huang protected static final int FLAG_HIDE_ACTION_BAR = 1; 45d83f5f227315cccfe3c23db90c93b5fd7be20597Yuli Huang protected static final int FLAG_HIDE_STATUS_BAR = 2; 46afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang protected static final int FLAG_SCREEN_ON_WHEN_PLUGGED = 4; 47afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang protected static final int FLAG_SCREEN_ON_ALWAYS = 8; 48efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li protected static final int FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 16; 49efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li protected static final int FLAG_SHOW_WHEN_LOCKED = 32; 50f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 51b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin protected AbstractGalleryActivity mActivity; 52f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected Bundle mData; 53f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected int mFlags; 54f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 55f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected ResultEntry mReceivedResults; 56f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected ResultEntry mResult; 57f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 58f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected static class ResultEntry { 59f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int requestCode; 60f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int resultCode = Activity.RESULT_CANCELED; 61f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public Intent resultData; 62f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 63f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 6457cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan private boolean mDestroyed = false; 658e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler private boolean mPlugged = false; 66616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin boolean mIsFinishing = false; 6757cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan 685585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu private static final String KEY_TRANSITION_IN = "transition-in"; 695585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu 7026e119cebe732582df086ff56ec564d2989042fdBobby Georgescu private StateTransitionAnimation.Transition mNextTransition = 7126e119cebe732582df086ff56ec564d2989042fdBobby Georgescu StateTransitionAnimation.Transition.None; 724831c7494373c360062a7becac820eba3bc39287Bobby Georgescu private StateTransitionAnimation mIntroAnimation; 735585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu private GLView mContentPane; 745585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu 75f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected ActivityState() { 76f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 77f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 78f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void setContentPane(GLView content) { 795585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mContentPane = content; 8026e119cebe732582df086ff56ec564d2989042fdBobby Georgescu if (mIntroAnimation != null) { 814831c7494373c360062a7becac820eba3bc39287Bobby Georgescu mContentPane.setIntroAnimation(mIntroAnimation); 824831c7494373c360062a7becac820eba3bc39287Bobby Georgescu mIntroAnimation = null; 835585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu } 845585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mContentPane.setBackgroundColor(getBackgroundColor()); 855585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mActivity.getGLRoot().setContentPane(mContentPane); 86f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 87f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 88b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin void initialize(AbstractGalleryActivity activity, Bundle data) { 89f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mActivity = activity; 90f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mData = data; 91f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 92f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 93f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public Bundle getData() { 94f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return mData; 95f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 96f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 97f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onBackPressed() { 98f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mActivity.getStateManager().finishState(this); 99f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 100f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 101f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void setStateResult(int resultCode, Intent data) { 102f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (mResult == null) return; 103f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mResult.resultCode = resultCode; 104f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mResult.resultData = data; 105f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 106f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 1078e565703e8d482421714383a8ad40a67929ce2daOwen Lin protected void onConfigurationChanged(Configuration config) { 1088e565703e8d482421714383a8ad40a67929ce2daOwen Lin } 1098e565703e8d482421714383a8ad40a67929ce2daOwen Lin 110f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onSaveState(Bundle outState) { 111f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 112f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 113f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onStateResult(int requestCode, int resultCode, Intent data) { 114f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 115f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 116915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu protected float[] mBackgroundColor; 117915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu 118915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu protected int getBackgroundColorId() { 119915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu return R.color.default_background; 120915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu } 121915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu 122915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu protected float[] getBackgroundColor() { 123915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu return mBackgroundColor; 124915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu } 125915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu 126f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onCreate(Bundle data, Bundle storedState) { 127915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu mBackgroundColor = GalleryUtils.intColorToFloatARGBArray( 128915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu mActivity.getResources().getColor(getBackgroundColorId())); 129f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 130f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 13114d3289b4867c21da93ec4032119c0091bc78c30George Mount protected void clearStateResult() { 13214d3289b4867c21da93ec4032119c0091bc78c30George Mount } 13314d3289b4867c21da93ec4032119c0091bc78c30George Mount 1348e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler BroadcastReceiver mPowerIntentReceiver = new BroadcastReceiver() { 1358e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler @Override 1368e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler public void onReceive(Context context, Intent intent) { 1378e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler final String action = intent.getAction(); 1388e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { 1398e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler boolean plugged = (0 != intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0)); 1408e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 1418e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler if (plugged != mPlugged) { 1428e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler mPlugged = plugged; 143efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li setScreenFlags(); 1448e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1458e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1468e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1478e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler }; 1488e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 149efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li private void setScreenFlags() { 150efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li final Window win = mActivity.getWindow(); 1510b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang final WindowManager.LayoutParams params = win.getAttributes(); 152afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang if ((0 != (mFlags & FLAG_SCREEN_ON_ALWAYS)) || 153afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang (mPlugged && 0 != (mFlags & FLAG_SCREEN_ON_WHEN_PLUGGED))) { 154efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 155efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li } else { 156efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li params.flags &= ~WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 157efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li } 158efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li if (0 != (mFlags & FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)) { 159efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li params.flags |= WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON; 160efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li } else { 161efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li params.flags &= ~WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON; 162efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li } 163efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li if (0 != (mFlags & FLAG_SHOW_WHEN_LOCKED)) { 164efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li params.flags |= WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED; 1658e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } else { 166efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li params.flags &= ~WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED; 1678e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1680b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang win.setAttributes(params); 1698e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1708e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 1714831c7494373c360062a7becac820eba3bc39287Bobby Georgescu protected void transitionOnNextPause(Class<? extends ActivityState> outgoing, 17226e119cebe732582df086ff56ec564d2989042fdBobby Georgescu Class<? extends ActivityState> incoming, StateTransitionAnimation.Transition hint) { 1734831c7494373c360062a7becac820eba3bc39287Bobby Georgescu if (outgoing == PhotoPage.class && incoming == AlbumPage.class) { 17426e119cebe732582df086ff56ec564d2989042fdBobby Georgescu mNextTransition = StateTransitionAnimation.Transition.Outgoing; 1754831c7494373c360062a7becac820eba3bc39287Bobby Georgescu } else if (outgoing == AlbumPage.class && incoming == PhotoPage.class) { 17626e119cebe732582df086ff56ec564d2989042fdBobby Georgescu mNextTransition = StateTransitionAnimation.Transition.PhotoIncoming; 1774831c7494373c360062a7becac820eba3bc39287Bobby Georgescu } else { 1784831c7494373c360062a7becac820eba3bc39287Bobby Georgescu mNextTransition = hint; 1794831c7494373c360062a7becac820eba3bc39287Bobby Georgescu } 1805585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu } 1815585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu 182bcb427870043b12d4a1a454c08a088933d0eaf23Bobby Georgescu protected void performHapticFeedback(int feedbackConstant) { 183bcb427870043b12d4a1a454c08a088933d0eaf23Bobby Georgescu mActivity.getWindow().getDecorView().performHapticFeedback(feedbackConstant, 184bcb427870043b12d4a1a454c08a088933d0eaf23Bobby Georgescu HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); 185bcb427870043b12d4a1a454c08a088933d0eaf23Bobby Georgescu } 186bcb427870043b12d4a1a454c08a088933d0eaf23Bobby Georgescu 187f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onPause() { 188afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang if (0 != (mFlags & FLAG_SCREEN_ON_WHEN_PLUGGED)) { 189002a3fece284f713537fad4523ee963d257350e9Chih-Chung Chang ((Activity) mActivity).unregisterReceiver(mPowerIntentReceiver); 190002a3fece284f713537fad4523ee963d257350e9Chih-Chung Chang } 19126e119cebe732582df086ff56ec564d2989042fdBobby Georgescu if (mNextTransition != StateTransitionAnimation.Transition.None) { 1924831c7494373c360062a7becac820eba3bc39287Bobby Georgescu mActivity.getTransitionStore().put(KEY_TRANSITION_IN, mNextTransition); 1934831c7494373c360062a7becac820eba3bc39287Bobby Georgescu PreparePageFadeoutTexture.prepareFadeOutTexture(mActivity, mContentPane); 19426e119cebe732582df086ff56ec564d2989042fdBobby Georgescu mNextTransition = StateTransitionAnimation.Transition.None; 1955585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu } 196f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 197f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 198f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // should only be called by StateManager 199f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin void resume() { 200b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin AbstractGalleryActivity activity = mActivity; 201372152961edd8feada0ae6478c91ba6b2565191dJohn Reck ActionBar actionBar = ((SherlockActivity) activity).getSupportActionBar(); 202f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (actionBar != null) { 203f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if ((mFlags & FLAG_HIDE_ACTION_BAR) != 0) { 204f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin actionBar.hide(); 205f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } else { 206f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin actionBar.show(); 207f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 208f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int stateCount = mActivity.getStateManager().getStateCount(); 209655f63f04638dfe31045eab1b6b4c39cc2db10dbRay Chen mActivity.getGalleryActionBar().setDisplayOptions(stateCount > 1, true); 210fe1625c46f8258be4cd5e5e1ba69b584c1fe1a49Ray Chen // Default behavior, this can be overridden in ActivityState's onResume. 211fe1625c46f8258be4cd5e5e1ba69b584c1fe1a49Ray Chen actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 212f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 213f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 214f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin activity.invalidateOptionsMenu(); 215f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 216efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li setScreenFlags(); 2178e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 2180b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang boolean lightsOut = ((mFlags & FLAG_HIDE_STATUS_BAR) != 0); 2190b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang mActivity.getGLRoot().setLightsOutMode(lightsOut); 2208e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 221f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin ResultEntry entry = mReceivedResults; 222f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (entry != null) { 223f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mReceivedResults = null; 224f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin onStateResult(entry.requestCode, entry.resultCode, entry.resultData); 225f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 2268e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 227afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang if (0 != (mFlags & FLAG_SCREEN_ON_WHEN_PLUGGED)) { 2288e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler // we need to know whether the device is plugged in to do this correctly 2298e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler final IntentFilter filter = new IntentFilter(); 2308e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler filter.addAction(Intent.ACTION_BATTERY_CHANGED); 2318e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler activity.registerReceiver(mPowerIntentReceiver, filter); 2328e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 23311f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu 234f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin onResume(); 235616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin 236616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin // the transition store should be cleared after resume; 237616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin mActivity.getTransitionStore().clear(); 238f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 239f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 240f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // a subclass of ActivityState should override the method to resume itself 241f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onResume() { 2424831c7494373c360062a7becac820eba3bc39287Bobby Georgescu RawTexture fade = mActivity.getTransitionStore().get( 2435585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu PreparePageFadeoutTexture.KEY_FADE_TEXTURE); 2444831c7494373c360062a7becac820eba3bc39287Bobby Georgescu mNextTransition = mActivity.getTransitionStore().get( 24526e119cebe732582df086ff56ec564d2989042fdBobby Georgescu KEY_TRANSITION_IN, StateTransitionAnimation.Transition.None); 24626e119cebe732582df086ff56ec564d2989042fdBobby Georgescu if (mNextTransition != StateTransitionAnimation.Transition.None) { 24726e119cebe732582df086ff56ec564d2989042fdBobby Georgescu mIntroAnimation = new StateTransitionAnimation(mNextTransition, fade); 24826e119cebe732582df086ff56ec564d2989042fdBobby Georgescu mNextTransition = StateTransitionAnimation.Transition.None; 2494831c7494373c360062a7becac820eba3bc39287Bobby Georgescu } 250f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 251f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 252f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected boolean onCreateActionBar(Menu menu) { 2536cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin // TODO: we should return false if there is no menu to show 2546cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin // this is a workaround for a bug in system 2556cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin return true; 256f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 257f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 258f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected boolean onItemSelected(MenuItem item) { 259f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return false; 260f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 261f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 262f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onDestroy() { 26357cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan mDestroyed = true; 26457cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan } 26557cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan 26657cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan boolean isDestroyed() { 26757cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan return mDestroyed; 268f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 269616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin 270616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin public boolean isFinishing() { 271616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin return mIsFinishing; 272616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin } 273b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin 274b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin protected MenuInflater getSupportMenuInflater() { 275372152961edd8feada0ae6478c91ba6b2565191dJohn Reck return ((SherlockActivity) mActivity).getSupportMenuInflater(); 276b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin } 277f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin} 278