diff options
author | Doug Zongker <dougz@android.com> | 2013-07-31 11:28:24 -0700 |
---|---|---|
committer | Doug Zongker <dougz@android.com> | 2013-07-31 11:35:12 -0700 |
commit | c0441d171914e59941ec4f815ae0aabf56d6504f (patch) | |
tree | 2382931433409feae532e7a7fb4ac05016336196 /ui.h | |
parent | 3c3ee3bc33d35cf3939f57f6c649459280b57827 (diff) | |
download | bootable_recovery-c0441d171914e59941ec4f815ae0aabf56d6504f.zip bootable_recovery-c0441d171914e59941ec4f815ae0aabf56d6504f.tar.gz bootable_recovery-c0441d171914e59941ec4f815ae0aabf56d6504f.tar.bz2 |
notify about pending long press
Recovery changes:
- add a method to the UI class that is called when a key is held down
long enough to be a "long press" (but before it is released).
Device-specific subclasses can override this to indicate a long
press.
- do color selection for ScreenRecoveryUI's menu-and-log drawing
function. Subclasses can override this to customize the colors they
use for various elements.
- Include the value of ro.build.display.id in the menu headers, so you
can see on the screen what version of recovery you are running.
Change-Id: I426a6daf892b9011638e2035aebfa2831d4f596d
Diffstat (limited to 'ui.h')
-rw-r--r-- | ui.h | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -80,8 +80,17 @@ class RecoveryUI { enum KeyAction { ENQUEUE, TOGGLE, REBOOT, IGNORE }; virtual KeyAction CheckKey(int key); + // Called immediately before each call to CheckKey(), tell you if + // the key was long-pressed. virtual void NextCheckKeyIsLong(bool is_long_press); + // Called when a key is held down long enough to have been a + // long-press (but before the key is released). This means that + // if the key is eventually registered (released without any other + // keys being pressed in the meantime), NextCheckKeyIsLong() will + // be called with "true". + virtual void KeyLongPress(int key); + // --- menu display --- // Display some header text followed by a menu of items, which appears @@ -108,15 +117,25 @@ private: int key_queue[256], key_queue_len; char key_pressed[KEY_MAX + 1]; // under key_queue_mutex int key_last_down; // under key_queue_mutex - clock_t key_down_time; // under key_queue_mutex + bool key_long_press; // under key_queue_mutex + int key_down_count; // under key_queue_mutex int rel_sum; + typedef struct { + RecoveryUI* ui; + int key_code; + int count; + } key_timer_t; + pthread_t input_t; static void* input_thread(void* cookie); static int input_callback(int fd, short revents, void* data); void process_key(int key_code, int updown); bool usb_connected(); + + static void* time_key_helper(void* cookie); + void time_key(int key_code, int count); }; #endif // RECOVERY_UI_H |