Files
handleaiuinew/HanddleAI/HandleAiUi-new/mainwindow.h
T
2024-08-14 11:15:16 +08:00

317 lines
9.4 KiB
C++

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QApplication>
#include <QDir>
#include <QTimer>
#include <QVBoxLayout>
#include <QScopedPointer>
#include <QJsonObject>
#include <QProcess>
#include <iostream>
#include <qevent.h>
#include <qpushbutton.h>
#include <unordered_map>
#include <uiModule/components/toolBarButton.h>
#include <QStackedWidget>
#include <LoginWindow.h>
#include <QPropertyAnimation>
#include <loadingWidget.h>
#include <uiModule/uiModule_imageDoubleCheckQdialog.h>
#include <pages/displayPageWidget.h>
#include <pages/configSettingWidget.h>
#include <pages/logPageWidget.h>
#include <pages/sqlControlWidget.h>
#include <pages/manualDetWidget.h>
#include <front/pages/historyWidget.h>
#include <appConfig/appConfig.h>
#include <iostream>
#include <algorithm>
#include <uiModule_backContinueDetDialog.h>
#include <uiModule_productDetDoubleCheck.h>
#pragma execution_character_set("utf-8")
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class fbBridge;
class appConfig;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
//主要控件
std::vector<toolBarButton*>pageBtns;
QStackedWidget stackedWidgets;//一共三层,加载界面,登录界面,主要界面
QStackedWidget pageWidgets;//主要界面中的页面
loginWindow _loginWindow;//登录界面
loadingWidget _loadingWidget;//加载 等待界面
//页面
displayWidget* _displayWidget;
configSettingWidget* _configSettingWidget;
logWidget* _logWidget;
sqlControlWidget* _sqlControlWidget;
manualDetWidget* _manualDetWidget;
historyWidget* _historyWidget;
//人工复判窗口
imageDoubleCheckQdialog* _imageDoubleCheckQdialog = new imageDoubleCheckQdialog();
backContinueDetDialog* _backContinueDetDialog = new backContinueDetDialog();
productDetDoubleCheck* _productDetDoubleCheck = new productDetDoubleCheck();
private:
Ui::MainWindow* ui;
fbBridge* fbBridgePtr;
//动画效果
QGraphicsBlurEffect* blurEffect;
QPropertyAnimation* blurEffectAnimation;
QPushButton* maximizeRestoreButton;
QVBoxLayout* mainLayout;
QHBoxLayout* mainLayout2;
QWidget* mainWidget;
QWidget* mainWidget2;
bool isLogin = false;
bool backEndInit = false;
void topBarInit();
void leftBarInit();
//窗口移动
#pragma region 窗口移动变量
bool isMoving = false;
QPoint startPos;
QRect startFrameGeometry;
QTime lastWindowMoveTime;
int freshDelay = 1000 / windowMoveFreshRate;
bool setNormalAndMove = false;//判断是否从最大化开始移动
#pragma endregion
//窗口缩放
#pragma region 窗口缩放变量
enum toggleMaximizeEnum
{
reverse,
normal,
max
};
#pragma endregion
public slots:
void switchToManulMode()
{
_displayWidget->setDisabled(true);
loading(false);
}
void minimizeWindow()
{
showMinimized();
}
void switchStackWidget(int index)
{
for (int index2 = 0; index2 < pageBtns.size(); index2++)
{
if (index2 != index)
pageBtns[index2]->toDefault();
}
pageBtns[index]->pressed();
pageWidgets.setCurrentIndex(index);
qDebug() << "switch Page to Index:" << index;
}
void toggleMaximize(toggleMaximizeEnum toggleMaximizeEnumIn = reverse)
{
switch (toggleMaximizeEnumIn)
{
case reverse:
if (isMaximized()) {
showNormal();
maximizeRestoreButton->setIcon(QPixmap(":/topBar/icon/fullscreen.png"));
}
else {
showMaximized();
maximizeRestoreButton->setIcon(QPixmap(":/topBar/icon/fullscreen-exit.png"));
}
break;
case normal:
showNormal();
maximizeRestoreButton->setIcon(QPixmap(":/topBar/icon/fullscreen.png"));
break;
case max:
showMaximized();
maximizeRestoreButton->setIcon(QPixmap(":/topBar/icon/fullscreen-exit.png"));
break;
}
_displayWidget->windowChanged();
}
void switchstackedWidgets(int index)
{
stackedWidgets.setCurrentIndex(index);
}
void login(bool input)
{
if (input == true)
{
#if disableBackEndCheck == 0
if (backEndInit == false)
{
isLogin = true;
loading(true);
}
else
#endif
{
blurEffectAnimation->setStartValue(0);
blurEffectAnimation->setEndValue(20);
blurEffectAnimation->start();
stackedWidgets.setCurrentIndex(2);
blurEffectAnimation->setStartValue(20);
blurEffectAnimation->setEndValue(0);
blurEffectAnimation->start();
}
}
else if (input == false)
{
stackedWidgets.setCurrentIndex(0);
loading(false);
}
}
void loading(bool input)
{
if (input == true)
{
blurEffectAnimation->setStartValue(0);
blurEffectAnimation->setEndValue(20);
blurEffectAnimation->start();
stackedWidgets.setCurrentIndex(1);
blurEffectAnimation->setStartValue(0);
blurEffectAnimation->setEndValue(0);
blurEffectAnimation->start();
}
else if (input == false)
{
blurEffectAnimation->setStartValue(0);
blurEffectAnimation->setEndValue(0);
blurEffectAnimation->start();
_loadingWidget.stop();
stackedWidgets.setCurrentIndex(2);
blurEffectAnimation->setStartValue(20);
blurEffectAnimation->setEndValue(0);
blurEffectAnimation->start();
}
}
void recvPixmapImageWidget(showImgPack* pack)
{
_displayWidget->_ImageWidgetManager.showImg(pack->img, pack->type, pack->index);
delete pack;
}
void recvInitFinished(int input)
{
switch (input)
{
case initStatus::InitOK:
backEndInit = true;
if (isLogin == true)
loading(false);
break;
default:
_loadingWidget.setError();
backEndInit = false;
}
}
void recvInitString(QString strIn)
{
if (_loadingWidget.isRunning != false)
{
_loadingWidget.initLog->append(strIn);
}
}
void addDetHistoryData(bool isOK, historyPack _historyPack)
{
_displayWidget->historyImgs->addData(isOK, _historyPack);
}
void addDashBoardData(int index, bool value)//增加一个OK/NG数据到dashboard
{
if (_displayWidget->_summaryDataManager->dashBoardWidgets.size() - 1 < index)
qDebug() << __LINE__ << "index out of Size";
if(value==true)
_displayWidget->_summaryDataManager->dashBoardWidgets[index]->addOk();
else
_displayWidget->_summaryDataManager->dashBoardWidgets[index]->addNG();
}
void addCtData(int index, int value)
{
switch (index)
{
case 0:
_displayWidget->_summaryDataManager->totalCtBar->addData(value);
break;
case 1:
_displayWidget->_summaryDataManager->halconCtBar->addData(value);
break;
case 2:
_displayWidget->_summaryDataManager->aiCtBar->addData(value);
break;
}
}
//void resetDashBoard();//reset dashBoard
void uiModuleLocationMapSetProductSignStatus(int pos, int status)
{
_displayWidget->_uiModuleLocationMap->setProductSignStatus(pos, status);
}
//void addShowPerformanceWidgetData(int index, int timeCost);
//void resetShowPerformanceWidget();
signals:
void reInitSignal();
protected:
void mouseDoubleClickEvent(QMouseEvent* event) override
{
if (event->pos().y() > 35)
return
toggleMaximize(reverse);
QMainWindow::mouseDoubleClickEvent(event);
}
void mousePressEvent(QMouseEvent* event) override {
if (event->pos().y() > 35)
return;
if (event->button() == Qt::LeftButton) {
startPos = event->globalPos();
startFrameGeometry = frameGeometry();
isMoving = true;
lastWindowMoveTime.start(); // 按下时开始计时
}
QMainWindow::mousePressEvent(event);
}
void mouseMoveEvent(QMouseEvent* event) override {
if (event->buttons() == Qt::LeftButton && isMoving) {
QPoint pos = event->globalPos();
if (getMax(getAbs(pos.x()- startPos.x()), getAbs(pos.y() - startPos.y()))>10)
if(lastWindowMoveTime.elapsed()> freshDelay)//每秒刷新100次
{
lastWindowMoveTime.restart();
move(startFrameGeometry.topLeft() + (event->globalPos() - startPos));
}
}
QMainWindow::mouseMoveEvent(event);
}
void mouseReleaseEvent(QMouseEvent* event) override {
if (event->button() == Qt::LeftButton) {
isMoving = false;
}
QMainWindow::mouseReleaseEvent(event);
}
void resizeEvent(QResizeEvent* event) override {
QMainWindow::resizeEvent(event);
}
};
#endif // MAINWINDOW_H