Loading policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +68 −92 Original line number Diff line number Diff line Loading @@ -322,10 +322,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { int mBackKillTimeout; int mPointerLocationMode = 0; // guarded by mLock int mDeviceHardwareKeys; boolean mHasHomeKey; boolean mHasMenuKey; boolean mHasAssistKey; boolean mHasAppSwitchKey; boolean mHasMenuKeyEnabled; // The last window we were told about in focusChanged. Loading Loading @@ -1142,11 +1138,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { com.android.internal.R.integer.config_backKillTimeout); mDeviceHardwareKeys = mContext.getResources().getInteger( com.android.internal.R.integer.config_deviceHardwareKeys); mHasHomeKey = ((mDeviceHardwareKeys & KEY_MASK_HOME) != 0); mHasMenuKey = ((mDeviceHardwareKeys & KEY_MASK_MENU) != 0); mHasAssistKey = ((mDeviceHardwareKeys & KEY_MASK_ASSIST) != 0); mHasAppSwitchKey = ((mDeviceHardwareKeys & KEY_MASK_APP_SWITCH) != 0); readConfigurationDependentBehaviors(); updateKeyAssignments(); // register for dock events IntentFilter filter = new IntentFilter(); Loading Loading @@ -1206,12 +1199,25 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } /** * Read values from config.xml that may be overridden depending on * the configuration of the device. * eg. Disable long press on home goes to recents on sw600dp. */ private void readConfigurationDependentBehaviors() { private void updateKeyAssignments() { final boolean hasMenu = (mDeviceHardwareKeys & KEY_MASK_MENU) != 0; final boolean hasHome = (mDeviceHardwareKeys & KEY_MASK_HOME) != 0; final boolean hasAssist = (mDeviceHardwareKeys & KEY_MASK_ASSIST) != 0; final boolean hasAppSwitch = (mDeviceHardwareKeys & KEY_MASK_APP_SWITCH) != 0; final ContentResolver resolver = mContext.getContentResolver(); // initialize all assignments to sane defaults mPressOnMenuBehavior = KEY_ACTION_MENU; if (!hasMenu || hasAssist) { mLongPressOnMenuBehavior = KEY_ACTION_NOTHING; } else { mLongPressOnMenuBehavior = KEY_ACTION_SEARCH; } mPressOnAssistBehavior = KEY_ACTION_SEARCH; mLongPressOnAssistBehavior = KEY_ACTION_VOICE_SEARCH; mPressOnAppSwitchBehavior = KEY_ACTION_APP_SWITCH; mLongPressOnAppSwitchBehavior = KEY_ACTION_NOTHING; mLongPressOnHomeBehavior = mContext.getResources().getInteger( com.android.internal.R.integer.config_longPressOnHomeBehavior); if (mLongPressOnHomeBehavior < KEY_ACTION_NOTHING || Loading @@ -1225,6 +1231,52 @@ public class PhoneWindowManager implements WindowManagerPolicy { mDoubleTapOnHomeBehavior > KEY_ACTION_IN_APP_SEARCH) { mDoubleTapOnHomeBehavior = KEY_ACTION_NOTHING; } boolean keyRebindingEnabled = Settings.System.getIntForUser(resolver, Settings.System.HARDWARE_KEY_REBINDING, 0, UserHandle.USER_CURRENT) == 1; if (!keyRebindingEnabled) { mHasMenuKeyEnabled = hasMenu; return; } if (hasHome) { mLongPressOnHomeBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_HOME_LONG_PRESS_ACTION, hasAppSwitch ? KEY_ACTION_NOTHING : KEY_ACTION_APP_SWITCH, UserHandle.USER_CURRENT); mHasMenuKeyEnabled = mLongPressOnHomeBehavior == KEY_ACTION_MENU; } if (hasMenu) { mPressOnMenuBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_MENU_ACTION, KEY_ACTION_MENU, UserHandle.USER_CURRENT); mLongPressOnMenuBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_MENU_LONG_PRESS_ACTION, hasAssist ? KEY_ACTION_NOTHING : KEY_ACTION_SEARCH, UserHandle.USER_CURRENT); mHasMenuKeyEnabled |= mPressOnMenuBehavior == KEY_ACTION_MENU || mLongPressOnMenuBehavior == KEY_ACTION_MENU; } if (hasAssist) { mPressOnAssistBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_ASSIST_ACTION, KEY_ACTION_SEARCH, UserHandle.USER_CURRENT); mLongPressOnAssistBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_ASSIST_LONG_PRESS_ACTION, KEY_ACTION_VOICE_SEARCH, UserHandle.USER_CURRENT); mHasMenuKeyEnabled |= mPressOnAssistBehavior == KEY_ACTION_MENU || mLongPressOnAssistBehavior == KEY_ACTION_MENU; } if (hasAppSwitch) { mPressOnAppSwitchBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_APP_SWITCH_ACTION, KEY_ACTION_APP_SWITCH, UserHandle.USER_CURRENT); mLongPressOnAppSwitchBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_APP_SWITCH_LONG_PRESS_ACTION, KEY_ACTION_NOTHING, UserHandle.USER_CURRENT); mHasMenuKeyEnabled |= mPressOnAppSwitchBehavior == KEY_ACTION_MENU || mLongPressOnAppSwitchBehavior == KEY_ACTION_MENU; } } @Override Loading Loading @@ -1375,82 +1427,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { mVolBtnMusicControls = (Settings.System.getIntForUser(resolver, Settings.System.VOLBTN_MUSIC_CONTROLS, 1, UserHandle.USER_CURRENT) == 1); boolean keyRebindingEnabled = Settings.System.getIntForUser(resolver, Settings.System.HARDWARE_KEY_REBINDING, 0, UserHandle.USER_CURRENT) == 1; mHasMenuKeyEnabled = false; if (!keyRebindingEnabled) { // Grab default configuration for home key readConfigurationDependentBehaviors(); if (mHasMenuKey) { mPressOnMenuBehavior = KEY_ACTION_MENU; if (mHasAssistKey) { mLongPressOnMenuBehavior = KEY_ACTION_NOTHING; } else { mLongPressOnMenuBehavior = KEY_ACTION_SEARCH; } mHasMenuKeyEnabled = true; } if (mHasAssistKey) { mPressOnAssistBehavior = KEY_ACTION_SEARCH; mLongPressOnAssistBehavior = KEY_ACTION_VOICE_SEARCH; } if (mHasAppSwitchKey) { mPressOnAppSwitchBehavior = KEY_ACTION_APP_SWITCH; mLongPressOnAppSwitchBehavior = KEY_ACTION_NOTHING; } } else { if (mHasHomeKey) { if (mHasAppSwitchKey) { mLongPressOnHomeBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_HOME_LONG_PRESS_ACTION, KEY_ACTION_NOTHING, UserHandle.USER_CURRENT); } else { mLongPressOnHomeBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_HOME_LONG_PRESS_ACTION, KEY_ACTION_APP_SWITCH, UserHandle.USER_CURRENT); } mHasMenuKeyEnabled = (mLongPressOnHomeBehavior == KEY_ACTION_MENU); } if (mHasMenuKey) { mPressOnMenuBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_MENU_ACTION, KEY_ACTION_MENU, UserHandle.USER_CURRENT); if (mHasAssistKey) { mLongPressOnMenuBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_MENU_LONG_PRESS_ACTION, KEY_ACTION_NOTHING, UserHandle.USER_CURRENT); } else { mLongPressOnMenuBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_MENU_LONG_PRESS_ACTION, KEY_ACTION_SEARCH, UserHandle.USER_CURRENT); } mHasMenuKeyEnabled |= (mPressOnMenuBehavior == KEY_ACTION_MENU) || (mLongPressOnMenuBehavior == KEY_ACTION_MENU); } if (mHasAssistKey) { mPressOnAssistBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_ASSIST_ACTION, KEY_ACTION_SEARCH, UserHandle.USER_CURRENT); mLongPressOnAssistBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_ASSIST_LONG_PRESS_ACTION, KEY_ACTION_VOICE_SEARCH, UserHandle.USER_CURRENT); mHasMenuKeyEnabled |= (mPressOnAssistBehavior == KEY_ACTION_MENU) || (mLongPressOnAssistBehavior == KEY_ACTION_MENU); } if (mHasAppSwitchKey) { mPressOnAppSwitchBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_APP_SWITCH_ACTION, KEY_ACTION_APP_SWITCH, UserHandle.USER_CURRENT); mLongPressOnAppSwitchBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_APP_SWITCH_LONG_PRESS_ACTION, KEY_ACTION_NOTHING, UserHandle.USER_CURRENT); mHasMenuKeyEnabled |= (mPressOnAppSwitchBehavior == KEY_ACTION_MENU) || (mLongPressOnAppSwitchBehavior == KEY_ACTION_MENU); } } updateKeyAssignments(); int expandedDesktopStyle = Settings.System.getIntForUser(resolver, Settings.System.EXPANDED_DESKTOP_STYLE, 0, UserHandle.USER_CURRENT); Loading Loading @@ -1714,7 +1691,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { int navigationPresence) { mHaveBuiltInKeyboard = (keyboardPresence & PRESENCE_INTERNAL) != 0; readConfigurationDependentBehaviors(); readLidState(); applyLidSwitchState(); Loading Loading
policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +68 −92 Original line number Diff line number Diff line Loading @@ -322,10 +322,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { int mBackKillTimeout; int mPointerLocationMode = 0; // guarded by mLock int mDeviceHardwareKeys; boolean mHasHomeKey; boolean mHasMenuKey; boolean mHasAssistKey; boolean mHasAppSwitchKey; boolean mHasMenuKeyEnabled; // The last window we were told about in focusChanged. Loading Loading @@ -1142,11 +1138,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { com.android.internal.R.integer.config_backKillTimeout); mDeviceHardwareKeys = mContext.getResources().getInteger( com.android.internal.R.integer.config_deviceHardwareKeys); mHasHomeKey = ((mDeviceHardwareKeys & KEY_MASK_HOME) != 0); mHasMenuKey = ((mDeviceHardwareKeys & KEY_MASK_MENU) != 0); mHasAssistKey = ((mDeviceHardwareKeys & KEY_MASK_ASSIST) != 0); mHasAppSwitchKey = ((mDeviceHardwareKeys & KEY_MASK_APP_SWITCH) != 0); readConfigurationDependentBehaviors(); updateKeyAssignments(); // register for dock events IntentFilter filter = new IntentFilter(); Loading Loading @@ -1206,12 +1199,25 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } /** * Read values from config.xml that may be overridden depending on * the configuration of the device. * eg. Disable long press on home goes to recents on sw600dp. */ private void readConfigurationDependentBehaviors() { private void updateKeyAssignments() { final boolean hasMenu = (mDeviceHardwareKeys & KEY_MASK_MENU) != 0; final boolean hasHome = (mDeviceHardwareKeys & KEY_MASK_HOME) != 0; final boolean hasAssist = (mDeviceHardwareKeys & KEY_MASK_ASSIST) != 0; final boolean hasAppSwitch = (mDeviceHardwareKeys & KEY_MASK_APP_SWITCH) != 0; final ContentResolver resolver = mContext.getContentResolver(); // initialize all assignments to sane defaults mPressOnMenuBehavior = KEY_ACTION_MENU; if (!hasMenu || hasAssist) { mLongPressOnMenuBehavior = KEY_ACTION_NOTHING; } else { mLongPressOnMenuBehavior = KEY_ACTION_SEARCH; } mPressOnAssistBehavior = KEY_ACTION_SEARCH; mLongPressOnAssistBehavior = KEY_ACTION_VOICE_SEARCH; mPressOnAppSwitchBehavior = KEY_ACTION_APP_SWITCH; mLongPressOnAppSwitchBehavior = KEY_ACTION_NOTHING; mLongPressOnHomeBehavior = mContext.getResources().getInteger( com.android.internal.R.integer.config_longPressOnHomeBehavior); if (mLongPressOnHomeBehavior < KEY_ACTION_NOTHING || Loading @@ -1225,6 +1231,52 @@ public class PhoneWindowManager implements WindowManagerPolicy { mDoubleTapOnHomeBehavior > KEY_ACTION_IN_APP_SEARCH) { mDoubleTapOnHomeBehavior = KEY_ACTION_NOTHING; } boolean keyRebindingEnabled = Settings.System.getIntForUser(resolver, Settings.System.HARDWARE_KEY_REBINDING, 0, UserHandle.USER_CURRENT) == 1; if (!keyRebindingEnabled) { mHasMenuKeyEnabled = hasMenu; return; } if (hasHome) { mLongPressOnHomeBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_HOME_LONG_PRESS_ACTION, hasAppSwitch ? KEY_ACTION_NOTHING : KEY_ACTION_APP_SWITCH, UserHandle.USER_CURRENT); mHasMenuKeyEnabled = mLongPressOnHomeBehavior == KEY_ACTION_MENU; } if (hasMenu) { mPressOnMenuBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_MENU_ACTION, KEY_ACTION_MENU, UserHandle.USER_CURRENT); mLongPressOnMenuBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_MENU_LONG_PRESS_ACTION, hasAssist ? KEY_ACTION_NOTHING : KEY_ACTION_SEARCH, UserHandle.USER_CURRENT); mHasMenuKeyEnabled |= mPressOnMenuBehavior == KEY_ACTION_MENU || mLongPressOnMenuBehavior == KEY_ACTION_MENU; } if (hasAssist) { mPressOnAssistBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_ASSIST_ACTION, KEY_ACTION_SEARCH, UserHandle.USER_CURRENT); mLongPressOnAssistBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_ASSIST_LONG_PRESS_ACTION, KEY_ACTION_VOICE_SEARCH, UserHandle.USER_CURRENT); mHasMenuKeyEnabled |= mPressOnAssistBehavior == KEY_ACTION_MENU || mLongPressOnAssistBehavior == KEY_ACTION_MENU; } if (hasAppSwitch) { mPressOnAppSwitchBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_APP_SWITCH_ACTION, KEY_ACTION_APP_SWITCH, UserHandle.USER_CURRENT); mLongPressOnAppSwitchBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_APP_SWITCH_LONG_PRESS_ACTION, KEY_ACTION_NOTHING, UserHandle.USER_CURRENT); mHasMenuKeyEnabled |= mPressOnAppSwitchBehavior == KEY_ACTION_MENU || mLongPressOnAppSwitchBehavior == KEY_ACTION_MENU; } } @Override Loading Loading @@ -1375,82 +1427,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { mVolBtnMusicControls = (Settings.System.getIntForUser(resolver, Settings.System.VOLBTN_MUSIC_CONTROLS, 1, UserHandle.USER_CURRENT) == 1); boolean keyRebindingEnabled = Settings.System.getIntForUser(resolver, Settings.System.HARDWARE_KEY_REBINDING, 0, UserHandle.USER_CURRENT) == 1; mHasMenuKeyEnabled = false; if (!keyRebindingEnabled) { // Grab default configuration for home key readConfigurationDependentBehaviors(); if (mHasMenuKey) { mPressOnMenuBehavior = KEY_ACTION_MENU; if (mHasAssistKey) { mLongPressOnMenuBehavior = KEY_ACTION_NOTHING; } else { mLongPressOnMenuBehavior = KEY_ACTION_SEARCH; } mHasMenuKeyEnabled = true; } if (mHasAssistKey) { mPressOnAssistBehavior = KEY_ACTION_SEARCH; mLongPressOnAssistBehavior = KEY_ACTION_VOICE_SEARCH; } if (mHasAppSwitchKey) { mPressOnAppSwitchBehavior = KEY_ACTION_APP_SWITCH; mLongPressOnAppSwitchBehavior = KEY_ACTION_NOTHING; } } else { if (mHasHomeKey) { if (mHasAppSwitchKey) { mLongPressOnHomeBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_HOME_LONG_PRESS_ACTION, KEY_ACTION_NOTHING, UserHandle.USER_CURRENT); } else { mLongPressOnHomeBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_HOME_LONG_PRESS_ACTION, KEY_ACTION_APP_SWITCH, UserHandle.USER_CURRENT); } mHasMenuKeyEnabled = (mLongPressOnHomeBehavior == KEY_ACTION_MENU); } if (mHasMenuKey) { mPressOnMenuBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_MENU_ACTION, KEY_ACTION_MENU, UserHandle.USER_CURRENT); if (mHasAssistKey) { mLongPressOnMenuBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_MENU_LONG_PRESS_ACTION, KEY_ACTION_NOTHING, UserHandle.USER_CURRENT); } else { mLongPressOnMenuBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_MENU_LONG_PRESS_ACTION, KEY_ACTION_SEARCH, UserHandle.USER_CURRENT); } mHasMenuKeyEnabled |= (mPressOnMenuBehavior == KEY_ACTION_MENU) || (mLongPressOnMenuBehavior == KEY_ACTION_MENU); } if (mHasAssistKey) { mPressOnAssistBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_ASSIST_ACTION, KEY_ACTION_SEARCH, UserHandle.USER_CURRENT); mLongPressOnAssistBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_ASSIST_LONG_PRESS_ACTION, KEY_ACTION_VOICE_SEARCH, UserHandle.USER_CURRENT); mHasMenuKeyEnabled |= (mPressOnAssistBehavior == KEY_ACTION_MENU) || (mLongPressOnAssistBehavior == KEY_ACTION_MENU); } if (mHasAppSwitchKey) { mPressOnAppSwitchBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_APP_SWITCH_ACTION, KEY_ACTION_APP_SWITCH, UserHandle.USER_CURRENT); mLongPressOnAppSwitchBehavior = Settings.System.getIntForUser(resolver, Settings.System.KEY_APP_SWITCH_LONG_PRESS_ACTION, KEY_ACTION_NOTHING, UserHandle.USER_CURRENT); mHasMenuKeyEnabled |= (mPressOnAppSwitchBehavior == KEY_ACTION_MENU) || (mLongPressOnAppSwitchBehavior == KEY_ACTION_MENU); } } updateKeyAssignments(); int expandedDesktopStyle = Settings.System.getIntForUser(resolver, Settings.System.EXPANDED_DESKTOP_STYLE, 0, UserHandle.USER_CURRENT); Loading Loading @@ -1714,7 +1691,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { int navigationPresence) { mHaveBuiltInKeyboard = (keyboardPresence & PRESENCE_INTERNAL) != 0; readConfigurationDependentBehaviors(); readLidState(); applyLidSwitchState(); Loading