recovery: Add ability to set title lines
Add the ability to change the contents of the title lines, displayed at the top of the screen. Once set, the same lines are displayed for all menus until changed again. Test: Recovery works Bug: 78793464 Change-Id: I7ef5594b0d76dbbd2e01ad7508863af1270b2a2a
This commit is contained in:
@@ -1063,6 +1063,11 @@ Device::BuiltinAction start_recovery(Device* device, const std::vector<std::stri
|
||||
ui->SetStage(st_cur, st_max);
|
||||
}
|
||||
|
||||
std::vector<std::string> title_lines =
|
||||
android::base::Split(android::base::GetProperty("ro.bootimage.build.fingerprint", ""), ":");
|
||||
title_lines.insert(std::begin(title_lines), "Android Recovery");
|
||||
ui->SetTitle(title_lines);
|
||||
|
||||
device->StartRecovery();
|
||||
|
||||
printf("Command:");
|
||||
|
||||
@@ -496,6 +496,10 @@ int ScreenRecoveryUI::DrawWrappedTextLines(int x, int y,
|
||||
return offset;
|
||||
}
|
||||
|
||||
void ScreenRecoveryUI::SetTitle(const std::vector<std::string>& lines) {
|
||||
title_lines_ = lines;
|
||||
}
|
||||
|
||||
// Redraws everything on the screen. Does not flip pages. Should only be called with updateMutex
|
||||
// locked.
|
||||
void ScreenRecoveryUI::draw_screen_locked() {
|
||||
@@ -529,11 +533,9 @@ void ScreenRecoveryUI::draw_menu_and_text_buffer_locked(
|
||||
int x = kMarginWidth + kMenuIndent;
|
||||
|
||||
SetColor(INFO);
|
||||
y += DrawTextLine(x, y, "Android Recovery", true);
|
||||
std::string recovery_fingerprint =
|
||||
android::base::GetProperty("ro.bootimage.build.fingerprint", "");
|
||||
for (const auto& chunk : android::base::Split(recovery_fingerprint, ":")) {
|
||||
y += DrawTextLine(x, y, chunk, false);
|
||||
|
||||
for (size_t i = 0; i < title_lines_.size(); i++) {
|
||||
y += DrawTextLine(x, y, title_lines_[i], i == 0);
|
||||
}
|
||||
|
||||
y += DrawTextLines(x, y, help_message);
|
||||
|
||||
@@ -141,6 +141,7 @@ class ScreenRecoveryUI : public RecoveryUI {
|
||||
size_t ShowMenu(const std::vector<std::string>& headers, const std::vector<std::string>& items,
|
||||
size_t initial_selection, bool menu_only,
|
||||
const std::function<int(int, bool)>& key_handler) override;
|
||||
void SetTitle(const std::vector<std::string>& lines) override;
|
||||
|
||||
void KeyLongPress(int) override;
|
||||
|
||||
@@ -266,6 +267,8 @@ class ScreenRecoveryUI : public RecoveryUI {
|
||||
bool show_text;
|
||||
bool show_text_ever; // has show_text ever been true?
|
||||
|
||||
std::vector<std::string> title_lines_;
|
||||
|
||||
bool scrollable_menu_;
|
||||
std::unique_ptr<Menu> menu_;
|
||||
|
||||
|
||||
@@ -67,6 +67,8 @@ class StubRecoveryUI : public RecoveryUI {
|
||||
const std::function<int(int, bool)>& /* key_handler */) override {
|
||||
return initial_selection;
|
||||
}
|
||||
|
||||
void SetTitle(const std::vector<std::string>& /* lines */) override {}
|
||||
};
|
||||
|
||||
#endif // RECOVERY_STUB_UI_H
|
||||
|
||||
2
ui.h
2
ui.h
@@ -134,6 +134,8 @@ class RecoveryUI {
|
||||
|
||||
// --- menu display ---
|
||||
|
||||
virtual void SetTitle(const std::vector<std::string>& lines) = 0;
|
||||
|
||||
// Displays a menu with the given 'headers' and 'items'. The supplied 'key_handler' callback,
|
||||
// which is typically bound to Device::HandleMenuKey(), should return the expected action for the
|
||||
// given key code and menu visibility (e.g. to move the cursor or to select an item). Caller sets
|
||||
|
||||
Reference in New Issue
Block a user