# include "tools/cabana/mainwin.h"
# include <QHBoxLayout>
# include <QScreen>
# include <QVBoxLayout>
MainWindow : : MainWindow ( ) : QWidget ( ) {
QVBoxLayout * main_layout = new QVBoxLayout ( this ) ;
QHBoxLayout * h_layout = new QHBoxLayout ( ) ;
main_layout - > addLayout ( h_layout ) ;
messages_widget = new MessagesWidget ( this ) ;
h_layout - > addWidget ( messages_widget ) ;
detail_widget = new DetailWidget ( this ) ;
detail_widget - > setFixedWidth ( 600 ) ;
h_layout - > addWidget ( detail_widget ) ;
// right widgets
QWidget * right_container = new QWidget ( this ) ;
right_container - > setFixedWidth ( 640 ) ;
r_layout = new QVBoxLayout ( right_container ) ;
video_widget = new VideoWidget ( this ) ;
r_layout - > addWidget ( video_widget , 0 , Qt : : AlignTop ) ;
charts_widget = new ChartsWidget ( this ) ;
r_layout - > addWidget ( charts_widget ) ;
h_layout - > addWidget ( right_container ) ;
QObject : : connect ( messages_widget , & MessagesWidget : : msgChanged , detail_widget , & DetailWidget : : setMsg ) ;
QObject : : connect ( charts_widget , & ChartsWidget : : dock , this , & MainWindow : : dockCharts ) ;
}
void MainWindow : : dockCharts ( bool dock ) {
charts_widget - > setUpdatesEnabled ( false ) ;
if ( dock & & floating_window ) {
r_layout - > addWidget ( charts_widget ) ;
floating_window - > deleteLater ( ) ;
floating_window = nullptr ;
} else if ( ! dock & & ! floating_window ) {
floating_window = new QWidget ( nullptr ) ;
floating_window - > setLayout ( new QVBoxLayout ( ) ) ;
floating_window - > layout ( ) - > addWidget ( charts_widget ) ;
floating_window - > setWindowFlags ( Qt : : WindowTitleHint | Qt : : WindowMaximizeButtonHint | Qt : : WindowMinimizeButtonHint ) ;
floating_window - > setMinimumSize ( QGuiApplication : : primaryScreen ( ) - > size ( ) / 2 ) ;
floating_window - > showMaximized ( ) ;
}
charts_widget - > setUpdatesEnabled ( true ) ;
}
void MainWindow : : closeEvent ( QCloseEvent * event ) {
if ( floating_window )
floating_window - > deleteLater ( ) ;
QWidget : : closeEvent ( event ) ;
}