IEK/Src/Gui/MainWindow.cpp

281 lines
13 KiB
C++

#include "MainWindow.h"
#include <QHBoxLayout>
#include "ModuleWidget.h"
#include <QMenu>
#include <QContextMenuEvent>
#include "DockWidget.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// QWidget* mWidget = new QWidget();
// QHBoxLayout* mLayout = new QHBoxLayout();
// mLayout->setSpacing(0);
// mLayout->setContentsMargins(0,0,0,0);
// mWidget->setLayout(mLayout);
// this->setCentralWidget(mWidget);
this->setObjectName("MainWindow");
this->setStyleSheet("#MainWindow{background-color:rgb(12,15,46);}");
InitWidget();
InitMenu();
}
MainWindow::~MainWindow()
{
}
void MainWindow::contextMenuEvent(QContextMenuEvent *event)
{
_menu->exec(QCursor::pos());
event->accept();
}
void MainWindow::InitWidget()
{
ModuleWidget* productionSumWidget = new ModuleWidget(PRODUCTIONSUM);
ModuleWidget* planForTheMonthWidget = new ModuleWidget(PLANFORTHEMONTH);
ModuleWidget* deviceMonitorRingWidget = new ModuleWidget(DEVICEMONITORING);
ModuleWidget* MdloProgressWidget = new ModuleWidget(MOLDPROGRESS);
ModuleWidget* LoadDistributionWidget = new ModuleWidget(LOADDISTRIBUTION);
ModuleWidget* PassedTheInSpectionWidget = new ModuleWidget(PASSEDTHEINSPECTION);
ModuleWidget* QualityManagementWidget = new ModuleWidget(QUALITYMANAGEMENT);
ModuleWidget* MaterialManagementWidget = new ModuleWidget(MATERIALMANAGEMENT);
ModuleWidget* VideoSurveillance = new ModuleWidget(VIDEOSURVEILLANCE);
DockWidget* dockWidget1 = new DockWidget("随便吧");
dockWidget1->SetDockWidget(productionSumWidget);
dockWidget1->setObjectName("dockWidget1");
DockWidget* dockWidget2 = new DockWidget("随便了");
dockWidget2->SetDockWidget(planForTheMonthWidget);
dockWidget2->setObjectName("dockWidget2");
DockWidget* dockWidget3 = new DockWidget("随便吧");
dockWidget3->SetDockWidget(deviceMonitorRingWidget);
dockWidget3->setObjectName("dockWidget3");
DockWidget* dockWidget4 = new DockWidget("随便了");
dockWidget4->SetDockWidget(MdloProgressWidget);
dockWidget4->setObjectName("dockWidget4");
DockWidget* dockWidget5 = new DockWidget("随便吧");
dockWidget5->SetDockWidget(LoadDistributionWidget);
dockWidget5->setObjectName("dockWidget5");
DockWidget* dockWidget6 = new DockWidget("随便了");
dockWidget6->SetDockWidget(PassedTheInSpectionWidget);
dockWidget6->setObjectName("dockWidget6");
DockWidget* dockWidget7 = new DockWidget("随便吧");
dockWidget7->SetDockWidget(QualityManagementWidget);
dockWidget7->setObjectName("dockWidget7");
DockWidget* dockWidget8 = new DockWidget("随便了");
dockWidget8->SetDockWidget(MaterialManagementWidget);
dockWidget8->setObjectName("dockWidget8");
DockWidget* dockWidget9 = new DockWidget("随便了");
dockWidget9->SetDockWidget(VideoSurveillance);
dockWidget9->setObjectName("dockWidget9");
this->addDockWidget(Qt::LeftDockWidgetArea,dockWidget1);
this->splitDockWidget(dockWidget1,dockWidget2,Qt::Horizontal);
this->splitDockWidget(dockWidget2,dockWidget3,Qt::Horizontal);
this->splitDockWidget(dockWidget1,dockWidget4,Qt::Vertical);
this->splitDockWidget(dockWidget2,dockWidget5,Qt::Vertical);
this->splitDockWidget(dockWidget3,dockWidget6,Qt::Vertical);
}
void MainWindow::InitMenu()
{
_menu = new QMenu();
QAction* actionStyle = new QAction("样式");
QAction* actionSaveLayout = new QAction("保存布局");
QAction* actionLoadLayout = new QAction("使用布局");
QMenu* StyleMenu = new QMenu();
QAction* actionStyle1 = new QAction("样式1");
QAction* actionStyle2 = new QAction("样式2");
QAction* actionStyle3 = new QAction("样式3");
QAction* actionStyle4 = new QAction("样式4");
QAction* actionStyle5 = new QAction("样式5");
QAction* actionStyle6 = new QAction("样式6");
QAction* actionStyle7 = new QAction("样式7");
StyleMenu->addAction(actionStyle1);
StyleMenu->addAction(actionStyle2);
StyleMenu->addAction(actionStyle3);
StyleMenu->addAction(actionStyle4);
StyleMenu->addAction(actionStyle5);
StyleMenu->addAction(actionStyle6);
StyleMenu->addAction(actionStyle7);
actionStyle->setMenu(StyleMenu);
_menu->addAction(actionStyle);
_menu->addAction(actionSaveLayout);
_menu->addAction(actionLoadLayout);
this->connect(actionStyle1,&QAction::triggered,this,[=](){
DockWidgetList::Get()->HideAll();
this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(0));
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(1),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(1),DockWidgetList::Get()->GetDockWidgetIndex(2),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(3),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(1),DockWidgetList::Get()->GetDockWidgetIndex(4),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Vertical);
});
this->connect(actionStyle2,&QAction::triggered,this,[=](){
DockWidgetList::Get()->HideAll();
this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(1));
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(1),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(5),DockWidgetList::Get()->GetDockWidgetIndex(6),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(1),DockWidgetList::Get()->GetDockWidgetIndex(7),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(5),DockWidgetList::Get()->GetDockWidgetIndex(4),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(6),DockWidgetList::Get()->GetDockWidgetIndex(8),Qt::Vertical);
});
this->connect(actionStyle3,&QAction::triggered,this,[=](){
DockWidgetList::Get()->HideAll();
this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(0));
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(2),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(3),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(6),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(5),DockWidgetList::Get()->GetDockWidgetIndex(7),Qt::Vertical);
});
this->connect(actionStyle4,&QAction::triggered,this,[=](){
DockWidgetList::Get()->HideAll();
this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(0));
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(2),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(4),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(3),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(4),DockWidgetList::Get()->GetDockWidgetIndex(7),Qt::Vertical);
});
this->connect(actionStyle5,&QAction::triggered,this,[=](){
DockWidgetList::Get()->HideAll();
this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(0));
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(2),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(3),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(4),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(3),DockWidgetList::Get()->GetDockWidgetIndex(6),Qt::Vertical);
});
this->connect(actionStyle6,&QAction::triggered,this,[=](){
DockWidgetList::Get()->HideAll();
this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(0));
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(1),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(1),DockWidgetList::Get()->GetDockWidgetIndex(2),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(3),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(1),DockWidgetList::Get()->GetDockWidgetIndex(4),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Vertical);
});
this->connect(actionStyle7,&QAction::triggered,this,[=](){
DockWidgetList::Get()->HideAll();
this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(0));
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(3),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(3),DockWidgetList::Get()->GetDockWidgetIndex(4),Qt::Horizontal);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(3),DockWidgetList::Get()->GetDockWidgetIndex(6),Qt::Vertical);
this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(4),DockWidgetList::Get()->GetDockWidgetIndex(7),Qt::Vertical);
});
this->connect(actionSaveLayout,&QAction::triggered,this,[=](){
SaveLayout();
});
this->connect(actionLoadLayout,&QAction::triggered,this,[=](){
LoadLayout();
});
}
void MainWindow::SaveLayout()
{
const QString fileName = QDir::currentPath() + "/Layout.txt";
qDebug() << fileName;
if (fileName.isEmpty())
return;
QFile file(fileName);
if (!file.open(QFile::WriteOnly)) {
QString msg = tr("Failed to open %1\n%2")
.arg(fileName)
.arg(file.errorString());
QMessageBox::warning(nullptr, tr("Error"), msg);
return;
}
QByteArray geo_data = saveGeometry();
QByteArray layout_data = saveState();
bool ok = file.putChar((uchar)geo_data.size());
if (ok)
ok = file.write(geo_data) == geo_data.size();
if (ok)
ok = file.write(layout_data) == layout_data.size();
if (!ok) {
QString msg = tr("Error writing to %1\n%2")
.arg(fileName)
.arg(file.errorString());
QMessageBox::warning(this, tr("Error"), msg);
return;
}
}
void MainWindow::LoadLayout()
{
// QString fileName
// = QFileDialog::getOpenFileName(this, tr("Load layout"));
const QString fileName = QDir::currentPath() + "/Layout.txt";
if (fileName.isEmpty())
return;
QFile file(fileName);
if (!file.open(QFile::ReadOnly)) {
QString msg = tr("Failed to open %1\n%2")
.arg(fileName)
.arg(file.errorString());
QMessageBox::warning(this, tr("Error"), msg);
return;
}
uchar geo_size;
QByteArray geo_data;
QByteArray layout_data;
bool ok = file.getChar((char*)&geo_size);
if (ok) {
geo_data = file.read(geo_size);
ok = geo_data.size() == geo_size;
}
if (ok) {
layout_data = file.readAll();
ok = layout_data.size() > 0;
}
if (ok)
ok = restoreGeometry(geo_data);
if (ok)
ok = restoreState(layout_data);
if (!ok) {
QString msg = tr("Error reading %1")
.arg(fileName);
QMessageBox::warning(this, tr("Error"), msg);
return;
}
}