From 9a2a20503c214ed25a897c34981be3aaef44c36d Mon Sep 17 00:00:00 2001 From: Matt Mower Date: Tue, 31 May 2016 21:31:22 -0500 Subject: GUI: Add countdown & cancel to install auto-reboot Provide a countdown from 5 sec for the automated reboot after install. Include a cancel button to interrupt the process. Change-Id: Ib5e1447918adfde45eba361c088800812b690890 --- gui/action.cpp | 24 ++++++++++++---- gui/objects.hpp | 1 + gui/theme/common/landscape.xml | 60 +++++++++++++++++++++++++++++++++++++++ gui/theme/common/languages/en.xml | 2 +- gui/theme/common/portrait.xml | 60 +++++++++++++++++++++++++++++++++++++++ gui/theme/common/watch.xml | 57 +++++++++++++++++++++++++++++++++++++ 6 files changed, 197 insertions(+), 7 deletions(-) (limited to 'gui') diff --git a/gui/action.cpp b/gui/action.cpp index 56336f408..328fc2c52 100644 --- a/gui/action.cpp +++ b/gui/action.cpp @@ -180,6 +180,7 @@ GUIAction::GUIAction(xml_node<>* node) ADD_ACTION(cancelzip); ADD_ACTION(queueclear); ADD_ACTION(sleep); + ADD_ACTION(sleepcounter); ADD_ACTION(appenddatetobackupname); ADD_ACTION(generatebackupname); ADD_ACTION(checkpartitionlist); @@ -779,6 +780,23 @@ int GUIAction::sleep(std::string arg) return 0; } +int GUIAction::sleepcounter(std::string arg) +{ + operation_start("SleepCounter"); + // Ensure user notices countdown in case it needs to be cancelled + blankTimer.resetTimerAndUnblank(); + int total = atoi(arg.c_str()); + for (int t = total; t > 0; t--) { + int progress = (int)(((float)(total-t)/(float)total)*100.0); + DataManager::SetValue("ui_progress", progress); + ::sleep(1); + DataManager::SetValue("tw_sleep", t-1); + } + DataManager::SetValue("ui_progress", 100); + operation_end(0); + return 0; +} + int GUIAction::appenddatetobackupname(std::string arg __unused) { operation_start("AppendDateToBackupName"); @@ -1024,12 +1042,6 @@ int GUIAction::flash(std::string arg) reinject_after_flash(); PartitionManager.Update_System_Details(); - if (DataManager::GetIntValue("tw_install_reboot") > 0 && ret_val == 0) { - gui_msg("install_reboot=Rebooting in 5 seconds"); - usleep(5000000); - TWFunc::tw_reboot(rb_system); - usleep(5000000); // another sleep while we wait for the reboot to occur - } operation_end(ret_val); // This needs to be after the operation_end call so we change pages before we change variables that we display on the screen DataManager::SetValue(TW_ZIP_QUEUE_COUNT, zip_queue_index); diff --git a/gui/objects.hpp b/gui/objects.hpp index 84a9e5ecf..0d969279a 100644 --- a/gui/objects.hpp +++ b/gui/objects.hpp @@ -313,6 +313,7 @@ protected: int cancelzip(std::string arg); int queueclear(std::string arg); int sleep(std::string arg); + int sleepcounter(std::string arg); int appenddatetobackupname(std::string arg); int generatebackupname(std::string arg); int checkpartitionlist(std::string arg); diff --git a/gui/theme/common/landscape.xml b/gui/theme/common/landscape.xml index 688cef23e..9272db01b 100644 --- a/gui/theme/common/landscape.xml +++ b/gui/theme/common/landscape.xml @@ -578,6 +578,66 @@ clear_vars + + + + + + + + + tw_sleep=%tw_sleep_total% + flash_sleep_and_reboot + + + + + +