#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include "../address/addressfactory.h" #include "../blastJob/blastoperationfactory.h" #include "../blastProject/blastprojectfactory.h" #include "../blastRecord/blastrecordfactory.h" #include "../detInfo/detinfofactory.h" #include "../equipment/equipmentfactory.h" #include "../homepage/homepagefactory.h" #include "../mqtt/mqttclient.h" #include "../serial/serialgpsthread.h" #include "../serial/serialtool.h" #include "../utils/global.h" #include "../worker/timeupdatethread.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); void setMenubarTitle(const QString &newTitle); signals: void menubarTitleChanged(const QString &newTitle); void refreshPage(); private slots: void onToggleButtonClicked(); void onButtonClicked(QPushButton *button); void handleStoredGNRMCData(const RMCData &data); void onTimeUpdated(const QString &timeString); void updateProjectTitleLabel(const QString &newTitle); void handleRefreshPage(); void handleMqttProjectsMessage(const QMqttMessage &message); private: void initializeAnimate(); void setStyleSheets(QPushButton *selectedButton); void switchPage(QWidget *button); void initialMqttService(); void onMqttConnected(); void initialBtnSerial(); void initialGPSSerial(); void initDateTime(); void onSerialToolCreated(); void publishBlastProjects(); QList findAllChildUuids(const QJsonArray &addressArray, const QString targetUuid); private: Ui::MainWindow *ui; SerialTool *serialTool; bool m_isMqttConnected = false; bool m_btnSerialInitialized = false; QPropertyAnimation *animate_leftFrame; QList left_button_station; QMap pageFactories; QMap createdPageByButton; TimeUpdateThread *timeThread; QString lat = "未知"; QString lon = "未知"; QPoint m_dragPosition; QString m_currentProjectTitle; // Stores the current project title void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); }; #endif // MAINWINDOW_H