parent
d9185fd436
commit
2c712a9ea2
5 changed files with 140 additions and 8 deletions
@ -0,0 +1,103 @@ |
|||||||
|
#include <string> |
||||||
|
|
||||||
|
#include "onboarding.hpp" |
||||||
|
|
||||||
|
#include <QStackedLayout> |
||||||
|
#include <QVBoxLayout> |
||||||
|
#include <QHBoxLayout> |
||||||
|
#include <QPushButton> |
||||||
|
#include <QLabel> |
||||||
|
|
||||||
|
#include "common/params.h" |
||||||
|
|
||||||
|
|
||||||
|
QWidget * OnboardingWindow::terms_screen() { |
||||||
|
QVBoxLayout *main_layout = new QVBoxLayout(); |
||||||
|
main_layout->setMargin(30); |
||||||
|
main_layout->setSpacing(30); |
||||||
|
|
||||||
|
QLabel *title = new QLabel("Review Terms"); |
||||||
|
title->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); |
||||||
|
title->setStyleSheet(R"( |
||||||
|
QLabel { |
||||||
|
font-size: 80px; |
||||||
|
text-align: left; |
||||||
|
margin: 0; |
||||||
|
padding: 0; |
||||||
|
} |
||||||
|
)"); |
||||||
|
main_layout->addWidget(title); |
||||||
|
|
||||||
|
QLabel *terms = new QLabel("See terms at https://my.comma.ai/terms"); |
||||||
|
terms->setAlignment(Qt::AlignCenter); |
||||||
|
terms->setStyleSheet(R"( |
||||||
|
QLabel { |
||||||
|
font-size: 35px; |
||||||
|
border-radius: 10px; |
||||||
|
text-align: center; |
||||||
|
background-color: #292929; |
||||||
|
} |
||||||
|
)"); |
||||||
|
main_layout->addWidget(terms, Qt::AlignTop); |
||||||
|
|
||||||
|
QHBoxLayout *btn_layout = new QHBoxLayout(); |
||||||
|
//btn_layout->setSpacing(30);
|
||||||
|
|
||||||
|
QPushButton *decline_btn = new QPushButton("Decline"); |
||||||
|
btn_layout->addWidget(decline_btn); |
||||||
|
QPushButton *accept_btn = new QPushButton("Accept"); |
||||||
|
btn_layout->addWidget(accept_btn); |
||||||
|
main_layout->addLayout(btn_layout); |
||||||
|
|
||||||
|
QObject::connect(accept_btn, &QPushButton::released, [=]() { |
||||||
|
Params().write_db_value("HasAcceptedTerms", LATEST_TERMS_VERSION); |
||||||
|
updateActiveScreen(); |
||||||
|
}); |
||||||
|
|
||||||
|
QWidget *widget = new QWidget; |
||||||
|
widget->setLayout(main_layout); |
||||||
|
widget->setStyleSheet(R"( |
||||||
|
QLabel { |
||||||
|
color: white; |
||||||
|
} |
||||||
|
QPushButton { |
||||||
|
font-size: 50px; |
||||||
|
padding: 50px; |
||||||
|
border-radius: 10px; |
||||||
|
background-color: #292929; |
||||||
|
} |
||||||
|
)"); |
||||||
|
|
||||||
|
return widget; |
||||||
|
} |
||||||
|
|
||||||
|
void OnboardingWindow::updateActiveScreen() { |
||||||
|
|
||||||
|
Params params = Params(); |
||||||
|
|
||||||
|
bool accepted_terms = params.get("HasAcceptedTerms", false).compare(LATEST_TERMS_VERSION) == 0; |
||||||
|
|
||||||
|
if (accepted_terms) { |
||||||
|
emit onboardingDone(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
OnboardingWindow::OnboardingWindow(QWidget *parent) : QWidget(parent) { |
||||||
|
|
||||||
|
// Onboarding flow: terms -> account pairing -> training
|
||||||
|
|
||||||
|
|
||||||
|
QStackedLayout *main_layout = new QStackedLayout; |
||||||
|
main_layout->addWidget(terms_screen()); |
||||||
|
setLayout(main_layout); |
||||||
|
setStyleSheet(R"( |
||||||
|
* { |
||||||
|
background-color: black; |
||||||
|
} |
||||||
|
)"); |
||||||
|
|
||||||
|
// TODO: implement the training guide
|
||||||
|
Params().write_db_value("CompletedTrainingVersion", LATEST_TRAINING_VERSION); |
||||||
|
|
||||||
|
updateActiveScreen(); |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
#include <QWidget> |
||||||
|
|
||||||
|
|
||||||
|
// TODO: this is defined in python too
|
||||||
|
#define LATEST_TERMS_VERSION "2" |
||||||
|
#define LATEST_TRAINING_VERSION "0.2.0" |
||||||
|
|
||||||
|
class OnboardingWindow : public QWidget { |
||||||
|
Q_OBJECT |
||||||
|
|
||||||
|
public: |
||||||
|
explicit OnboardingWindow(QWidget *parent = 0); |
||||||
|
|
||||||
|
signals: |
||||||
|
void onboardingDone(); |
||||||
|
|
||||||
|
private: |
||||||
|
QWidget * terms_screen(); |
||||||
|
|
||||||
|
private slots: |
||||||
|
void updateActiveScreen(); |
||||||
|
}; |
Loading…
Reference in new issue