|
|
|
@ -3,17 +3,72 @@ |
|
|
|
|
#include <QPushButton> |
|
|
|
|
#include <QGridLayout> |
|
|
|
|
#include <QVBoxLayout> |
|
|
|
|
#include <QDebug> |
|
|
|
|
#include <QGuiApplication> |
|
|
|
|
#include <QScreen> |
|
|
|
|
#include <QApplication> |
|
|
|
|
#include <QDesktopWidget> |
|
|
|
|
|
|
|
|
|
#include "onboarding.hpp" |
|
|
|
|
#include "common/params.h" |
|
|
|
|
#include "home.hpp" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QLabel * title_label(QString text) { |
|
|
|
|
QLabel *l = new QLabel(text); |
|
|
|
|
l->setStyleSheet(R"(font-size: 100px;)"); |
|
|
|
|
l->setStyleSheet(R"(font-size: 100px; font-weight: bold;)"); |
|
|
|
|
return l; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
QWidget* layout2Widget(QLayout* l){ |
|
|
|
|
QWidget* q = new QWidget; |
|
|
|
|
q->setLayout(l); |
|
|
|
|
return q; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void TrainingGuide::mouseReleaseEvent(QMouseEvent *e) { |
|
|
|
|
int leftOffset = (geometry().width()-1620)/2; |
|
|
|
|
int mousex = e->x()-leftOffset; |
|
|
|
|
int mousey = e->y(); |
|
|
|
|
|
|
|
|
|
// Check for restart
|
|
|
|
|
if (currentIndex == numberOfFrames-1) { |
|
|
|
|
if (1050 <= mousex && mousex <= 1500 && 773 <= mousey && mousey <= 954){ |
|
|
|
|
slayout->setCurrentIndex(0); |
|
|
|
|
currentIndex = 0; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (boundingBox[currentIndex][0] <= mousex && mousex <= boundingBox[currentIndex][1] && boundingBox[currentIndex][2] <= mousey && mousey <= boundingBox[currentIndex][3]) { |
|
|
|
|
slayout->setCurrentIndex(++currentIndex); |
|
|
|
|
} |
|
|
|
|
if (currentIndex >= numberOfFrames) { |
|
|
|
|
emit completedTraining(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TrainingGuide::TrainingGuide(QWidget* parent) { |
|
|
|
|
QHBoxLayout* hlayout = new QHBoxLayout; |
|
|
|
|
|
|
|
|
|
slayout = new QStackedLayout(this); |
|
|
|
|
for (int i = 0; i <= 14; i++) { |
|
|
|
|
QWidget* w = new QWidget; |
|
|
|
|
w->setStyleSheet(".QWidget {background-image: url(../assets/training/step" + QString::number(i) + ".jpg);}"); |
|
|
|
|
w->setFixedSize(1620, 1080); |
|
|
|
|
slayout->addWidget(w); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
QWidget* sw = layout2Widget(slayout); |
|
|
|
|
hlayout->addWidget(sw, 1, Qt::AlignCenter); |
|
|
|
|
setLayout(hlayout); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QWidget* OnboardingWindow::terms_screen() { |
|
|
|
|
|
|
|
|
|
QGridLayout *main_layout = new QGridLayout(); |
|
|
|
@ -35,7 +90,7 @@ QWidget * OnboardingWindow::terms_screen() { |
|
|
|
|
QPushButton *accept_btn = new QPushButton("Accept"); |
|
|
|
|
main_layout->addWidget(accept_btn, 2, 1); |
|
|
|
|
QObject::connect(accept_btn, &QPushButton::released, [=]() { |
|
|
|
|
Params().write_db_value("HasAcceptedTerms", LATEST_TERMS_VERSION); |
|
|
|
|
Params().write_db_value("HasAcceptedTerms", current_terms_version.toStdString()); |
|
|
|
|
updateActiveScreen(); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
@ -55,34 +110,11 @@ QWidget * OnboardingWindow::terms_screen() { |
|
|
|
|
return widget; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
QWidget * OnboardingWindow::training_screen() { |
|
|
|
|
|
|
|
|
|
QVBoxLayout *main_layout = new QVBoxLayout(); |
|
|
|
|
main_layout->setMargin(100); |
|
|
|
|
main_layout->setSpacing(30); |
|
|
|
|
|
|
|
|
|
main_layout->addWidget(title_label("Training Guide")); |
|
|
|
|
|
|
|
|
|
main_layout->addWidget(new QLabel(), 1); // just a spacer
|
|
|
|
|
|
|
|
|
|
QPushButton *btn = new QPushButton("Continue"); |
|
|
|
|
main_layout->addWidget(btn); |
|
|
|
|
QObject::connect(btn, &QPushButton::released, [=]() { |
|
|
|
|
Params().write_db_value("CompletedTrainingVersion", LATEST_TRAINING_VERSION); |
|
|
|
|
updateActiveScreen(); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
QWidget *widget = new QWidget; |
|
|
|
|
widget->setLayout(main_layout); |
|
|
|
|
return widget; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void OnboardingWindow::updateActiveScreen() { |
|
|
|
|
|
|
|
|
|
Params params = Params(); |
|
|
|
|
bool accepted_terms = params.get("HasAcceptedTerms", false).compare(LATEST_TERMS_VERSION) == 0; |
|
|
|
|
bool training_done = params.get("CompletedTrainingVersion", false).compare(LATEST_TRAINING_VERSION) == 0; |
|
|
|
|
|
|
|
|
|
bool accepted_terms = params.get("HasAcceptedTerms", false).compare(current_terms_version.toStdString()) == 0; |
|
|
|
|
bool training_done = params.get("CompletedTrainingVersion", false).compare(current_training_version.toStdString()) == 0; |
|
|
|
|
if (!accepted_terms) { |
|
|
|
|
setCurrentIndex(0); |
|
|
|
|
} else if (!training_done) { |
|
|
|
@ -93,8 +125,13 @@ void OnboardingWindow::updateActiveScreen() { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
OnboardingWindow::OnboardingWindow(QWidget *parent) : QStackedWidget(parent) { |
|
|
|
|
Params params = Params(); |
|
|
|
|
current_terms_version = QString::fromStdString(params.get("TermsVersion", false)); |
|
|
|
|
current_training_version = QString::fromStdString(params.get("TrainingVersion", false)); |
|
|
|
|
addWidget(terms_screen()); |
|
|
|
|
addWidget(training_screen()); |
|
|
|
|
TrainingGuide* tr = new TrainingGuide(this); |
|
|
|
|
connect(tr, &TrainingGuide::completedTraining, [=](){Params().write_db_value("CompletedTrainingVersion", current_training_version.toStdString()); updateActiveScreen();}); |
|
|
|
|
addWidget(tr); |
|
|
|
|
|
|
|
|
|
setStyleSheet(R"( |
|
|
|
|
* { |
|
|
|
@ -102,15 +139,11 @@ OnboardingWindow::OnboardingWindow(QWidget *parent) : QStackedWidget(parent) { |
|
|
|
|
background-color: black; |
|
|
|
|
} |
|
|
|
|
QPushButton { |
|
|
|
|
font-size: 50px; |
|
|
|
|
padding: 50px; |
|
|
|
|
border-radius: 10px; |
|
|
|
|
background-color: #292929; |
|
|
|
|
} |
|
|
|
|
)"); |
|
|
|
|
|
|
|
|
|
// TODO: remove this after training guide is done
|
|
|
|
|
Params().write_db_value("CompletedTrainingVersion", LATEST_TRAINING_VERSION); |
|
|
|
|
|
|
|
|
|
updateActiveScreen(); |
|
|
|
|
} |
|
|
|
|