CommandQueue.java revision cad5768e22e5132efb2e5179f4988a763c7a8d9e
10cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato/* 20cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * Copyright (C) 2010 The Android Open Source Project 30cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * 40cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * Licensed under the Apache License, Version 2.0 (the "License"); 50cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * you may not use this file except in compliance with the License. 60cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * You may obtain a copy of the License at 70cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * 80cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * http://www.apache.org/licenses/LICENSE-2.0 90cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * 100cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * Unless required by applicable law or agreed to in writing, software 110cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * distributed under the License is distributed on an "AS IS" BASIS, 120cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * See the License for the specific language governing permissions and 140cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * limitations under the License. 150cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato */ 160cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 1779de0c550037a5328bbc7f4fddaf02f192a5c283Joe Onoratopackage com.android.systemui.statusbar; 180cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 190cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport android.os.Handler; 20a0c56fe93925d20d9c0b830b9664699ce557e78cJoe Onoratoimport android.os.IBinder; 210cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport android.os.Message; 22de84f0e77ea2bf713d15c290264059a413c2486aJohn Spurlock 230cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport com.android.internal.statusbar.IStatusBar; 240cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport com.android.internal.statusbar.StatusBarIcon; 250cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport com.android.internal.statusbar.StatusBarIconList; 260cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 27f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato/** 28f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato * This class takes the functions from IStatusBar that come in on 29f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato * binder pool threads and posts messages to get them onto the main 30f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato * thread, and calls onto Callbacks. It also takes care of 314762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato * coalescing these calls so they don't stack up. For the calls 324762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato * are coalesced, note that they are all idempotent. 33f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato */ 34808182dc874e93582da38d013a4a790d6bc08fc9Joe Onoratopublic class CommandQueue extends IStatusBar.Stub { 351d4d30aebd2c22627131819cabfe95f97def2c83Daniel Sandler private static final int INDEX_MASK = 0xffff; 361d4d30aebd2c22627131819cabfe95f97def2c83Daniel Sandler private static final int MSG_SHIFT = 16; 371d4d30aebd2c22627131819cabfe95f97def2c83Daniel Sandler private static final int MSG_MASK = 0xffff << MSG_SHIFT; 380cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 391d4d30aebd2c22627131819cabfe95f97def2c83Daniel Sandler private static final int OP_SET_ICON = 1; 400cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato private static final int OP_REMOVE_ICON = 2; 410cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 42e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov private static final int MSG_ICON = 1 << MSG_SHIFT; 43e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_DISABLE = 2 << MSG_SHIFT; 44e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_EXPAND_NOTIFICATIONS = 3 << MSG_SHIFT; 45e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_COLLAPSE_PANELS = 4 << MSG_SHIFT; 46e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_EXPAND_SETTINGS = 5 << MSG_SHIFT; 47e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_SET_SYSTEMUI_VISIBILITY = 6 << MSG_SHIFT; 48e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_TOP_APP_WINDOW_CHANGED = 7 << MSG_SHIFT; 49e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_SHOW_IME_BUTTON = 8 << MSG_SHIFT; 50e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_SET_HARD_KEYBOARD_STATUS = 9 << MSG_SHIFT; 51e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_TOGGLE_RECENT_APPS = 10 << MSG_SHIFT; 52e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_PRELOAD_RECENT_APPS = 11 << MSG_SHIFT; 53e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_CANCEL_PRELOAD_RECENT_APPS = 12 << MSG_SHIFT; 54e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_SET_WINDOW_STATE = 13 << MSG_SHIFT; 55e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_SHOW_RECENT_APPS = 14 << MSG_SHIFT; 56e71fefcc8b382947f6f6a8bf816b3889fb368fedChristoph Studer private static final int MSG_HIDE_RECENT_APPS = 15 << MSG_SHIFT; 57cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock private static final int MSG_BUZZ_BEEP_BLINKED = 16 << MSG_SHIFT; 58328310c6fac6066d338926bb43d359862cae36d2Daniel Sandler 599a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller public static final int FLAG_EXCLUDE_NONE = 0; 609a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0; 619a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller public static final int FLAG_EXCLUDE_RECENTS_PANEL = 1 << 1; 629a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller public static final int FLAG_EXCLUDE_NOTIFICATION_PANEL = 1 << 2; 639a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller public static final int FLAG_EXCLUDE_INPUT_METHODS_PANEL = 1 << 3; 649a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller public static final int FLAG_EXCLUDE_COMPAT_MODE_PANEL = 1 << 4; 659a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller 66b605fecd9e4282823af754b3968b21205d64554aJason Monk private static final String SHOW_IME_SWITCHER_KEY = "showImeSwitcherKey"; 67b605fecd9e4282823af754b3968b21205d64554aJason Monk 680cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato private StatusBarIconList mList; 690cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato private Callbacks mCallbacks; 700cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato private Handler mHandler = new H(); 710cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 720cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato /** 730cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * These methods are called back on the main thread. 740cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato */ 750cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato public interface Callbacks { 760cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato public void addIcon(String slot, int index, int viewIndex, StatusBarIcon icon); 770cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato public void updateIcon(String slot, int index, int viewIndex, 780cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato StatusBarIcon old, StatusBarIcon icon); 790cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato public void removeIcon(String slot, int index, int viewIndex); 802580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi public void disable(int state, boolean animate); 8111cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler public void animateExpandNotificationsPanel(); 8211cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler public void animateCollapsePanels(int flags); 8311cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler public void animateExpandSettingsPanel(); 843a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn public void setSystemUiVisibility(int vis, int mask); 857d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn public void topAppWindowChanged(boolean visible); 86b605fecd9e4282823af754b3968b21205d64554aJason Monk public void setImeWindowStatus(IBinder token, int vis, int backDisposition, 87b605fecd9e4282823af754b3968b21205d64554aJason Monk boolean showImeSwitcher); 882992ea782fa61780d8e0de7a36a2a84622f8694bJeff Brown public void setHardKeyboardStatus(boolean available, boolean enabled); 891e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung public void showRecentApps(boolean triggeredFromAltTab); 906cb485fd2e2f8ace05e1ff281ab0fc824d3652cbWinson Chung public void hideRecentApps(boolean triggeredFromAltTab); 913b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka public void toggleRecentApps(); 927f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka public void preloadRecentApps(); 931e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung public void cancelPreloadRecentApps(); 94e898ac59db04d8ab0762180ca8ec7cea1347aa09Jim Miller public void showSearchPanel(); 95e898ac59db04d8ab0762180ca8ec7cea1347aa09Jim Miller public void hideSearchPanel(); 969764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock public void setWindowState(int window, int state); 97cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock public void buzzBeepBlinked(); 980cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 990cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 1000cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato public CommandQueue(Callbacks callbacks, StatusBarIconList list) { 1010cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato mCallbacks = callbacks; 1020cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato mList = list; 1030cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 1040cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 1050cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato public void setIcon(int index, StatusBarIcon icon) { 1060cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato synchronized (mList) { 1070cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato int what = MSG_ICON | index; 1080cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato mHandler.removeMessages(what); 1090cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato mHandler.obtainMessage(what, OP_SET_ICON, 0, icon.clone()).sendToTarget(); 1100cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 1110cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 1120cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 1130cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato public void removeIcon(int index) { 1140cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato synchronized (mList) { 1150cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato int what = MSG_ICON | index; 1160cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato mHandler.removeMessages(what); 1170cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato mHandler.obtainMessage(what, OP_REMOVE_ICON, 0, null).sendToTarget(); 1180cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 1190cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 1200cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 121f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato public void disable(int state) { 122f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato synchronized (mList) { 123f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato mHandler.removeMessages(MSG_DISABLE); 124f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato mHandler.obtainMessage(MSG_DISABLE, state, 0, null).sendToTarget(); 125f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato } 126f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato } 127f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato 12811cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler public void animateExpandNotificationsPanel() { 129e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov synchronized (mList) { 130e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov mHandler.removeMessages(MSG_EXPAND_NOTIFICATIONS); 131e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov mHandler.sendEmptyMessage(MSG_EXPAND_NOTIFICATIONS); 132e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov } 133e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov } 134e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov 13511cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler public void animateCollapsePanels() { 1364762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato synchronized (mList) { 13711cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler mHandler.removeMessages(MSG_COLLAPSE_PANELS); 13811cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler mHandler.sendEmptyMessage(MSG_COLLAPSE_PANELS); 1394762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato } 1404762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato } 1414762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato 14211cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler public void animateExpandSettingsPanel() { 143e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov synchronized (mList) { 14411cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler mHandler.removeMessages(MSG_EXPAND_SETTINGS); 14511cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler mHandler.sendEmptyMessage(MSG_EXPAND_SETTINGS); 1464762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato } 1474762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato } 1484762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato 1493a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn public void setSystemUiVisibility(int vis, int mask) { 1509305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato synchronized (mList) { 15160ee25643e0a7b8841063a4e97b0f18c51807e91Daniel Sandler mHandler.removeMessages(MSG_SET_SYSTEMUI_VISIBILITY); 1523a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mHandler.obtainMessage(MSG_SET_SYSTEMUI_VISIBILITY, vis, mask, null).sendToTarget(); 1539305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato } 1549305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato } 1559305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato 1567d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn public void topAppWindowChanged(boolean menuVisible) { 157e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler synchronized (mList) { 1587d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn mHandler.removeMessages(MSG_TOP_APP_WINDOW_CHANGED); 1597d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn mHandler.obtainMessage(MSG_TOP_APP_WINDOW_CHANGED, menuVisible ? 1 : 0, 0, 1607d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn null).sendToTarget(); 161e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler } 162e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler } 163e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler 164b605fecd9e4282823af754b3968b21205d64554aJason Monk public void setImeWindowStatus(IBinder token, int vis, int backDisposition, 165b605fecd9e4282823af754b3968b21205d64554aJason Monk boolean showImeSwitcher) { 16606487a58be22b100daf3f950b9a1d25c3ea42aa2satok synchronized (mList) { 16706487a58be22b100daf3f950b9a1d25c3ea42aa2satok mHandler.removeMessages(MSG_SHOW_IME_BUTTON); 168b605fecd9e4282823af754b3968b21205d64554aJason Monk Message m = mHandler.obtainMessage(MSG_SHOW_IME_BUTTON, vis, backDisposition, token); 169b605fecd9e4282823af754b3968b21205d64554aJason Monk m.getData().putBoolean(SHOW_IME_SWITCHER_KEY, showImeSwitcher); 170b605fecd9e4282823af754b3968b21205d64554aJason Monk m.sendToTarget(); 17106487a58be22b100daf3f950b9a1d25c3ea42aa2satok } 17206487a58be22b100daf3f950b9a1d25c3ea42aa2satok } 17306487a58be22b100daf3f950b9a1d25c3ea42aa2satok 1742992ea782fa61780d8e0de7a36a2a84622f8694bJeff Brown public void setHardKeyboardStatus(boolean available, boolean enabled) { 1752992ea782fa61780d8e0de7a36a2a84622f8694bJeff Brown synchronized (mList) { 1762992ea782fa61780d8e0de7a36a2a84622f8694bJeff Brown mHandler.removeMessages(MSG_SET_HARD_KEYBOARD_STATUS); 1772992ea782fa61780d8e0de7a36a2a84622f8694bJeff Brown mHandler.obtainMessage(MSG_SET_HARD_KEYBOARD_STATUS, 1782992ea782fa61780d8e0de7a36a2a84622f8694bJeff Brown available ? 1 : 0, enabled ? 1 : 0).sendToTarget(); 1792992ea782fa61780d8e0de7a36a2a84622f8694bJeff Brown } 1802992ea782fa61780d8e0de7a36a2a84622f8694bJeff Brown } 1812992ea782fa61780d8e0de7a36a2a84622f8694bJeff Brown 1821e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung public void showRecentApps(boolean triggeredFromAltTab) { 1831e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung synchronized (mList) { 1841e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung mHandler.removeMessages(MSG_SHOW_RECENT_APPS); 1851e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung mHandler.obtainMessage(MSG_SHOW_RECENT_APPS, 1861e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung triggeredFromAltTab ? 1 : 0, 0, null).sendToTarget(); 1871e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung } 1881e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung } 1891e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung 1906cb485fd2e2f8ace05e1ff281ab0fc824d3652cbWinson Chung public void hideRecentApps(boolean triggeredFromAltTab) { 1911e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung synchronized (mList) { 1921e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung mHandler.removeMessages(MSG_HIDE_RECENT_APPS); 1936cb485fd2e2f8ace05e1ff281ab0fc824d3652cbWinson Chung mHandler.obtainMessage(MSG_HIDE_RECENT_APPS, 1946cb485fd2e2f8ace05e1ff281ab0fc824d3652cbWinson Chung triggeredFromAltTab ? 1 : 0, 0, null).sendToTarget(); 1951e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung } 1961e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung } 1971e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung 1983b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka public void toggleRecentApps() { 1993b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka synchronized (mList) { 2003b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka mHandler.removeMessages(MSG_TOGGLE_RECENT_APPS); 2013b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka mHandler.obtainMessage(MSG_TOGGLE_RECENT_APPS, 0, 0, null).sendToTarget(); 2023b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka } 2033b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka } 2043b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka 2057f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka public void preloadRecentApps() { 2067f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka synchronized (mList) { 2077f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka mHandler.removeMessages(MSG_PRELOAD_RECENT_APPS); 2087f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka mHandler.obtainMessage(MSG_PRELOAD_RECENT_APPS, 0, 0, null).sendToTarget(); 2097f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka } 2107f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka } 2117f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka 2127f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka public void cancelPreloadRecentApps() { 2137f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka synchronized (mList) { 2147f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka mHandler.removeMessages(MSG_CANCEL_PRELOAD_RECENT_APPS); 2157f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka mHandler.obtainMessage(MSG_CANCEL_PRELOAD_RECENT_APPS, 0, 0, null).sendToTarget(); 2167f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka } 2177f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka } 2187f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka 2199764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock public void setWindowState(int window, int state) { 2209764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock synchronized (mList) { 2215b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock // don't coalesce these 2229764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock mHandler.obtainMessage(MSG_SET_WINDOW_STATE, window, state, null).sendToTarget(); 2239764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock } 2249764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock } 2259764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock 226cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock public void buzzBeepBlinked() { 227cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock synchronized (mList) { 228cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock mHandler.removeMessages(MSG_BUZZ_BEEP_BLINKED); 229cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock mHandler.sendEmptyMessage(MSG_BUZZ_BEEP_BLINKED); 230cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock } 231cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock } 232380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 2330cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato private final class H extends Handler { 2340cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato public void handleMessage(Message msg) { 235f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato final int what = msg.what & MSG_MASK; 23666d7d01ed91968f4ed2e2669fd306aa2af61cd16Joe Onorato switch (what) { 2370cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato case MSG_ICON: { 238f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato final int index = msg.what & INDEX_MASK; 239f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato final int viewIndex = mList.getViewIndex(index); 2400cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato switch (msg.arg1) { 2410cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato case OP_SET_ICON: { 2420cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato StatusBarIcon icon = (StatusBarIcon)msg.obj; 2430cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato StatusBarIcon old = mList.getIcon(index); 2440cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato if (old == null) { 2450cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato mList.setIcon(index, icon); 2460cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato mCallbacks.addIcon(mList.getSlot(index), index, viewIndex, icon); 2470cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } else { 2480cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato mList.setIcon(index, icon); 2490cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato mCallbacks.updateIcon(mList.getSlot(index), index, viewIndex, 2500cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato old, icon); 2510cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 2520cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato break; 2530cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 2540cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato case OP_REMOVE_ICON: 255795f2840b4a70bf188c2f24c8c06f73a492b338cJoe Onorato if (mList.getIcon(index) != null) { 256795f2840b4a70bf188c2f24c8c06f73a492b338cJoe Onorato mList.removeIcon(index); 257795f2840b4a70bf188c2f24c8c06f73a492b338cJoe Onorato mCallbacks.removeIcon(mList.getSlot(index), index, viewIndex); 258795f2840b4a70bf188c2f24c8c06f73a492b338cJoe Onorato } 2590cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato break; 2600cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 2610cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato break; 262a0c56fe93925d20d9c0b830b9664699ce557e78cJoe Onorato } 263f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato case MSG_DISABLE: 2642580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi mCallbacks.disable(msg.arg1, true /* animate */); 265f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato break; 266e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov case MSG_EXPAND_NOTIFICATIONS: 26711cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler mCallbacks.animateExpandNotificationsPanel(); 268e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov break; 26911cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler case MSG_COLLAPSE_PANELS: 27011cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler mCallbacks.animateCollapsePanels(0); 271e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov break; 27211cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler case MSG_EXPAND_SETTINGS: 27311cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler mCallbacks.animateExpandSettingsPanel(); 2749305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato break; 27560ee25643e0a7b8841063a4e97b0f18c51807e91Daniel Sandler case MSG_SET_SYSTEMUI_VISIBILITY: 2763a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mCallbacks.setSystemUiVisibility(msg.arg1, msg.arg2); 2779305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato break; 2787d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn case MSG_TOP_APP_WINDOW_CHANGED: 2797d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn mCallbacks.topAppWindowChanged(msg.arg1 != 0); 280e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler break; 28106487a58be22b100daf3f950b9a1d25c3ea42aa2satok case MSG_SHOW_IME_BUTTON: 282b605fecd9e4282823af754b3968b21205d64554aJason Monk mCallbacks.setImeWindowStatus((IBinder) msg.obj, msg.arg1, msg.arg2, 283b605fecd9e4282823af754b3968b21205d64554aJason Monk msg.getData().getBoolean(SHOW_IME_SWITCHER_KEY, false)); 28406487a58be22b100daf3f950b9a1d25c3ea42aa2satok break; 2852992ea782fa61780d8e0de7a36a2a84622f8694bJeff Brown case MSG_SET_HARD_KEYBOARD_STATUS: 2862992ea782fa61780d8e0de7a36a2a84622f8694bJeff Brown mCallbacks.setHardKeyboardStatus(msg.arg1 != 0, msg.arg2 != 0); 2872992ea782fa61780d8e0de7a36a2a84622f8694bJeff Brown break; 2881e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung case MSG_SHOW_RECENT_APPS: 2891e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung mCallbacks.showRecentApps(msg.arg1 != 0); 2901e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung break; 2911e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung case MSG_HIDE_RECENT_APPS: 2926cb485fd2e2f8ace05e1ff281ab0fc824d3652cbWinson Chung mCallbacks.hideRecentApps(msg.arg1 != 0); 2931e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung break; 2943b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka case MSG_TOGGLE_RECENT_APPS: 2953b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka mCallbacks.toggleRecentApps(); 2963b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka break; 2977f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka case MSG_PRELOAD_RECENT_APPS: 2987f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka mCallbacks.preloadRecentApps(); 2997f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka break; 3007f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka case MSG_CANCEL_PRELOAD_RECENT_APPS: 3017f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka mCallbacks.cancelPreloadRecentApps(); 3027f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka break; 3039764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock case MSG_SET_WINDOW_STATE: 3049764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock mCallbacks.setWindowState(msg.arg1, msg.arg2); 3059764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock break; 306cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock case MSG_BUZZ_BEEP_BLINKED: 307cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock mCallbacks.buzzBeepBlinked(); 308cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock break; 3095cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 3100cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 3110cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 3120cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 3130cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato} 3140cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 315