blastopepage.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #ifndef BLASTOPEPAGE_H
  2. #define BLASTOPEPAGE_H
  3. #include <QJsonArray>
  4. #include <QJsonDocument>
  5. #include <QJsonObject>
  6. #include <QLayout>
  7. #include <QMessageBox>
  8. #include <QNetworkAccessManager>
  9. #include <QNetworkReply>
  10. #include <QProgressBar>
  11. #include <QPushButton>
  12. #include <QSet>
  13. #include <QStandardItemModel>
  14. #include <QWebEnginePage>
  15. #include <QWebEngineView>
  16. #include <QWidget>
  17. #include "../PageWidget.h"
  18. #include "../blastProject/hprojectdao.h"
  19. #include "../fireWidget/firingwidget.h" // 包含 firingWidget 头文件
  20. #include "../serial/serialtool.h"
  21. #include "countdownwidget.h"
  22. #include "faceverification.h"
  23. #include "sequenceselectorwidget.h"
  24. // 自定义结构体
  25. struct ProgressBarTriple {
  26. QProgressBar *bar1;
  27. QProgressBar *bar2;
  28. QProgressBar *bar3;
  29. // 构造函数
  30. ProgressBarTriple(QProgressBar *b1, QProgressBar *b2, QProgressBar *b3) : bar1(b1), bar2(b2), bar3(b3) {}
  31. };
  32. namespace Ui {
  33. class BlastOpePage;
  34. }
  35. class BlastOpePage : public QWidget {
  36. Q_OBJECT
  37. public:
  38. explicit BlastOpePage(QWidget *parent = nullptr);
  39. ~BlastOpePage();
  40. private slots:
  41. void onComboBoxIndexChanged(int index);
  42. void updateProgressBar(int value, int row);
  43. void onFiringStageUpdated(int status, int row);
  44. void handleUpdateOpButton(int status, int row);
  45. void showCountDownWidget(QString uuid, const QString &topic, const QString &message);
  46. void handlerUpdateProjectStatus(QString uuid, const QString &status);
  47. void destroyFiringWidget(const QString &uuid, int row);
  48. void on_btnSelect_clicked();
  49. void onItemCheckboxChanged(QStandardItem *item);
  50. void setBatchBlastTrigger(QString uuid);
  51. void showCountDownForBatchBlast();
  52. void triggerBatchFiringBlast();
  53. void destroyBatchFiringWidget(const QString &uuid, int row);
  54. void onSequenceSelected(const QStringList &orderedPcSnList);
  55. void onSequenceCanceled();
  56. private:
  57. void drawTable();
  58. void initFaceVerification();
  59. void onFaceVerificationSuccess();
  60. void onFaceVerificationFailed(const QString &message);
  61. void initPagination();
  62. void handleSingleBlastButtonClicked(int row, QPushButton *button);
  63. bool checkUuidsSame();
  64. void showSequenceSelector();
  65. private:
  66. Ui::BlastOpePage *ui;
  67. QList<HeaderInfo> headers;
  68. QStandardItemModel *model;
  69. QMap<QString, firingWidget *> firingWidgetByUuid;
  70. FaceVerification *m_faceVerification;
  71. HProjectDao dao;
  72. QVector<ProgressBarTriple> progressBars; // 用于保存每行的两个进度条指针
  73. QMap<int, QString> uuidMap; // 用于存储行号和对应的 uuid
  74. QMap<QString, firingWidget *> uuidWidgetSMap;
  75. QMap<QString, int> pcSnToFirstRowMap; // Map pcSn to its first row index for shared widgets
  76. SerialTool *serialTool;
  77. QSet<QString> selectedUuids;
  78. QMetaObject::Connection connectionItem;
  79. QMap<QString, QList<QSharedPointer<HProject>>> m_groupedProjects;
  80. QString stopBlastButtonTxt = "取消起爆";
  81. QString startBlastButtonTxt = "开启起爆";
  82. QString reStartButtonTxt = "返回授权";
  83. SequenceSelectorWidget *m_sequenceSelector;
  84. };
  85. #endif // BLASTOPEPAGE_H