2020-10-31 18:07:04 -06:00
|
|
|
#pragma once
|
|
|
|
|
2021-12-13 18:38:19 -07:00
|
|
|
#include <QElapsedTimer>
|
2021-05-08 23:15:17 -06:00
|
|
|
#include <QImage>
|
2021-01-29 09:54:00 -07:00
|
|
|
#include <QMouseEvent>
|
2021-03-24 20:30:52 -06:00
|
|
|
#include <QPushButton>
|
2021-05-08 23:15:17 -06:00
|
|
|
#include <QStackedWidget>
|
|
|
|
#include <QWidget>
|
2021-01-29 09:54:00 -07:00
|
|
|
|
2021-03-20 22:26:05 -06:00
|
|
|
#include "selfdrive/common/params.h"
|
2021-07-05 02:31:31 -06:00
|
|
|
#include "selfdrive/ui/qt/qt_window.h"
|
2021-03-20 22:26:05 -06:00
|
|
|
|
2021-01-29 14:41:48 -07:00
|
|
|
class TrainingGuide : public QFrame {
|
2021-01-29 09:54:00 -07:00
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
2021-07-28 12:17:25 -06:00
|
|
|
explicit TrainingGuide(QWidget *parent = 0);
|
2021-01-29 09:54:00 -07:00
|
|
|
|
2021-06-18 17:01:22 -06:00
|
|
|
private:
|
2021-03-25 18:36:44 -06:00
|
|
|
void showEvent(QShowEvent *event) override;
|
2021-03-19 14:07:59 -06:00
|
|
|
void paintEvent(QPaintEvent *event) override;
|
2021-03-25 18:36:44 -06:00
|
|
|
void mouseReleaseEvent(QMouseEvent* e) override;
|
2021-01-29 12:47:22 -07:00
|
|
|
|
2021-03-19 14:07:59 -06:00
|
|
|
QImage image;
|
2021-03-25 18:36:44 -06:00
|
|
|
int currentIndex = 0;
|
2021-03-15 16:06:00 -06:00
|
|
|
|
2021-07-05 02:31:31 -06:00
|
|
|
// Bounding boxes for each training guide step
|
2022-03-25 18:04:53 -06:00
|
|
|
const QRect continueBtnStandard = {1620, 0, 300, 1080};
|
2021-07-05 02:31:31 -06:00
|
|
|
QVector<QRect> boundingRectStandard {
|
2022-03-25 18:04:53 -06:00
|
|
|
QRect(112, 804, 619, 166),
|
2021-07-05 02:31:31 -06:00
|
|
|
continueBtnStandard,
|
|
|
|
continueBtnStandard,
|
2022-03-25 18:04:53 -06:00
|
|
|
QRect(1476, 565, 253, 308),
|
|
|
|
QRect(1501, 529, 184, 108),
|
2021-07-05 02:31:31 -06:00
|
|
|
continueBtnStandard,
|
2022-03-25 18:04:53 -06:00
|
|
|
QRect(1613, 665, 178, 153),
|
|
|
|
QRect(1220, 0, 420, 730),
|
|
|
|
QRect(1335, 499, 440, 147),
|
|
|
|
QRect(112, 820, 996, 148),
|
|
|
|
QRect(1412, 199, 316, 333),
|
2021-07-05 02:31:31 -06:00
|
|
|
continueBtnStandard,
|
2022-03-25 18:04:53 -06:00
|
|
|
QRect(1237, 63, 683, 1017),
|
2021-07-05 02:31:31 -06:00
|
|
|
continueBtnStandard,
|
2022-03-25 18:04:53 -06:00
|
|
|
QRect(1455, 110, 313, 860),
|
|
|
|
QRect(1253, 519, 383, 228),
|
2021-07-05 02:31:31 -06:00
|
|
|
continueBtnStandard,
|
|
|
|
continueBtnStandard,
|
2022-03-25 18:04:53 -06:00
|
|
|
QRect(630, 804, 626, 164),
|
|
|
|
QRect(108, 804, 426, 164),
|
2021-03-26 17:43:14 -06:00
|
|
|
};
|
2021-01-29 09:54:00 -07:00
|
|
|
|
2022-03-25 18:04:53 -06:00
|
|
|
const QRect continueBtnWide = {1840, 0, 320, 1080};
|
2021-07-05 02:31:31 -06:00
|
|
|
QVector<QRect> boundingRectWide {
|
2022-03-25 18:04:53 -06:00
|
|
|
QRect(112, 804, 618, 164),
|
2021-07-05 02:31:31 -06:00
|
|
|
continueBtnWide,
|
|
|
|
continueBtnWide,
|
2022-03-25 18:04:53 -06:00
|
|
|
QRect(1641, 558, 210, 313),
|
|
|
|
QRect(1662, 528, 184, 108),
|
2021-07-05 02:31:31 -06:00
|
|
|
continueBtnWide,
|
2022-03-25 18:04:53 -06:00
|
|
|
QRect(1814, 621, 211, 170),
|
|
|
|
QRect(1350, 0, 497, 755),
|
|
|
|
QRect(1553, 516, 406, 112),
|
|
|
|
QRect(112, 804, 1126, 164),
|
|
|
|
QRect(1598, 199, 316, 333),
|
2021-07-05 02:31:31 -06:00
|
|
|
continueBtnWide,
|
2022-03-25 18:04:53 -06:00
|
|
|
QRect(1364, 90, 796, 990),
|
2021-07-05 02:31:31 -06:00
|
|
|
continueBtnWide,
|
2022-03-25 18:04:53 -06:00
|
|
|
QRect(1593, 114, 318, 853),
|
|
|
|
QRect(1379, 511, 391, 243),
|
2021-07-05 02:31:31 -06:00
|
|
|
continueBtnWide,
|
|
|
|
continueBtnWide,
|
2022-03-25 18:04:53 -06:00
|
|
|
QRect(630, 804, 626, 164),
|
|
|
|
QRect(108, 804, 426, 164),
|
2021-07-05 02:31:31 -06:00
|
|
|
};
|
|
|
|
|
2021-09-30 21:48:02 -06:00
|
|
|
QString img_path;
|
|
|
|
QVector<QRect> boundingRect;
|
2021-12-13 18:38:19 -07:00
|
|
|
QElapsedTimer click_timer;
|
2021-07-05 02:31:31 -06:00
|
|
|
|
2021-01-29 09:54:00 -07:00
|
|
|
signals:
|
|
|
|
void completedTraining();
|
|
|
|
};
|
2020-10-31 18:07:04 -06:00
|
|
|
|
2021-03-24 20:30:52 -06:00
|
|
|
|
|
|
|
class TermsPage : public QFrame {
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
2021-05-04 11:05:23 -06:00
|
|
|
explicit TermsPage(QWidget *parent = 0) : QFrame(parent) {};
|
|
|
|
|
2021-06-18 17:01:22 -06:00
|
|
|
public slots:
|
|
|
|
void enableAccept();
|
2021-03-24 20:30:52 -06:00
|
|
|
|
|
|
|
private:
|
2021-06-18 17:01:22 -06:00
|
|
|
void showEvent(QShowEvent *event) override;
|
|
|
|
|
2021-03-24 20:30:52 -06:00
|
|
|
QPushButton *accept_btn;
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void acceptedTerms();
|
2021-05-20 07:59:56 -06:00
|
|
|
void declinedTerms();
|
|
|
|
};
|
|
|
|
|
|
|
|
class DeclinePage : public QFrame {
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
explicit DeclinePage(QWidget *parent = 0) : QFrame(parent) {};
|
|
|
|
|
|
|
|
private:
|
2021-06-18 17:01:22 -06:00
|
|
|
void showEvent(QShowEvent *event) override;
|
2021-05-20 07:59:56 -06:00
|
|
|
|
|
|
|
signals:
|
|
|
|
void getBack();
|
2021-03-24 20:30:52 -06:00
|
|
|
};
|
|
|
|
|
2020-11-25 01:01:05 -07:00
|
|
|
class OnboardingWindow : public QStackedWidget {
|
2020-10-31 18:07:04 -06:00
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
explicit OnboardingWindow(QWidget *parent = 0);
|
2021-09-11 19:18:58 -06:00
|
|
|
inline void showTrainingGuide() { setCurrentIndex(1); }
|
|
|
|
inline bool completed() const { return accepted_terms && training_done; }
|
2020-10-31 18:07:04 -06:00
|
|
|
|
|
|
|
private:
|
2021-06-18 17:01:22 -06:00
|
|
|
void updateActiveScreen();
|
|
|
|
|
2021-03-20 22:26:05 -06:00
|
|
|
Params params;
|
2021-09-11 19:18:58 -06:00
|
|
|
bool accepted_terms = false, training_done = false;
|
2020-11-12 22:37:02 -07:00
|
|
|
|
|
|
|
signals:
|
|
|
|
void onboardingDone();
|
2020-10-31 18:07:04 -06:00
|
|
|
};
|