# pragma once
# include <QImage>
# include <QMouseEvent>
# include <QPushButton>
# include <QStackedWidget>
# include <QWidget>
# include "selfdrive/common/params.h"
# include "selfdrive/ui/qt/qt_window.h"
class TrainingGuide : public QFrame {
Q_OBJECT
public :
explicit TrainingGuide ( QWidget * parent = 0 ) ;
private :
void showEvent ( QShowEvent * event ) override ;
void paintEvent ( QPaintEvent * event ) override ;
void mouseReleaseEvent ( QMouseEvent * e ) override ;
QImage image ;
int currentIndex = 0 ;
// Bounding boxes for each training guide step
const QRect continueBtnStandard = { 1610 , 0 , 310 , 1080 } ;
QVector < QRect > boundingRectStandard {
QRect ( 650 , 710 , 720 , 190 ) ,
continueBtnStandard ,
continueBtnStandard ,
QRect ( 1442 , 565 , 230 , 310 ) ,
QRect ( 1515 , 562 , 133 , 60 ) ,
continueBtnStandard ,
QRect ( 1580 , 630 , 215 , 130 ) ,
QRect ( 1210 , 0 , 485 , 590 ) ,
QRect ( 1460 , 400 , 375 , 210 ) ,
QRect ( 166 , 842 , 1019 , 148 ) ,
QRect ( 1460 , 210 , 300 , 310 ) ,
continueBtnStandard ,
QRect ( 1375 , 80 , 545 , 1000 ) ,
continueBtnStandard ,
QRect ( 1610 , 130 , 280 , 800 ) ,
QRect ( 1385 , 485 , 400 , 270 ) ,
continueBtnStandard ,
continueBtnStandard ,
QRect ( 1036 , 769 , 718 , 189 ) ,
QRect ( 201 , 769 , 718 , 189 ) ,
} ;
const QRect continueBtnWide = { 1850 , 0 , 310 , 1080 } ;
QVector < QRect > boundingRectWide {
QRect ( 654 , 721 , 718 , 189 ) ,
continueBtnWide ,
continueBtnWide ,
QRect ( 1690 , 570 , 165 , 300 ) ,
QRect ( 1690 , 560 , 133 , 60 ) ,
continueBtnWide ,
QRect ( 1820 , 630 , 180 , 155 ) ,
QRect ( 1360 , 0 , 460 , 620 ) ,
QRect ( 1570 , 400 , 375 , 215 ) ,
QRect ( 167 , 842 , 1018 , 148 ) ,
QRect ( 1610 , 210 , 295 , 310 ) ,
continueBtnWide ,
QRect ( 1555 , 90 , 610 , 990 ) ,
continueBtnWide ,
QRect ( 1600 , 140 , 280 , 790 ) ,
QRect ( 1385 , 490 , 750 , 270 ) ,
continueBtnWide ,
continueBtnWide ,
QRect ( 1138 , 755 , 718 , 189 ) ,
QRect ( 303 , 755 , 718 , 189 ) ,
} ;
QString img_path ;
QVector < QRect > boundingRect ;
signals :
void completedTraining ( ) ;
} ;
class TermsPage : public QFrame {
Q_OBJECT
public :
explicit TermsPage ( QWidget * parent = 0 ) : QFrame ( parent ) { } ;
public slots :
void enableAccept ( ) ;
private :
void showEvent ( QShowEvent * event ) override ;
QPushButton * accept_btn ;
signals :
void acceptedTerms ( ) ;
void declinedTerms ( ) ;
} ;
class DeclinePage : public QFrame {
Q_OBJECT
public :
explicit DeclinePage ( QWidget * parent = 0 ) : QFrame ( parent ) { } ;
private :
void showEvent ( QShowEvent * event ) override ;
signals :
void getBack ( ) ;
} ;
class OnboardingWindow : public QStackedWidget {
Q_OBJECT
public :
explicit OnboardingWindow ( QWidget * parent = 0 ) ;
inline void showTrainingGuide ( ) { setCurrentIndex ( 1 ) ; }
inline bool completed ( ) const { return accepted_terms & & training_done ; }
private :
void updateActiveScreen ( ) ;
Params params ;
bool accepted_terms = false , training_done = false ;
signals :
void onboardingDone ( ) ;
} ;