ready screen: hide READY! text after first drive, reset on ignition cycle
Some checks failed
prebuilt / build prebuilt (push) Has been cancelled
badges / create badges (push) Has been cancelled

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-14 02:51:13 -05:00
parent 2b522021d5
commit 55f73fd421
3 changed files with 13 additions and 2 deletions

View File

@@ -98,6 +98,7 @@ void HomeWindow::updateState(const UIState &s) {
} else if (!parked && was_parked_onroad) {
LOGW("CLP UI: drive transition -> showing onroad");
slayout->setCurrentWidget(onroad);
ready->has_driven = true;
}
was_parked_onroad = parked;

View File

@@ -70,8 +70,8 @@ void ReadyWindow::paintEvent(QPaintEvent *event) {
painter.drawPixmap(x, y, scaled);
}
if (error_msg.isEmpty()) {
// "READY!" 8-bit text sprite, 2x size, 15% below center
if (error_msg.isEmpty() && !has_driven) {
// "READY!" 8-bit text sprite, 15% below center — only before first drive
static QPixmap ready_text("/data/openpilot/selfdrive/clearpilot/theme/clearpilot/images/ready_text.png");
if (!ready_text.isNull()) {
int tx = (width() - ready_text.width()) / 2;
@@ -125,5 +125,13 @@ void ReadyWindow::refresh() {
if (error_msg != prev_error) changed = true;
}
// Reset has_driven on ignition off→on (power cycle)
bool started = uiState()->scene.started;
if (!last_started && started) {
has_driven = false;
changed = true;
}
last_started = started;
if (changed) update();
}

View File

@@ -18,6 +18,7 @@ class ReadyWindow : public QWidget {
Q_OBJECT
public:
ReadyWindow(QWidget* parent = nullptr);
bool has_driven = false;
private:
void showEvent(QShowEvent *event) override;
void hideEvent(QHideEvent *event) override;
@@ -29,6 +30,7 @@ private:
QString cur_temp;
QString error_msg; // non-empty = show red error instead of READY!
QElapsedTimer uptime;
bool last_started = false;
QPixmap img_bg;
QPixmap img_hot;
};