Revert "recovery: More refactoring of WearUI"
This reverts commit 1c7b2230d8
.
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
This commit is contained in:
parent
1c7b2230d8
commit
f7f9e50528
4 changed files with 84 additions and 4 deletions
|
@ -51,6 +51,7 @@ static double now() {
|
|||
}
|
||||
|
||||
ScreenRecoveryUI::ScreenRecoveryUI() :
|
||||
currentIcon(NONE),
|
||||
installingFrame(0),
|
||||
locale(nullptr),
|
||||
rtl_locale(false),
|
||||
|
@ -75,8 +76,7 @@ ScreenRecoveryUI::ScreenRecoveryUI() :
|
|||
animation_fps(-1),
|
||||
installing_frames(-1),
|
||||
stage(-1),
|
||||
max_stage(-1),
|
||||
currentIcon(NONE) {
|
||||
max_stage(-1) {
|
||||
|
||||
for (int i = 0; i < 5; i++) {
|
||||
backgroundIcon[i] = nullptr;
|
||||
|
|
|
@ -68,6 +68,7 @@ class ScreenRecoveryUI : public RecoveryUI {
|
|||
void SetColor(UIElement e);
|
||||
|
||||
private:
|
||||
Icon currentIcon;
|
||||
int installingFrame;
|
||||
const char* locale;
|
||||
bool rtl_locale;
|
||||
|
@ -138,8 +139,6 @@ class ScreenRecoveryUI : public RecoveryUI {
|
|||
void LoadBitmap(const char* filename, GRSurface** surface);
|
||||
void LoadBitmapArray(const char* filename, int* frames, int* fps, GRSurface*** surface);
|
||||
void LoadLocalizedBitmap(const char* filename, GRSurface** surface);
|
||||
protected:
|
||||
Icon currentIcon;
|
||||
};
|
||||
|
||||
#endif // RECOVERY_UI_H
|
||||
|
|
69
wear_ui.cpp
69
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<long> offsets;
|
||||
offsets.push_back(ftell(fp));
|
||||
|
|
12
wear_ui.h
12
wear_ui.h
|
@ -24,6 +24,13 @@ class WearRecoveryUI : public ScreenRecoveryUI {
|
|||
WearRecoveryUI();
|
||||
|
||||
void Init();
|
||||
// overall recovery state ("background image")
|
||||
void SetBackground(Icon icon);
|
||||
|
||||
// progress indicator
|
||||
void SetProgressType(ProgressType type);
|
||||
void ShowProgress(float portion, float seconds);
|
||||
void SetProgress(float fraction);
|
||||
|
||||
void SetStage(int current, int max);
|
||||
|
||||
|
@ -42,6 +49,9 @@ class WearRecoveryUI : public ScreenRecoveryUI {
|
|||
void StartMenu(const char* const * headers, const char* const * items,
|
||||
int initial_selection);
|
||||
int SelectMenu(int sel);
|
||||
void EndMenu();
|
||||
|
||||
void Redraw();
|
||||
|
||||
enum UIElement { HEADER, MENU, MENU_SEL_BG, MENU_SEL_FG, LOG, TEXT_FILL };
|
||||
virtual void SetColor(UIElement e);
|
||||
|
@ -68,6 +78,8 @@ class WearRecoveryUI : public ScreenRecoveryUI {
|
|||
int animation_fps;
|
||||
|
||||
private:
|
||||
Icon currentIcon;
|
||||
|
||||
bool intro_done;
|
||||
|
||||
int current_frame;
|
||||
|
|
Loading…
Reference in a new issue