blastopepage.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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 "./serial/serialtool.h"
  18. #include "PageWidget.h"
  19. #include "countdownwidget.h"
  20. #include "fireWidget/firingwidget.h" // 包含 firingWidget 头文件
  21. #include "hprojectdao.h"
  22. // 自定义结构体
  23. struct ProgressBarTriple {
  24. QProgressBar *bar1;
  25. QProgressBar *bar2;
  26. QProgressBar *bar3;
  27. // 构造函数
  28. ProgressBarTriple(QProgressBar *b1, QProgressBar *b2, QProgressBar *b3) : bar1(b1), bar2(b2), bar3(b3) {}
  29. };
  30. namespace Ui {
  31. class BlastOpePage;
  32. }
  33. class BlastOpePage : public QWidget {
  34. Q_OBJECT
  35. public:
  36. explicit BlastOpePage(QWidget *parent = nullptr);
  37. ~BlastOpePage();
  38. private slots:
  39. void PageChanged(int page);
  40. void onComboBoxIndexChanged(int index);
  41. void updateProgressBar(int value, int row);
  42. void onFiringStageUpdated(int status, int row);
  43. void handleUpdateOpButton(int status, int row);
  44. void showCountDownWidget(QString uuid, const QString &topic, const QString &message);
  45. void handlerUpdateProjectStatus(QString uuid, const QString &status);
  46. void destroyFiringWidget(const QString &uuid, int row);
  47. void on_btnSelect_clicked();
  48. void onItemCheckboxChanged(QStandardItem *item);
  49. void setBatchBlastTrigger(QString uuid);
  50. void showCountDownForBatchBlast();
  51. void triggerBatchFiringBlast();
  52. void destroyBatchFiringWidget(const QString &uuid, int row);
  53. private:
  54. void handleFeaturePermission(QWebEnginePage *page, const QUrl &securityOrigin, QWebEnginePage::Feature feature);
  55. void RefreshData();
  56. void loadDataAndDrawTable(int currentPage, int pageSize);
  57. void InitFace();
  58. void closeWebViewAndRestoreUI();
  59. void parseJsonString(const QJsonDocument &jsonDoc);
  60. void onUrlChanged(const QUrl &newUrl);
  61. void initPagination();
  62. QJsonObject sendPostRequest(const QUrl &url, const QJsonObject &data);
  63. QJsonObject getMetaInfo();
  64. void handleSingleBlastButtonClicked(int row, QPushButton *button);
  65. bool checkUuidsSame();
  66. private:
  67. Ui::BlastOpePage *ui;
  68. QList<HeaderInfo> headers;
  69. QStandardItemModel *model;
  70. QMap<QString, firingWidget *> firingWidgetByUuid;
  71. QWebEngineView *view;
  72. QVBoxLayout *layout;
  73. QString certifyId;
  74. PageWidget *pageWidget;
  75. QJsonArray dataArray;
  76. HProjectDao dao;
  77. QVector<ProgressBarTriple> progressBars; // 用于保存每行的两个进度条指针
  78. QMap<int, QString> uuidMap; // 用于存储行号和对应的 uuid
  79. QMap<QString, firingWidget *> uuidWidgetSMap;
  80. SerialTool *serialTool;
  81. QSet<QString> selectedUuids;
  82. QMetaObject::Connection connectionItem;
  83. int m_pageSize; // 每页显示的记录数量
  84. int m_currentPage; // 当前页面
  85. int totalCount;
  86. QString stopBlastButtonTxt = "取消起爆";
  87. QString startBlastButtonTxt = "开启起爆";
  88. QString reStartButtonTxt = "返回授权";
  89. };
  90. #endif // BLASTOPEPAGE_H