Loading packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +1 −9 Original line number Diff line number Diff line Loading @@ -1341,7 +1341,7 @@ public abstract class BaseStatusBar extends SystemUI implements } protected void toggleKeyboardShortcuts(int deviceId) { getKeyboardShortcuts().toggleKeyboardShortcuts(deviceId); KeyboardShortcuts.toggle(mContext, deviceId); } protected void cancelPreloadingRecents() { Loading Loading @@ -1742,14 +1742,6 @@ public abstract class BaseStatusBar extends SystemUI implements } } protected KeyboardShortcuts getKeyboardShortcuts() { if (mKeyboardShortcuts == null) { mKeyboardShortcuts = new KeyboardShortcuts(mContext); } return mKeyboardShortcuts; } public void startPendingIntentDismissingKeyguard(final PendingIntent intent) { if (!isDeviceProvisioned()) return; Loading packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcuts.java +61 −24 Original line number Diff line number Diff line Loading @@ -70,6 +70,10 @@ import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG; */ public final class KeyboardShortcuts { private static final String TAG = KeyboardShortcuts.class.getSimpleName(); private static final Object sLock = new Object(); private static KeyboardShortcuts sInstance; private static boolean sIsShowing; private final SparseArray<String> mSpecialCharacterNames = new SparseArray<>(); private final SparseArray<String> mModifierNames = new SparseArray<>(); private final SparseArray<Drawable> mSpecialCharacterDrawables = new SparseArray<>(); Loading @@ -80,7 +84,7 @@ public final class KeyboardShortcuts { private final IPackageManager mPackageManager; private final OnClickListener mDialogCloseListener = new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dismissKeyboardShortcutsDialog(); dismissKeyboardShortcuts(); } }; private final Comparator<KeyboardShortcutInfo> mApplicationItemsComparator = Loading Loading @@ -108,12 +112,49 @@ public final class KeyboardShortcuts { private Dialog mKeyboardShortcutsDialog; private KeyCharacterMap mKeyCharacterMap; public KeyboardShortcuts(Context context) { private KeyboardShortcuts(Context context) { this.mContext = new ContextThemeWrapper(context, android.R.style.Theme_Material_Light); this.mPackageManager = AppGlobals.getPackageManager(); loadResources(context); } private static KeyboardShortcuts getInstance(Context context) { if (sInstance == null) { sInstance = new KeyboardShortcuts(context); } return sInstance; } public static void show(Context context, int deviceId) { synchronized (sLock) { if (sInstance != null && !sInstance.mContext.equals(context)) { dismiss(); } getInstance(context).showKeyboardShortcuts(deviceId); sIsShowing = true; } } public static void toggle(Context context, int deviceId) { synchronized (sLock) { if (sIsShowing) { dismiss(); } else { show(context, deviceId); } } } public static void dismiss() { synchronized (sLock) { if (sInstance != null) { sInstance.dismissKeyboardShortcuts(); sInstance = null; } sIsShowing = false; } } private void loadResources(Context context) { mSpecialCharacterNames.put( KeyEvent.KEYCODE_HOME, context.getString(R.string.keyboard_key_home)); Loading Loading @@ -277,27 +318,6 @@ public final class KeyboardShortcuts { KeyEvent.META_META_ON, context.getDrawable(R.drawable.ic_ksh_key_meta)); } public void toggleKeyboardShortcuts(int deviceId) { retrieveKeyCharacterMap(deviceId); if (mKeyboardShortcutsDialog == null) { Recents.getSystemServices().requestKeyboardShortcuts(mContext, new KeyboardShortcutsReceiver() { @Override public void onKeyboardShortcutsReceived( final List<KeyboardShortcutGroup> result) { result.add(getSystemShortcuts()); final KeyboardShortcutGroup appShortcuts = getDefaultApplicationShortcuts(); if (appShortcuts != null) { result.add(appShortcuts); } showKeyboardShortcutsDialog(result); } }, deviceId); } else { dismissKeyboardShortcutsDialog(); } } /** * Retrieves a {@link KeyCharacterMap} and assigns it to mKeyCharacterMap. If the given id is an * existing device, that device's map is used. Otherwise, it checks first all available devices Loading Loading @@ -327,7 +347,24 @@ public final class KeyboardShortcuts { mKeyCharacterMap = inputDevice.getKeyCharacterMap(); } public void dismissKeyboardShortcutsDialog() { private void showKeyboardShortcuts(int deviceId) { retrieveKeyCharacterMap(deviceId); Recents.getSystemServices().requestKeyboardShortcuts(mContext, new KeyboardShortcutsReceiver() { @Override public void onKeyboardShortcutsReceived( final List<KeyboardShortcutGroup> result) { result.add(getSystemShortcuts()); final KeyboardShortcutGroup appShortcuts = getDefaultApplicationShortcuts(); if (appShortcuts != null) { result.add(appShortcuts); } showKeyboardShortcutsDialog(result); } }, deviceId); } private void dismissKeyboardShortcuts() { if (mKeyboardShortcutsDialog != null) { mKeyboardShortcutsDialog.dismiss(); mKeyboardShortcutsDialog = null; Loading packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcutsReceiver.java +1 −2 Original line number Diff line number Diff line Loading @@ -26,8 +26,7 @@ public class KeyboardShortcutsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_SHOW_KEYBOARD_SHORTCUTS.equals(intent.getAction())) { final KeyboardShortcuts keyboardShortcuts = new KeyboardShortcuts(context); keyboardShortcuts.toggleKeyboardShortcuts(-1 /* deviceId unknown */); KeyboardShortcuts.show(context, -1 /* deviceId unknown */); } } } packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +2 −1 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ import com.android.systemui.statusbar.DragDownHelper; import com.android.systemui.statusbar.EmptyShadeView; import com.android.systemui.statusbar.ExpandableNotificationRow; import com.android.systemui.statusbar.GestureRecorder; import com.android.systemui.statusbar.KeyboardShortcuts; import com.android.systemui.statusbar.KeyguardIndicationController; import com.android.systemui.statusbar.NotificationData; import com.android.systemui.statusbar.NotificationData.Entry; Loading Loading @@ -3161,7 +3162,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, if (DEBUG) Log.v(TAG, "onReceive: " + intent); String action = intent.getAction(); if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) { getKeyboardShortcuts().dismissKeyboardShortcutsDialog(); KeyboardShortcuts.dismiss(); if (isCurrentProfile(getSendingUserId())) { int flags = CommandQueue.FLAG_EXCLUDE_NONE; String reason = intent.getStringExtra("reason"); Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +1 −9 Original line number Diff line number Diff line Loading @@ -1341,7 +1341,7 @@ public abstract class BaseStatusBar extends SystemUI implements } protected void toggleKeyboardShortcuts(int deviceId) { getKeyboardShortcuts().toggleKeyboardShortcuts(deviceId); KeyboardShortcuts.toggle(mContext, deviceId); } protected void cancelPreloadingRecents() { Loading Loading @@ -1742,14 +1742,6 @@ public abstract class BaseStatusBar extends SystemUI implements } } protected KeyboardShortcuts getKeyboardShortcuts() { if (mKeyboardShortcuts == null) { mKeyboardShortcuts = new KeyboardShortcuts(mContext); } return mKeyboardShortcuts; } public void startPendingIntentDismissingKeyguard(final PendingIntent intent) { if (!isDeviceProvisioned()) return; Loading
packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcuts.java +61 −24 Original line number Diff line number Diff line Loading @@ -70,6 +70,10 @@ import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG; */ public final class KeyboardShortcuts { private static final String TAG = KeyboardShortcuts.class.getSimpleName(); private static final Object sLock = new Object(); private static KeyboardShortcuts sInstance; private static boolean sIsShowing; private final SparseArray<String> mSpecialCharacterNames = new SparseArray<>(); private final SparseArray<String> mModifierNames = new SparseArray<>(); private final SparseArray<Drawable> mSpecialCharacterDrawables = new SparseArray<>(); Loading @@ -80,7 +84,7 @@ public final class KeyboardShortcuts { private final IPackageManager mPackageManager; private final OnClickListener mDialogCloseListener = new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dismissKeyboardShortcutsDialog(); dismissKeyboardShortcuts(); } }; private final Comparator<KeyboardShortcutInfo> mApplicationItemsComparator = Loading Loading @@ -108,12 +112,49 @@ public final class KeyboardShortcuts { private Dialog mKeyboardShortcutsDialog; private KeyCharacterMap mKeyCharacterMap; public KeyboardShortcuts(Context context) { private KeyboardShortcuts(Context context) { this.mContext = new ContextThemeWrapper(context, android.R.style.Theme_Material_Light); this.mPackageManager = AppGlobals.getPackageManager(); loadResources(context); } private static KeyboardShortcuts getInstance(Context context) { if (sInstance == null) { sInstance = new KeyboardShortcuts(context); } return sInstance; } public static void show(Context context, int deviceId) { synchronized (sLock) { if (sInstance != null && !sInstance.mContext.equals(context)) { dismiss(); } getInstance(context).showKeyboardShortcuts(deviceId); sIsShowing = true; } } public static void toggle(Context context, int deviceId) { synchronized (sLock) { if (sIsShowing) { dismiss(); } else { show(context, deviceId); } } } public static void dismiss() { synchronized (sLock) { if (sInstance != null) { sInstance.dismissKeyboardShortcuts(); sInstance = null; } sIsShowing = false; } } private void loadResources(Context context) { mSpecialCharacterNames.put( KeyEvent.KEYCODE_HOME, context.getString(R.string.keyboard_key_home)); Loading Loading @@ -277,27 +318,6 @@ public final class KeyboardShortcuts { KeyEvent.META_META_ON, context.getDrawable(R.drawable.ic_ksh_key_meta)); } public void toggleKeyboardShortcuts(int deviceId) { retrieveKeyCharacterMap(deviceId); if (mKeyboardShortcutsDialog == null) { Recents.getSystemServices().requestKeyboardShortcuts(mContext, new KeyboardShortcutsReceiver() { @Override public void onKeyboardShortcutsReceived( final List<KeyboardShortcutGroup> result) { result.add(getSystemShortcuts()); final KeyboardShortcutGroup appShortcuts = getDefaultApplicationShortcuts(); if (appShortcuts != null) { result.add(appShortcuts); } showKeyboardShortcutsDialog(result); } }, deviceId); } else { dismissKeyboardShortcutsDialog(); } } /** * Retrieves a {@link KeyCharacterMap} and assigns it to mKeyCharacterMap. If the given id is an * existing device, that device's map is used. Otherwise, it checks first all available devices Loading Loading @@ -327,7 +347,24 @@ public final class KeyboardShortcuts { mKeyCharacterMap = inputDevice.getKeyCharacterMap(); } public void dismissKeyboardShortcutsDialog() { private void showKeyboardShortcuts(int deviceId) { retrieveKeyCharacterMap(deviceId); Recents.getSystemServices().requestKeyboardShortcuts(mContext, new KeyboardShortcutsReceiver() { @Override public void onKeyboardShortcutsReceived( final List<KeyboardShortcutGroup> result) { result.add(getSystemShortcuts()); final KeyboardShortcutGroup appShortcuts = getDefaultApplicationShortcuts(); if (appShortcuts != null) { result.add(appShortcuts); } showKeyboardShortcutsDialog(result); } }, deviceId); } private void dismissKeyboardShortcuts() { if (mKeyboardShortcutsDialog != null) { mKeyboardShortcutsDialog.dismiss(); mKeyboardShortcutsDialog = null; Loading
packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcutsReceiver.java +1 −2 Original line number Diff line number Diff line Loading @@ -26,8 +26,7 @@ public class KeyboardShortcutsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_SHOW_KEYBOARD_SHORTCUTS.equals(intent.getAction())) { final KeyboardShortcuts keyboardShortcuts = new KeyboardShortcuts(context); keyboardShortcuts.toggleKeyboardShortcuts(-1 /* deviceId unknown */); KeyboardShortcuts.show(context, -1 /* deviceId unknown */); } } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +2 −1 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ import com.android.systemui.statusbar.DragDownHelper; import com.android.systemui.statusbar.EmptyShadeView; import com.android.systemui.statusbar.ExpandableNotificationRow; import com.android.systemui.statusbar.GestureRecorder; import com.android.systemui.statusbar.KeyboardShortcuts; import com.android.systemui.statusbar.KeyguardIndicationController; import com.android.systemui.statusbar.NotificationData; import com.android.systemui.statusbar.NotificationData.Entry; Loading Loading @@ -3161,7 +3162,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, if (DEBUG) Log.v(TAG, "onReceive: " + intent); String action = intent.getAction(); if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) { getKeyboardShortcuts().dismissKeyboardShortcutsDialog(); KeyboardShortcuts.dismiss(); if (isCurrentProfile(getSendingUserId())) { int flags = CommandQueue.FLAG_EXCLUDE_NONE; String reason = intent.getStringExtra("reason"); Loading