mainwindow.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include <QPropertyAnimation>
  5. #include <QPushButton>
  6. #include <QFrame>
  7. #include <QList>
  8. #include <QWidget>
  9. #include "mqtt/mqttclient.h"
  10. #include "addressfactory.h"
  11. #include "blastProject/blastprojectfactory.h"
  12. #include "equipmentfactory.h"
  13. #include "detInfo/detinfofactory.h"
  14. #include "blastoperationfactory.h"
  15. #include "blastRecord/blastrecordfactory.h"
  16. #include "serial/serialtool.h"
  17. #include "serialGpsthread.h"
  18. #include "worker/timeupdatethread.h"
  19. #include "global.h"
  20. QT_BEGIN_NAMESPACE
  21. namespace Ui { class MainWindow; }
  22. QT_END_NAMESPACE
  23. class MainWindow : public QMainWindow
  24. {
  25. Q_OBJECT
  26. public:
  27. MainWindow(QWidget *parent = nullptr);
  28. ~MainWindow();
  29. void setProjectTitle(const QString &newTitle);
  30. signals:
  31. void projectTitleChanged(const QString &newTitle);
  32. private slots:
  33. void onToggleButtonClicked();
  34. void onButtonClicked(QPushButton *button);
  35. void handleStoredGNRMCData(const RMCData &data);
  36. void onTimeUpdated(const QString &timeString);
  37. void updateProjectTitleLabel(const QString &newTitle);
  38. void messageAndTopicReceived(const QByteArray &message, const QMqttTopicName &topic);
  39. private:
  40. void initializeAnimate();
  41. void setStyleSheets(QPushButton *selectedButton);
  42. void switchPage(QWidget *button);
  43. void initialMqttService();
  44. void onMqttConnected();
  45. void initialBtnSerial();
  46. void initialGPSSerial();
  47. void initDateTime();
  48. void onSerialToolCreated();
  49. private:
  50. Ui::MainWindow *ui;
  51. SerialTool* serialTool;
  52. bool m_isMqttConnected = false;
  53. bool m_btnSerialInitialized = false;
  54. QPropertyAnimation *animate_leftFrame;
  55. QList<QWidget*> left_button_station;
  56. QMap<QWidget*, PageFactory*> pageFactories;
  57. QMap<QWidget*, QWidget*> createdPageByButton;
  58. TimeUpdateThread *timeThread;
  59. QString lat = "未知";
  60. QString lon = "未知";
  61. QPoint m_dragPosition;
  62. QString m_currentProjectTitle; // Stores the current project title
  63. void mousePressEvent(QMouseEvent *event);
  64. void mouseMoveEvent(QMouseEvent *event);
  65. };
  66. #endif // MAINWINDOW_H