#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include "WorkpiecePositionPresenter.h" #include "IYWorkpiecePositionStatus.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow, public IYWorkpiecePositionStatus { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); void updateStatusLog(const QString& message); void Init(); virtual void OnStatusUpdate(const std::string& statusMessage) override; virtual void OnDetectionResult(const WorkpiecePositionDetectionResult& result) override; virtual void OnBinocularMarkConnectionChanged(bool connected) override; virtual void OnEpicEyeConnectionChanged(bool connected) override; virtual void OnCamera1StatusChanged(bool) override {} virtual void OnCamera2StatusChanged(bool) override {} virtual void OnRobotConnectionChanged(bool) override {} virtual void OnSerialConnectionChanged(bool) override {} virtual void OnCameraCountChanged(int) override {} virtual void OnWorkStatusChanged(WorkStatus status) override; signals: void workStatusUpdateRequested(WorkStatus status); void detectionResultUpdateRequested(const WorkpiecePositionDetectionResult& result); void logUpdateRequested(const QString& message); private slots: void updateWorkStatusLabel(WorkStatus status); void updateDetectionResultDisplay(const WorkpiecePositionDetectionResult& result); void updateDetectionLog(const QString& message); void on_btn_start_clicked(); void on_btn_stop_clicked(); private: Ui::MainWindow *ui; WorkpiecePositionPresenter* m_presenter; QStringListModel* m_logModel; void displayMarkData(const std::vector& marks); void displayCenterPosition(const WorkpieceCenterPosition& centerPosition); }; #endif // MAINWINDOW_H