# include <QApplication>
# include <QLabel>
# include <QPushButton>
# include <QScrollBar>
# include <QVBoxLayout>
# include <QWidget>
# include "selfdrive/hardware/hw.h"
# include "selfdrive/ui/qt/util.h"
# include "selfdrive/ui/qt/qt_window.h"
# include "selfdrive/ui/qt/widgets/scrollview.h"
int main ( int argc , char * argv [ ] ) {
initApp ( argc , argv ) ;
QApplication a ( argc , argv ) ;
QWidget window ;
setMainWindow ( & window ) ;
QGridLayout * main_layout = new QGridLayout ( & window ) ;
main_layout - > setMargin ( 50 ) ;
QLabel * label = new QLabel ( argv [ 1 ] ) ;
label - > setWordWrap ( true ) ;
label - > setSizePolicy ( QSizePolicy : : Preferred , QSizePolicy : : MinimumExpanding ) ;
ScrollView * scroll = new ScrollView ( label ) ;
scroll - > setVerticalScrollBarPolicy ( Qt : : ScrollBarAsNeeded ) ;
main_layout - > addWidget ( scroll , 0 , 0 , Qt : : AlignTop ) ;
// Scroll to the bottom
QObject : : connect ( scroll - > verticalScrollBar ( ) , & QAbstractSlider : : rangeChanged , [ = ] ( ) {
scroll - > verticalScrollBar ( ) - > setValue ( scroll - > verticalScrollBar ( ) - > maximum ( ) ) ;
} ) ;
QPushButton * btn = new QPushButton ( ) ;
# ifdef __aarch64__
btn - > setText ( " Reboot " ) ;
QObject : : connect ( btn , & QPushButton : : clicked , [ = ] ( ) {
Hardware : : reboot ( ) ;
} ) ;
# else
btn - > setText ( " Exit " ) ;
QObject : : connect ( btn , & QPushButton : : clicked , & a , & QApplication : : quit ) ;
# endif
main_layout - > addWidget ( btn , 0 , 0 , Qt : : AlignRight | Qt : : AlignBottom ) ;
window . setStyleSheet ( R " (
* {
outline : none ;
color : white ;
background - color : black ;
font - size : 60 px ;
}
QPushButton {
padding : 50 px ;
padding - right : 100 px ;
padding - left : 100 px ;
border : 2 px solid white ;
border - radius : 20 px ;
margin - right : 40 px ;
}
) " );
return a . exec ( ) ;
}