From 64da12ab1f472e01325b6c6d094153ac110eaf7b Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Tue, 4 Jan 2011 19:57:47 -0800 Subject: Add dispatch key shortcut window callback. Enables Activities and Dialogs to implement key shortcut behavior. Useful for global key shortcuts that are not bound to the focused view or to a menu. Change-Id: If377d20b227ee1c5cac84c47c9630b2d77f67e2c --- core/java/android/app/Dialog.java | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'core/java/android/app/Dialog.java') diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java index e69e664..6791400 100644 --- a/core/java/android/app/Dialog.java +++ b/core/java/android/app/Dialog.java @@ -571,7 +571,21 @@ public class Dialog implements DialogInterface, Window.Callback, cancel(); } } - + + /** + * Called when an key shortcut event is not handled by any of the views in the Dialog. + * Override this method to implement global key shortcuts for the Dialog. + * Key shortcuts can also be implemented by setting the + * {@link MenuItem#setShortcut(char, char) shortcut} property of menu items. + * + * @param keyCode The value in event.getKeyCode(). + * @param event Description of the key event. + * @return True if the key shortcut was handled. + */ + public boolean onKeyShortcut(int keyCode, KeyEvent event) { + return false; + } + /** * Called when a touch screen event was not handled by any of the views * under it. This is most useful to process touch events that happen outside @@ -659,6 +673,22 @@ public class Dialog implements DialogInterface, Window.Callback, } /** + * Called to process a key shortcut event. + * You can override this to intercept all key shortcut events before they are + * dispatched to the window. Be sure to call this implementation for key shortcut + * events that should be handled normally. + * + * @param event The key shortcut event. + * @return True if this event was consumed. + */ + public boolean dispatchKeyShortcutEvent(KeyEvent event) { + if (mWindow.superDispatchKeyShortcutEvent(event)) { + return true; + } + return onKeyShortcut(event.getKeyCode(), event); + } + + /** * Called to process touch screen events. You can override this to * intercept all touch screen events before they are dispatched to the * window. Be sure to call this implementation for touch screen events -- cgit v1.1