UI: lazy onboarding widgets init (#21780)

* don't show onboarding on startup

* cleanup

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: 2d640e25c3
commatwo_master
Dean Lee 4 years ago committed by GitHub
parent 523219c678
commit 66c6adc436
  1. 13
      selfdrive/ui/qt/offroad/onboarding.cc
  2. 6
      selfdrive/ui/qt/offroad/onboarding.h
  3. 1
      selfdrive/ui/qt/offroad/settings.cc
  4. 16
      selfdrive/ui/qt/window.cc

@ -151,8 +151,6 @@ void DeclinePage::showEvent(QShowEvent *event) {
}
void OnboardingWindow::updateActiveScreen() {
bool accepted_terms = params.get("HasAcceptedTerms") == current_terms_version;
bool training_done = params.get("CompletedTrainingVersion") == current_training_version;
if (!accepted_terms) {
setCurrentIndex(0);
} else if (!training_done && !params.getBool("Passive")) {
@ -163,13 +161,16 @@ void OnboardingWindow::updateActiveScreen() {
}
OnboardingWindow::OnboardingWindow(QWidget *parent) : QStackedWidget(parent) {
current_terms_version = params.get("TermsVersion");
current_training_version = params.get("TrainingVersion");
std::string current_terms_version = params.get("TermsVersion");
std::string current_training_version = params.get("TrainingVersion");
accepted_terms = params.get("HasAcceptedTerms") == current_terms_version;
training_done = params.get("CompletedTrainingVersion") == current_training_version;
TermsPage* terms = new TermsPage(this);
addWidget(terms);
connect(terms, &TermsPage::acceptedTerms, [=]() {
Params().put("HasAcceptedTerms", current_terms_version);
accepted_terms = true;
updateActiveScreen();
});
connect(terms, &TermsPage::declinedTerms, [=]() { setCurrentIndex(2); });
@ -177,6 +178,7 @@ OnboardingWindow::OnboardingWindow(QWidget *parent) : QStackedWidget(parent) {
TrainingGuide* tr = new TrainingGuide(this);
addWidget(tr);
connect(tr, &TrainingGuide::completedTraining, [=]() {
training_done = true;
Params().put("CompletedTrainingVersion", current_training_version);
updateActiveScreen();
});
@ -198,8 +200,5 @@ OnboardingWindow::OnboardingWindow(QWidget *parent) : QStackedWidget(parent) {
background-color: #4F4F4F;
}
)");
}
void OnboardingWindow::showEvent(QShowEvent *event) {
updateActiveScreen();
}

@ -117,14 +117,14 @@ class OnboardingWindow : public QStackedWidget {
public:
explicit OnboardingWindow(QWidget *parent = 0);
inline void showTrainingGuide() { setCurrentIndex(1); }
inline bool completed() const { return accepted_terms && training_done; }
private:
void showEvent(QShowEvent *event) override;
void updateActiveScreen();
Params params;
std::string current_terms_version;
std::string current_training_version;
bool accepted_terms = false, training_done = false;
signals:
void onboardingDone();

@ -142,7 +142,6 @@ DevicePanel::DevicePanel(QWidget* parent) : QWidget(parent) {
retrainingBtn = new ButtonControl("Review Training Guide", "REVIEW", "Review the rules, features, and limitations of openpilot");
connect(retrainingBtn, &ButtonControl::clicked, [=]() {
if (ConfirmationDialog::confirm("Are you sure you want to review the training guide?", this)) {
Params().remove("CompletedTrainingVersion");
emit reviewTrainingGuide();
}
});

@ -8,12 +8,6 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) {
main_layout = new QStackedLayout(this);
main_layout->setMargin(0);
onboardingWindow = new OnboardingWindow(this);
main_layout->addWidget(onboardingWindow);
QObject::connect(onboardingWindow, &OnboardingWindow::onboardingDone, [=]() {
main_layout->setCurrentWidget(homeWindow);
});
homeWindow = new HomeWindow(this);
main_layout->addWidget(homeWindow);
QObject::connect(homeWindow, &HomeWindow::openSettings, this, &MainWindow::openSettings);
@ -28,12 +22,22 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) {
QObject::connect(settingsWindow, &SettingsWindow::closeSettings, this, &MainWindow::closeSettings);
QObject::connect(&qs, &QUIState::offroadTransition, settingsWindow, &SettingsWindow::offroadTransition);
QObject::connect(settingsWindow, &SettingsWindow::reviewTrainingGuide, [=]() {
onboardingWindow->showTrainingGuide();
main_layout->setCurrentWidget(onboardingWindow);
});
QObject::connect(settingsWindow, &SettingsWindow::showDriverView, [=] {
homeWindow->showDriverView(true);
});
onboardingWindow = new OnboardingWindow(this);
main_layout->addWidget(onboardingWindow);
QObject::connect(onboardingWindow, &OnboardingWindow::onboardingDone, [=]() {
main_layout->setCurrentWidget(homeWindow);
});
if (!onboardingWindow->completed()) {
main_layout->setCurrentWidget(onboardingWindow);
}
device.setAwake(true, true);
QObject::connect(&qs, &QUIState::uiUpdate, &device, &Device::update);
QObject::connect(&qs, &QUIState::offroadTransition, [=](bool offroad) {

Loading…
Cancel
Save