mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-06-22 14:32:07 +08:00
UI: lazy onboarding widgets init (#21780)
* don't show onboarding on startup * cleanup Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user