From f7f9e50528761022989c4f0cac6a92716b54674f Mon Sep 17 00:00:00 2001 From: Prashant Malani Date: Thu, 10 Mar 2016 03:40:20 +0000 Subject: Revert "recovery: More refactoring of WearUI" This reverts commit 1c7b2230d8aac9f064f68c48b6aa26aca000cc9d. This change can lead to the derived class indirectly (and incorrectly) calling some functions from the base class, which can lead to unpredictable behavior. Bug: 27407422 Change-Id: I126a7489b0787dc195e942e2ceea6769de20d70c --- wear_ui.cpp | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) (limited to 'wear_ui.cpp') diff --git a/wear_ui.cpp b/wear_ui.cpp index ef48b788b..65bcd8494 100644 --- a/wear_ui.cpp +++ b/wear_ui.cpp @@ -59,6 +59,7 @@ WearRecoveryUI::WearRecoveryUI() : intro_frames(22), loop_frames(60), animation_fps(30), + currentIcon(NONE), intro_done(false), current_frame(0), rtl_locale(false), @@ -365,6 +366,57 @@ void WearRecoveryUI::Init() RecoveryUI::Init(); } +void WearRecoveryUI::SetBackground(Icon icon) +{ + pthread_mutex_lock(&updateMutex); + currentIcon = icon; + update_screen_locked(); + pthread_mutex_unlock(&updateMutex); +} + +void WearRecoveryUI::SetProgressType(ProgressType type) +{ + pthread_mutex_lock(&updateMutex); + if (progressBarType != type) { + progressBarType = type; + } + progressScopeStart = 0; + progressScopeSize = 0; + progress = 0; + update_screen_locked(); + pthread_mutex_unlock(&updateMutex); +} + +void WearRecoveryUI::ShowProgress(float portion, float seconds) +{ + pthread_mutex_lock(&updateMutex); + progressBarType = DETERMINATE; + progressScopeStart += progressScopeSize; + progressScopeSize = portion; + progressScopeTime = now(); + progressScopeDuration = seconds; + progress = 0; + update_screen_locked(); + pthread_mutex_unlock(&updateMutex); +} + +void WearRecoveryUI::SetProgress(float fraction) +{ + pthread_mutex_lock(&updateMutex); + if (fraction < 0.0) fraction = 0.0; + if (fraction > 1.0) fraction = 1.0; + if (progressBarType == DETERMINATE && fraction > progress) { + // Skip updates that aren't visibly different. + int width = progress_bar_width; + float scale = width * progressScopeSize; + if ((int) (progress * scale) != (int) (fraction * scale)) { + progress = fraction; + update_screen_locked(); + } + } + pthread_mutex_unlock(&updateMutex); +} + void WearRecoveryUI::SetStage(int current, int max) { } @@ -447,6 +499,16 @@ int WearRecoveryUI::SelectMenu(int sel) { return sel; } +void WearRecoveryUI::EndMenu() { + int i; + pthread_mutex_lock(&updateMutex); + if (show_menu > 0 && text_rows > 0 && text_cols > 0) { + show_menu = 0; + update_screen_locked(); + } + pthread_mutex_unlock(&updateMutex); +} + bool WearRecoveryUI::IsTextVisible() { pthread_mutex_lock(&updateMutex); @@ -477,6 +539,13 @@ void WearRecoveryUI::ShowText(bool visible) pthread_mutex_unlock(&updateMutex); } +void WearRecoveryUI::Redraw() +{ + pthread_mutex_lock(&updateMutex); + update_screen_locked(); + pthread_mutex_unlock(&updateMutex); +} + void WearRecoveryUI::ShowFile(FILE* fp) { std::vector offsets; offsets.push_back(ftell(fp)); -- cgit v1.2.3