should be done

pull/20439/head
iejMac 4 years ago
parent 17fe0ec6ae
commit 4749a9635f
  1. 40
      selfdrive/ui/qt/offroad/onboarding.cc
  2. 22
      selfdrive/ui/qt/offroad/onboarding.hpp
  3. 4
      selfdrive/ui/qt/offroad/terms.qml

@ -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"); image.load("../assets/training/step0.jpg");
} }
@ -54,21 +54,12 @@ void TrainingGuide::paintEvent(QPaintEvent *event) {
painter.drawImage(rect.topLeft(), image); painter.drawImage(rect.topLeft(), image);
} }
void OnboardingWindow::accept_buttons(){ TermsPage::TermsPage(QWidget *parent) : QFrame(parent){
if(flickable->property("atYEnd").toInt()){
accept_btn->setText("Accept");
accept_btn->setEnabled(true);
}
return;
}
QWidget* OnboardingWindow::terms_screen2() {
QVBoxLayout *main_layout = new QVBoxLayout; QVBoxLayout *main_layout = new QVBoxLayout;
main_layout->setContentsMargins(20, 20, 20, 20); main_layout->setContentsMargins(20, 20, 20, 20);
main_layout->setSpacing(20); main_layout->setSpacing(20);
QQuickView *view = new QQuickView; QQuickView *view = new QQuickView;
QWidget* text = QWidget::createWindowContainer(view, 0); QWidget* text = QWidget::createWindowContainer(view, 0);
view->setSource(QUrl::fromLocalFile("qt/offroad/terms.qml")); view->setSource(QUrl::fromLocalFile("qt/offroad/terms.qml"));
@ -86,18 +77,14 @@ QWidget* OnboardingWindow::terms_screen2() {
accept_btn->setEnabled(false); accept_btn->setEnabled(false);
buttons->addWidget(accept_btn); buttons->addWidget(accept_btn);
QObject::connect(accept_btn, &QPushButton::released, [=]() { QObject::connect(accept_btn, &QPushButton::released, [=]() {
Params().write_db_value("HasAcceptedTerms", current_terms_version); emit acceptedTerms();
updateActiveScreen();
}); });
QObject *obj = (QObject*)view->rootObject(); QObject *obj = (QObject*)view->rootObject();
flickable = obj->findChild<QObject*>("flickArea"); QObject::connect(obj, SIGNAL(qmlSignal(QVariant)), SLOT(enable_accept()));
QObject::connect(obj, SIGNAL(qmlSignal(QVariant)), SLOT(accept_buttons()));
QWidget *widget = new QWidget; setLayout(main_layout);
widget->setLayout(main_layout); setStyleSheet(R"(
widget->setStyleSheet(R"(
* { * {
font-size: 50px; font-size: 50px;
} }
@ -107,10 +94,13 @@ QWidget* OnboardingWindow::terms_screen2() {
background-color: #292929; background-color: #292929;
} }
)"); )");
return widget;
} }
void TermsPage::enable_accept(){
accept_btn->setText("Accept");
accept_btn->setEnabled(true);
return;
}
QWidget* OnboardingWindow::terms_screen() { QWidget* OnboardingWindow::terms_screen() {
QVBoxLayout *main_layout = new QVBoxLayout; QVBoxLayout *main_layout = new QVBoxLayout;
@ -200,7 +190,13 @@ OnboardingWindow::OnboardingWindow(QWidget *parent) : QStackedWidget(parent) {
current_terms_version = params.get("TermsVersion", false); current_terms_version = params.get("TermsVersion", false);
current_training_version = params.get("TrainingVersion", 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); TrainingGuide* tr = new TrainingGuide(this);
connect(tr, &TrainingGuide::completedTraining, [=](){ connect(tr, &TrainingGuide::completedTraining, [=](){

@ -31,6 +31,23 @@ signals:
void completedTraining(); 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 { class OnboardingWindow : public QStackedWidget {
Q_OBJECT Q_OBJECT
@ -42,10 +59,6 @@ private:
std::string current_terms_version; std::string current_terms_version;
std::string current_training_version; std::string current_training_version;
//TODO: Remove this (access through .widget(index))
QPushButton *accept_btn;
QObject* flickable;
QTextEdit *terms_text; QTextEdit *terms_text;
QWidget *terms_screen(); QWidget *terms_screen();
QWidget *terms_screen2(); QWidget *terms_screen2();
@ -56,5 +69,4 @@ signals:
public slots: public slots:
void updateActiveScreen(); void updateActiveScreen();
void accept_buttons();
}; };

@ -1,4 +1,4 @@
import QtQuick 2.7 import QtQuick 2.0
Item { Item {
id: root id: root
@ -21,7 +21,7 @@ Item {
flickableDirection: Flickable.VerticalFlick flickableDirection: Flickable.VerticalFlick
clip: true clip: true
onMovementEnded: root.qmlSignal("Hello") onAtYEndChanged: root.qmlSignal("Hello")
Text { Text {
// HTML like markup can also be used // HTML like markup can also be used

Loading…
Cancel
Save