diff --git a/selfdrive/ui/qt/offroad/onboarding.cc b/selfdrive/ui/qt/offroad/onboarding.cc index cf500710d9..29e773890a 100644 --- a/selfdrive/ui/qt/offroad/onboarding.cc +++ b/selfdrive/ui/qt/offroad/onboarding.cc @@ -38,7 +38,7 @@ void TrainingGuide::mouseReleaseEvent(QMouseEvent *e) { } } -TrainingGuide::TrainingGuide(QWidget* parent) { +TrainingGuide::TrainingGuide(QWidget* parent) : QFrame(parent){ image.load("../assets/training/step0.jpg"); } @@ -54,21 +54,12 @@ void TrainingGuide::paintEvent(QPaintEvent *event) { painter.drawImage(rect.topLeft(), image); } -void OnboardingWindow::accept_buttons(){ - if(flickable->property("atYEnd").toInt()){ - accept_btn->setText("Accept"); - accept_btn->setEnabled(true); - } - return; -} - -QWidget* OnboardingWindow::terms_screen2() { +TermsPage::TermsPage(QWidget *parent) : QFrame(parent){ QVBoxLayout *main_layout = new QVBoxLayout; main_layout->setContentsMargins(20, 20, 20, 20); main_layout->setSpacing(20); - QQuickView *view = new QQuickView; QWidget* text = QWidget::createWindowContainer(view, 0); view->setSource(QUrl::fromLocalFile("qt/offroad/terms.qml")); @@ -86,18 +77,14 @@ QWidget* OnboardingWindow::terms_screen2() { accept_btn->setEnabled(false); buttons->addWidget(accept_btn); QObject::connect(accept_btn, &QPushButton::released, [=]() { - Params().write_db_value("HasAcceptedTerms", current_terms_version); - updateActiveScreen(); + emit acceptedTerms(); }); QObject *obj = (QObject*)view->rootObject(); - flickable = obj->findChild("flickArea"); - - QObject::connect(obj, SIGNAL(qmlSignal(QVariant)), SLOT(accept_buttons())); + QObject::connect(obj, SIGNAL(qmlSignal(QVariant)), SLOT(enable_accept())); - QWidget *widget = new QWidget; - widget->setLayout(main_layout); - widget->setStyleSheet(R"( + setLayout(main_layout); + setStyleSheet(R"( * { font-size: 50px; } @@ -107,10 +94,13 @@ QWidget* OnboardingWindow::terms_screen2() { background-color: #292929; } )"); - - return widget; } +void TermsPage::enable_accept(){ + accept_btn->setText("Accept"); + accept_btn->setEnabled(true); + return; +} QWidget* OnboardingWindow::terms_screen() { QVBoxLayout *main_layout = new QVBoxLayout; @@ -200,7 +190,13 @@ OnboardingWindow::OnboardingWindow(QWidget *parent) : QStackedWidget(parent) { current_terms_version = params.get("TermsVersion", false); current_training_version = params.get("TrainingVersion", false); - addWidget(terms_screen2()); + TermsPage* terms = new TermsPage(this); + addWidget(terms); + + connect(terms, &TermsPage::acceptedTerms, [=](){ + Params().write_db_value("HasAcceptedTerms", current_terms_version); + updateActiveScreen(); + }); TrainingGuide* tr = new TrainingGuide(this); connect(tr, &TrainingGuide::completedTraining, [=](){ diff --git a/selfdrive/ui/qt/offroad/onboarding.hpp b/selfdrive/ui/qt/offroad/onboarding.hpp index 7a13f9fe44..b0720159ca 100644 --- a/selfdrive/ui/qt/offroad/onboarding.hpp +++ b/selfdrive/ui/qt/offroad/onboarding.hpp @@ -31,6 +31,23 @@ signals: void completedTraining(); }; + +class TermsPage : public QFrame { + Q_OBJECT + +public: + explicit TermsPage(QWidget *parent = 0); + +private: + QPushButton *accept_btn; + +public slots: + void enable_accept(); + +signals: + void acceptedTerms(); +}; + class OnboardingWindow : public QStackedWidget { Q_OBJECT @@ -42,10 +59,6 @@ private: std::string current_terms_version; std::string current_training_version; - //TODO: Remove this (access through .widget(index)) - QPushButton *accept_btn; - QObject* flickable; - QTextEdit *terms_text; QWidget *terms_screen(); QWidget *terms_screen2(); @@ -56,5 +69,4 @@ signals: public slots: void updateActiveScreen(); - void accept_buttons(); }; diff --git a/selfdrive/ui/qt/offroad/terms.qml b/selfdrive/ui/qt/offroad/terms.qml index e72c2ac59d..96ba7b1617 100644 --- a/selfdrive/ui/qt/offroad/terms.qml +++ b/selfdrive/ui/qt/offroad/terms.qml @@ -1,4 +1,4 @@ -import QtQuick 2.7 +import QtQuick 2.0 Item { id: root @@ -21,7 +21,7 @@ Item { flickableDirection: Flickable.VerticalFlick clip: true - onMovementEnded: root.qmlSignal("Hello") + onAtYEndChanged: root.qmlSignal("Hello") Text { // HTML like markup can also be used