RecentsActivity.java revision 071316e5612ae1554309912ad4ad4680b80c718d
1cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka/* 2cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * Copyright (C) 2012 The Android Open Source Project 3cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * 4cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * Licensed under the Apache License, Version 2.0 (the "License"); 5cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * you may not use this file except in compliance with the License. 6cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * You may obtain a copy of the License at 7cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * 8cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * http://www.apache.org/licenses/LICENSE-2.0 9cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * 10cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * Unless required by applicable law or agreed to in writing, software 11cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * distributed under the License is distributed on an "AS IS" BASIS, 12cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * See the License for the specific language governing permissions and 14cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka * limitations under the License. 15cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka */ 16cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 17cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkapackage com.android.systemui.recent; 18cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 19cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkaimport android.app.Activity; 20e5923631f06406f5f5e23a3a2ab4b24bb53a9094Michael Jurkaimport android.app.ActivityManager; 21071316e5612ae1554309912ad4ad4680b80c718dMichael Jurkaimport android.app.WallpaperManager; 22cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkaimport android.content.BroadcastReceiver; 23cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkaimport android.content.Context; 24cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkaimport android.content.Intent; 25cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkaimport android.content.IntentFilter; 26cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkaimport android.os.Bundle; 27cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkaimport android.os.UserHandle; 28cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkaimport android.view.MotionEvent; 29cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkaimport android.view.View; 30071316e5612ae1554309912ad4ad4680b80c718dMichael Jurkaimport android.view.WindowManager; 31cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 32cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkaimport com.android.systemui.R; 33cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkaimport com.android.systemui.SystemUIApplication; 34cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkaimport com.android.systemui.statusbar.tablet.StatusBarPanel; 35cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 36e5923631f06406f5f5e23a3a2ab4b24bb53a9094Michael Jurkaimport java.util.List; 37e5923631f06406f5f5e23a3a2ab4b24bb53a9094Michael Jurka 38cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurkapublic class RecentsActivity extends Activity { 39cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public static final String TOGGLE_RECENTS_INTENT = "com.android.systemui.TOGGLE_RECENTS"; 40cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public static final String CLOSE_RECENTS_INTENT = "com.android.systemui.CLOSE_RECENTS"; 41cbe69206c0046d3f4c1f385425e69751d7048156Michael Jurka private static final String WAS_SHOWING = "was_showing"; 42cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 43cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka private RecentsPanelView mRecentsPanel; 44cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka private IntentFilter mIntentFilter; 45cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka private boolean mShowing; 46cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka private boolean mForeground; 47071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka 48cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { 49cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka @Override 50cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public void onReceive(Context context, Intent intent) { 51cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka if (mRecentsPanel != null && mRecentsPanel.isShowing()) { 52cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka if (mShowing && !mForeground) { 53cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka // Captures the case right before we transition to another activity 54cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mRecentsPanel.show(false); 55cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 56cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 57cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 58cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka }; 59cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 609bdaada95c481b8164417696649a1ffb584552f1Michael Jurka public static interface WindowAnimationStartListener { 619bdaada95c481b8164417696649a1ffb584552f1Michael Jurka void onWindowAnimationStart(); 629bdaada95c481b8164417696649a1ffb584552f1Michael Jurka } 639bdaada95c481b8164417696649a1ffb584552f1Michael Jurka 64cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public class TouchOutsideListener implements View.OnTouchListener { 65cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka private StatusBarPanel mPanel; 66cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 67cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public TouchOutsideListener(StatusBarPanel panel) { 68cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mPanel = panel; 69cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 70cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 71cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public boolean onTouch(View v, MotionEvent ev) { 72cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka final int action = ev.getAction(); 73cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka if (action == MotionEvent.ACTION_OUTSIDE 74cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka || (action == MotionEvent.ACTION_DOWN 75cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka && !mPanel.isInContentArea((int) ev.getX(), (int) ev.getY()))) { 76cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka dismissAndGoHome(); 77cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka return true; 78cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 79cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka return false; 80cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 81cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 82cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 83cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka @Override 84cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public void onPause() { 85071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka overridePendingTransition( 86071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka R.anim.recents_return_to_launcher_enter, 87071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka R.anim.recents_return_to_launcher_exit); 88cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mForeground = false; 89cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka super.onPause(); 90cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 91cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 92cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka @Override 93cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public void onStop() { 94cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mShowing = false; 95cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka if (mRecentsPanel != null) { 96cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mRecentsPanel.onUiHidden(); 97cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 98cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka super.onStop(); 99cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 100cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 101071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka private void updateWallpaperVisibility(boolean visible) { 102071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka int wpflags = visible ? WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER : 0; 103071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka int curflags = getWindow().getAttributes().flags 104071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka & WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; 105071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka if (wpflags != curflags) { 106071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka getWindow().setFlags(wpflags, WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER); 107071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka } 108071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka } 109071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka 110cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka @Override 111cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public void onStart() { 112071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka // Hide wallpaper if it's not a static image 113071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka if (WallpaperManager.getInstance(this).getWallpaperInfo() != null) { 114071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka updateWallpaperVisibility(false); 115071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka } else { 116071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka updateWallpaperVisibility(true); 117071316e5612ae1554309912ad4ad4680b80c718dMichael Jurka } 118cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mShowing = true; 1199bdaada95c481b8164417696649a1ffb584552f1Michael Jurka if (mRecentsPanel != null) { 1209bdaada95c481b8164417696649a1ffb584552f1Michael Jurka mRecentsPanel.refreshViews(); 1219bdaada95c481b8164417696649a1ffb584552f1Michael Jurka } 122cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka super.onStart(); 123cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 124cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 125cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka @Override 126cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public void onResume() { 127cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mForeground = true; 128cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka super.onResume(); 129cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 130cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 131cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka @Override 132cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public void onBackPressed() { 133cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka dismissAndGoBack(); 134cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 135cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 136cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public void dismissAndGoHome() { 137cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka if (mRecentsPanel != null) { 138cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka Intent homeIntent = new Intent(Intent.ACTION_MAIN, null); 139cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka homeIntent.addCategory(Intent.CATEGORY_HOME); 140cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka homeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK 141cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 142cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka startActivityAsUser(homeIntent, new UserHandle(UserHandle.USER_CURRENT)); 143cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mRecentsPanel.show(false); 144cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 145cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 146cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 147cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka public void dismissAndGoBack() { 148cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka if (mRecentsPanel != null) { 149e5923631f06406f5f5e23a3a2ab4b24bb53a9094Michael Jurka final ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 150e5923631f06406f5f5e23a3a2ab4b24bb53a9094Michael Jurka 151e5923631f06406f5f5e23a3a2ab4b24bb53a9094Michael Jurka final List<ActivityManager.RecentTaskInfo> recentTasks = 152e5923631f06406f5f5e23a3a2ab4b24bb53a9094Michael Jurka am.getRecentTasks(2, 153e5923631f06406f5f5e23a3a2ab4b24bb53a9094Michael Jurka ActivityManager.RECENT_WITH_EXCLUDED | 154e5923631f06406f5f5e23a3a2ab4b24bb53a9094Michael Jurka ActivityManager.RECENT_IGNORE_UNAVAILABLE); 155e5923631f06406f5f5e23a3a2ab4b24bb53a9094Michael Jurka if (recentTasks.size() > 1 && 156e5923631f06406f5f5e23a3a2ab4b24bb53a9094Michael Jurka mRecentsPanel.simulateClick(recentTasks.get(1).persistentId)) { 157e5923631f06406f5f5e23a3a2ab4b24bb53a9094Michael Jurka // recents panel will take care of calling show(false) through simulateClick 158cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka return; 159cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 160cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mRecentsPanel.show(false); 161cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 162cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka finish(); 163cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 164cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 165cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka @Override 166cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka protected void onCreate(Bundle savedInstanceState) { 167cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka final SystemUIApplication app = (SystemUIApplication) getApplication(); 168cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka final RecentTasksLoader recentTasksLoader = app.getRecentTasksLoader(); 169cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 170cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka setContentView(R.layout.status_bar_recent_panel); 171cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mRecentsPanel = (RecentsPanelView) findViewById(R.id.recents_root); 172cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mRecentsPanel.setOnTouchListener(new TouchOutsideListener(mRecentsPanel)); 173cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mRecentsPanel.setRecentTasksLoader(recentTasksLoader); 174cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka recentTasksLoader.setRecentsPanel(mRecentsPanel, mRecentsPanel); 175adf0b215908f8fd921fcb734b9809c806cb67042Michael Jurka mRecentsPanel.setMinSwipeAlpha( 176adf0b215908f8fd921fcb734b9809c806cb67042Michael Jurka getResources().getInteger(R.integer.config_recent_item_min_alpha) / 100f); 177cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 178cbe69206c0046d3f4c1f385425e69751d7048156Michael Jurka if (savedInstanceState == null || 179cbe69206c0046d3f4c1f385425e69751d7048156Michael Jurka savedInstanceState.getBoolean(WAS_SHOWING)) { 180cbe69206c0046d3f4c1f385425e69751d7048156Michael Jurka handleIntent(getIntent()); 181cbe69206c0046d3f4c1f385425e69751d7048156Michael Jurka } 182cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mIntentFilter = new IntentFilter(); 183cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka mIntentFilter.addAction(CLOSE_RECENTS_INTENT); 184cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka registerReceiver(mIntentReceiver, mIntentFilter); 1859bdaada95c481b8164417696649a1ffb584552f1Michael Jurka app.setWindowAnimationStartListener(mRecentsPanel); 186cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka super.onCreate(savedInstanceState); 187cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 188cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 189cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka @Override 190cbe69206c0046d3f4c1f385425e69751d7048156Michael Jurka protected void onSaveInstanceState(Bundle outState) { 191cbe69206c0046d3f4c1f385425e69751d7048156Michael Jurka outState.putBoolean(WAS_SHOWING, mRecentsPanel.isShowing()); 192cbe69206c0046d3f4c1f385425e69751d7048156Michael Jurka } 193cbe69206c0046d3f4c1f385425e69751d7048156Michael Jurka 194cbe69206c0046d3f4c1f385425e69751d7048156Michael Jurka @Override 195cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka protected void onDestroy() { 196cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka final SystemUIApplication app = (SystemUIApplication) getApplication(); 197cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka final RecentTasksLoader recentTasksLoader = app.getRecentTasksLoader(); 198cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka recentTasksLoader.setRecentsPanel(null, mRecentsPanel); 199cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka unregisterReceiver(mIntentReceiver); 2009bdaada95c481b8164417696649a1ffb584552f1Michael Jurka app.setWindowAnimationStartListener(null); 201cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka super.onDestroy(); 202cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 203cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 204cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka @Override 205cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka protected void onNewIntent(Intent intent) { 206cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka handleIntent(intent); 207cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 208cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 209cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka private void handleIntent(Intent intent) { 210cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka super.onNewIntent(intent); 211cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 212cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka if (TOGGLE_RECENTS_INTENT.equals(intent.getAction())) { 213482f159dc46c2aab5990b4a12294623d28447e2eMichael Jurka if (mRecentsPanel != null) { 214cbe69206c0046d3f4c1f385425e69751d7048156Michael Jurka if (mRecentsPanel.isShowing()) { 215482f159dc46c2aab5990b4a12294623d28447e2eMichael Jurka dismissAndGoBack(); 216482f159dc46c2aab5990b4a12294623d28447e2eMichael Jurka } else { 217482f159dc46c2aab5990b4a12294623d28447e2eMichael Jurka final SystemUIApplication app = (SystemUIApplication) getApplication(); 218482f159dc46c2aab5990b4a12294623d28447e2eMichael Jurka final RecentTasksLoader recentTasksLoader = app.getRecentTasksLoader(); 219482f159dc46c2aab5990b4a12294623d28447e2eMichael Jurka mRecentsPanel.show(true, recentTasksLoader.getLoadedTasks(), 220482f159dc46c2aab5990b4a12294623d28447e2eMichael Jurka recentTasksLoader.isFirstScreenful()); 221482f159dc46c2aab5990b4a12294623d28447e2eMichael Jurka } 222cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 223cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 224cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka } 225cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka 226ca6da00f6c5381ce21b45bcea4381e8b33f84252Craig Mautner boolean isForeground() { 227ca6da00f6c5381ce21b45bcea4381e8b33f84252Craig Mautner return mForeground; 228ca6da00f6c5381ce21b45bcea4381e8b33f84252Craig Mautner } 2297ed267f53852aa18aacb605297e56f88d7c08333Michael Jurka 2307ed267f53852aa18aacb605297e56f88d7c08333Michael Jurka boolean isActivityShowing() { 2317ed267f53852aa18aacb605297e56f88d7c08333Michael Jurka return mShowing; 2327ed267f53852aa18aacb605297e56f88d7c08333Michael Jurka } 233cb2522c86d75fff277dc38ec7e444a5b5f5130eaMichael Jurka} 234