Fix Terms and Training guide skip when the screen turns off (#20942)

albatross
Maxime Desroches 2021-05-18 05:26:04 -04:00 committed by GitHub
parent 679919ab1f
commit 553e7d1cce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 4 deletions

View File

@ -107,8 +107,7 @@ void TermsPage::enableAccept(){
}
void OnboardingWindow::updateActiveScreen() {
bool accepted_terms = params.get("HasAcceptedTerms", false).compare(current_terms_version) == 0;
bool training_done = params.get("CompletedTrainingVersion", false).compare(current_training_version) == 0;
updateOnboardingStatus();
if (!accepted_terms) {
setCurrentIndex(0);
@ -157,3 +156,13 @@ OnboardingWindow::OnboardingWindow(QWidget *parent) : QStackedWidget(parent) {
updateActiveScreen();
}
void OnboardingWindow::updateOnboardingStatus() {
accepted_terms = params.get("HasAcceptedTerms", false).compare(current_terms_version) == 0;
training_done = params.get("CompletedTrainingVersion", false).compare(current_training_version) == 0;
}
bool OnboardingWindow::isOnboardingDone() {
updateOnboardingStatus();
return accepted_terms && training_done;
}

View File

@ -77,11 +77,15 @@ class OnboardingWindow : public QStackedWidget {
public:
explicit OnboardingWindow(QWidget *parent = 0);
bool isOnboardingDone();
private:
Params params;
std::string current_terms_version;
std::string current_training_version;
bool accepted_terms = false;
bool training_done = false;
void updateOnboardingStatus();
signals:
void onboardingDone();

View File

@ -22,10 +22,14 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) {
QObject::connect(settingsWindow, &SettingsWindow::reviewTrainingGuide, this, &MainWindow::reviewTrainingGuide);
onboardingWindow = new OnboardingWindow(this);
onboardingDone = onboardingWindow->isOnboardingDone();
main_layout->addWidget(onboardingWindow);
main_layout->setCurrentWidget(onboardingWindow);
QObject::connect(onboardingWindow, &OnboardingWindow::onboardingDone, this, &MainWindow::closeSettings);
QObject::connect(onboardingWindow, &OnboardingWindow::onboardingDone, [=](){
onboardingDone = true;
closeSettings();
});
onboardingWindow->updateActiveScreen();
device.setAwake(true, true);
@ -59,10 +63,13 @@ void MainWindow::openSettings() {
}
void MainWindow::closeSettings() {
main_layout->setCurrentWidget(homeWindow);
if(onboardingDone) {
main_layout->setCurrentWidget(homeWindow);
}
}
void MainWindow::reviewTrainingGuide() {
onboardingDone = false;
main_layout->setCurrentWidget(onboardingWindow);
onboardingWindow->updateActiveScreen();
}

View File

@ -25,6 +25,7 @@ private:
HomeWindow *homeWindow;
SettingsWindow *settingsWindow;
OnboardingWindow *onboardingWindow;
bool onboardingDone = false;
public slots:
void offroadTransition(bool offroad);