From 06d6208a29c845983832351c6a651329ecb30a9f Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Mon, 9 Dec 2013 00:33:52 -0800 Subject: Add back and home key handling. Change-Id: I5abac0f1b59d480b859f77ce16126f13fccd440b --- recovery.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'recovery.cpp') diff --git a/recovery.cpp b/recovery.cpp index 5288dab..b7641aa 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -600,7 +600,7 @@ get_menu_selection(const char* const * headers, const char* const * items, int selected = initial_selection; int chosen_item = -1; - while (chosen_item < 0) { + while (chosen_item < 0 && chosen_item != Device::kGoBack) { int key = ui->WaitKey(); int visible = ui->IsTextVisible(); @@ -612,6 +612,8 @@ get_menu_selection(const char* const * headers, const char* const * items, ui->EndMenu(); return 0; // XXX fixme } + } else if (key == -2) { // we are returning from ui_cancel_wait_key(): trigger a GO_BACK + return Device::kGoBack; } int action = device->HandleMenuKey(key, visible); @@ -629,6 +631,9 @@ get_menu_selection(const char* const * headers, const char* const * items, break; case Device::kNoAction: break; + case Device::kGoBack: + chosen_item = Device::kGoBack; + break; } } else if (!menu_only) { chosen_item = action; @@ -864,6 +869,8 @@ static int apply_from_sdcard(Device* device, bool* wipe_cache) { return status; } +int ui_root_menu = 0; + // Return REBOOT, SHUTDOWN, or REBOOT_BOOTLOADER. Returning NO_ACTION // means to take the default, which is to reboot or shutdown depending // on if the --shutdown_after flag was passed to recovery. @@ -871,6 +878,7 @@ static Device::BuiltinAction prompt_and_wait(Device* device, int status) { for (;;) { finish_recovery(NULL); + ui_root_menu = 1; switch (status) { case INSTALL_SUCCESS: case INSTALL_NONE: @@ -885,6 +893,7 @@ prompt_and_wait(Device* device, int status) { ui->SetProgressType(RecoveryUI::EMPTY); int chosen_item = get_menu_selection(nullptr, device->GetMenuItems(), 0, 0, device); + ui_root_menu = 0; // device-specific code may take some action here. It may // return one of the core actions handled in the switch -- cgit v1.1