summaryrefslogtreecommitdiffstats
path: root/wear_ui.h
diff options
context:
space:
mode:
Diffstat (limited to 'wear_ui.h')
-rw-r--r--wear_ui.h137
1 files changed, 137 insertions, 0 deletions
diff --git a/wear_ui.h b/wear_ui.h
new file mode 100644
index 0000000..839a264
--- /dev/null
+++ b/wear_ui.h
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef RECOVERY_WEAR_UI_H
+#define RECOVERY_WEAR_UI_H
+
+#include <pthread.h>
+#include <stdio.h>
+
+#include "ui.h"
+#include "minui/minui.h"
+
+class WearRecoveryUI : public RecoveryUI {
+ public:
+ WearRecoveryUI();
+
+ void Init();
+ void SetLocale(const char* locale);
+
+ // 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);
+
+ // text log
+ void ShowText(bool visible);
+ bool IsTextVisible();
+ bool WasTextEverVisible();
+
+ // printing messages
+ void Print(const char* fmt, ...);
+ void ShowFile(const char* filename);
+ void ShowFile(FILE* fp);
+
+ // menu display
+ 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);
+
+ protected:
+ int progress_bar_height, progress_bar_width;
+
+ // progress bar vertical position, it's centered horizontally
+ int progress_bar_y;
+
+ // outer of window
+ int outer_height, outer_width;
+
+ // Unusable rows when displaying the recovery menu, including the lines
+ // for headers (Android Recovery, build id and etc) and the bottom lines
+ // that may otherwise go out of the screen.
+ int menu_unusable_rows;
+
+ // number of intro frames (default: 22) and loop frames (default: 60)
+ int intro_frames;
+ int loop_frames;
+
+ private:
+ Icon currentIcon;
+
+ bool intro_done;
+
+ int current_frame;
+
+ int animation_fps;
+
+ bool rtl_locale;
+
+ pthread_mutex_t updateMutex;
+ GRSurface* backgroundIcon[5];
+ GRSurface* *introFrames;
+ GRSurface* *loopFrames;
+
+ ProgressType progressBarType;
+
+ float progressScopeStart, progressScopeSize, progress;
+ double progressScopeTime, progressScopeDuration;
+
+ static const int kMaxCols = 96;
+ static const int kMaxRows = 96;
+
+ // Log text overlay, displayed when a magic key is pressed
+ char text[kMaxRows][kMaxCols];
+ size_t text_cols, text_rows;
+ // Number of text rows seen on screen
+ int visible_text_rows;
+ size_t text_col, text_row, text_top;
+ bool show_text;
+ bool show_text_ever; // has show_text ever been true?
+
+ char menu[kMaxRows][kMaxCols];
+ bool show_menu;
+ const char* const* menu_headers_;
+ int menu_items, menu_sel;
+ int menu_start, menu_end;
+
+ pthread_t progress_t;
+
+ private:
+ void draw_background_locked(Icon icon);
+ void draw_progress_locked();
+ void draw_screen_locked();
+ void update_screen_locked();
+ static void* progress_thread(void* cookie);
+ void progress_loop();
+ void LoadBitmap(const char* filename, GRSurface** surface);
+ void PutChar(char);
+ void ClearText();
+ void DrawTextLine(int x, int* y, const char* line, bool bold);
+ void DrawTextLines(int x, int* y, const char* const* lines);
+};
+
+#endif // RECOVERY_WEAR_UI_H