#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include "serialworker.h" #include "rawview.h" #include "tableview.h" #include "tagwidget.h" #include "videowidget.h" #include "connectdialog.h" class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); protected: void closeEvent(QCloseEvent *event) override; private slots: void onConnectClicked(); void onDisconnectClicked(); void onPortOpened(); void onPortClosed(); void onReconnecting(int attempt); void onClearScreen(); void onError(const QString &message); void onNewLine(const QString &line); void onTagDetected(const QString &tag, const QString &value); void showFormatReference(); void configureTagFilter(); void showAbout(); private: void setupUi(); void setupToolBar(); void setupStatusBar(); void clearAllViews(); void doShutdown(); void saveSettings(); void restoreSettings(); QThread *m_thread = nullptr; SerialWorker *m_worker = nullptr; RawView *m_rawView = nullptr; TableView *m_tableView = nullptr; TagWidget *m_tagWidget = nullptr; VideoWidget *m_videoWidget= nullptr; QLabel *m_portLabel = nullptr; QLabel *m_stateLabel = nullptr; QLabel *m_reconnectLabel = nullptr; QCheckBox *m_autoReconnectCb = nullptr; QSpinBox *m_reconnectIntervalSb = nullptr; QAction *m_connectAction = nullptr; QAction *m_disconnectAction = nullptr; // Splitters (saved/restored via QSettings) QSplitter *m_mainSplitter = nullptr; QSplitter *m_rightSplitter = nullptr; SerialConfig m_lastConfig; QSet m_suppressedTags; // tags hidden from Raw view bool m_shutdownDone = false; };