From 498cda6ef6c610efb055221d6c689185d49447bb Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Thu, 14 Apr 2016 16:49:04 -0700 Subject: Update the system update animation. Switch to a Wear-like intro/loop system. We don't have an intro yet, but hopefully this will let Wear delete more code when they move to N. Unlike them, we don't hard-code the number of frames: we just look to see what we have available. We do hard-code the fps though. Also add a graphics test mode so you can see a demo of the UI components without having to actually apply an OTA. Also fix a bug where default locale is null rather than en-US: it's more useful to show _some_ text if we don't have a locale (which should only be during development anyway). Bug: http://b/26548285 Change-Id: I63422e3fef3c41109f924d96fb5ded0b3ae7815d --- screen_ui.h | 50 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 18 deletions(-) (limited to 'screen_ui.h') diff --git a/screen_ui.h b/screen_ui.h index 9e1b2dfa1..233ff55e6 100644 --- a/screen_ui.h +++ b/screen_ui.h @@ -67,14 +67,23 @@ class ScreenRecoveryUI : public RecoveryUI { }; void SetColor(UIElement e); - private: + protected: Icon currentIcon; - int installingFrame; + const char* locale; + bool intro_done; + int current_frame; + + GRSurface* error_icon; + + GRSurface* erasing_text; + GRSurface* error_text; + GRSurface* installing_text; + GRSurface* no_command_text; + + GRSurface** introFrames; + GRSurface** loopFrames; - GRSurface* backgroundIcon[5]; - GRSurface* backgroundText[5]; - GRSurface** installation; GRSurface* progressBarEmpty; GRSurface* progressBarFill; GRSurface* stageMarkerEmpty; @@ -107,21 +116,31 @@ class ScreenRecoveryUI : public RecoveryUI { pthread_t progress_thread_; - // The following two are parsed from the image file - // (e.g. '/res/images/icon_installing.png'). + // Number of intro frames and loop frames in the animation. + int intro_frames; + int loop_frames; + + // Number of frames per sec (default: 30) for both parts of the animation. int animation_fps; - int installing_frames; int iconX, iconY; int stage, max_stage; - void draw_background_locked(Icon icon); + int char_width_; + int char_height_; + pthread_mutex_t updateMutex; + bool rtl_locale; + + void draw_background_locked(); void draw_progress_locked(); void draw_screen_locked(); void update_screen_locked(); void update_progress_locked(); + GRSurface* GetCurrentFrame(); + GRSurface* GetCurrentText(); + static void* ProgressThreadStartRoutine(void* data); void ProgressThreadLoop(); @@ -130,16 +149,11 @@ class ScreenRecoveryUI : public RecoveryUI { void PutChar(char); void ClearText(); - void DrawHorizontalRule(int* y); - - void LoadBitmapArray(const char* filename, int* frames, int* fps, GRSurface*** surface); - void LoadLocalizedBitmap(const char* filename, GRSurface** surface); - protected: - int char_width_; - int char_height_; - pthread_mutex_t updateMutex; - bool rtl_locale; + void LoadAnimation(); void LoadBitmap(const char* filename, GRSurface** surface); + void LoadLocalizedBitmap(const char* filename, GRSurface** surface); + + void DrawHorizontalRule(int* y); void DrawTextLine(int x, int* y, const char* line, bool bold); void DrawTextLines(int x, int* y, const char* const* lines); }; -- cgit v1.2.3