161 lines
5.3 KiB
C++

#ifndef DIALOGALGOARG_H
#define DIALOGALGOARG_H
#include <QDialog>
#include <QVector>
class QCheckBox;
class QLineEdit;
class QWidget;
class ParkingSpaceGuidePresenter;
namespace Ui {
class DialogAlgoArg;
}
class DialogAlgoArg : public QDialog
{
Q_OBJECT
public:
enum class ConfigPage
{
Detection = 0,
Camera = 1,
Lidar = 2,
Multicast = 3,
Calibration = 4
};
explicit DialogAlgoArg(QWidget* parent = nullptr);
~DialogAlgoArg();
void SetPresenter(ParkingSpaceGuidePresenter* presenter);
void SetCurrentPage(ConfigPage page);
private slots:
void on_btnOK_clicked();
void on_btnCancel_clicked();
void on_btnApply_clicked();
void on_btnReset_clicked();
private:
void BuildUi();
void ApplyUiFont();
void ShowTabGroup(ConfigPage page);
void UpdateTitle(ConfigPage page);
void LoadParams();
bool SaveParams();
void ResetParams();
void HideDetachedTabs();
QLineEdit* AddDoubleEditor(QWidget* parent, const QString& label, int row, double min, double max);
QLineEdit* AddIntEditor(QWidget* parent, const QString& label, int row, int min, int max);
QLineEdit* AddTextEditor(QWidget* parent, const QString& label, int row, bool password = false);
QCheckBox* AddCheckBox(QWidget* parent, const QString& label, int row);
void SetDouble(QLineEdit* edit, double value);
void SetInt(QLineEdit* edit, int value);
bool GetDouble(QLineEdit* edit, const QString& label, double& value);
bool GetFloat(QLineEdit* edit, const QString& label, float& value);
bool GetInt(QLineEdit* edit, const QString& label, int& value);
void SetMatrix(QLineEdit* const edits[9], const double values[9]);
bool GetMatrix(QLineEdit* const edits[9], const QString& label, double values[9]);
private:
Ui::DialogAlgoArg* ui = nullptr;
ParkingSpaceGuidePresenter* m_presenter = nullptr;
QVector<ConfigPage> m_visiblePages;
QWidget* m_planeParkingTab = nullptr;
QWidget* m_groundCalibrationTab = nullptr;
QWidget* m_treeGrowTab = nullptr;
QWidget* m_guideDecisionTab = nullptr;
QWidget* m_processTab = nullptr;
QWidget* m_modelRecognitionTab = nullptr;
QWidget* m_personDetectionTab = nullptr;
QWidget* m_cameraTab = nullptr;
QWidget* m_lidarTab = nullptr;
QWidget* m_multicastTab = nullptr;
QLineEdit* m_parkingPointX = nullptr;
QLineEdit* m_parkingPointY = nullptr;
QLineEdit* m_parkingPointZ = nullptr;
QLineEdit* m_guideLinePointX = nullptr;
QLineEdit* m_guideLinePointY = nullptr;
QLineEdit* m_guideLinePointZ = nullptr;
QLineEdit* m_guidingRange = nullptr;
QLineEdit* m_parkingRange = nullptr;
QLineEdit* m_distFromNoseToWheel = nullptr;
QLineEdit* m_planeCalib[9] = {};
QLineEdit* m_planeHeight = nullptr;
QLineEdit* m_invRMatrix[9] = {};
QLineEdit* m_yDeviationMax = nullptr;
QLineEdit* m_zDeviationMax = nullptr;
QLineEdit* m_maxLineSkipNum = nullptr;
QLineEdit* m_maxSkipDistance = nullptr;
QLineEdit* m_minLTypeTreeLen = nullptr;
QLineEdit* m_minVTypeTreeLen = nullptr;
QLineEdit* m_lateralTolerance = nullptr;
QLineEdit* m_angleTolerance = nullptr;
QLineEdit* m_dockingStartDistance = nullptr;
QLineEdit* m_captureStartDistance = nullptr;
QLineEdit* m_approachStartDistance = nullptr;
QLineEdit* m_slowDistance = nullptr;
QLineEdit* m_stopDistanceTolerance = nullptr;
QLineEdit* m_overshootDistance = nullptr;
QLineEdit* m_stoppedShortMinDistance = nullptr;
QLineEdit* m_maxApproachSpeed = nullptr;
QLineEdit* m_stoppedSpeedThreshold = nullptr;
QLineEdit* m_speedFilterAlpha = nullptr;
QLineEdit* m_distanceChangeThreshold = nullptr;
QLineEdit* m_lateralOffsetChangeThreshold = nullptr;
QLineEdit* m_stopStableFrames = nullptr;
QLineEdit* m_stoppedShortStableFrames = nullptr;
QLineEdit* m_errorFrameThreshold = nullptr;
QLineEdit* m_lostFrameThreshold = nullptr;
QLineEdit* m_completedHoldFrames = nullptr;
QLineEdit* m_modelVerifyDistance = nullptr;
QLineEdit* m_modelRoiX = nullptr;
QLineEdit* m_modelRoiY = nullptr;
QLineEdit* m_modelRoiWidth = nullptr;
QLineEdit* m_modelRoiHeight = nullptr;
QLineEdit* m_confidenceThreshold = nullptr;
QLineEdit* m_maxRecognitionAttempts = nullptr;
QCheckBox* m_personDetectionEnabled = nullptr;
QLineEdit* m_personRoiX = nullptr;
QLineEdit* m_personRoiY = nullptr;
QLineEdit* m_personRoiWidth = nullptr;
QLineEdit* m_personRoiHeight = nullptr;
QLineEdit* m_personConfidenceThreshold = nullptr;
QLineEdit* m_personStableFrames = nullptr;
QLineEdit* m_personDetectionIntervalMs = nullptr;
QLineEdit* m_mvsSerialNumber = nullptr;
QLineEdit* m_mvsDeviceIndex = nullptr;
QCheckBox* m_mvsEnabled = nullptr;
QLineEdit* m_lidarType = nullptr;
QLineEdit* m_lidarHost = nullptr;
QLineEdit* m_lidarMsopPort = nullptr;
QLineEdit* m_lidarDifopPort = nullptr;
QLineEdit* m_lidarMinDistance = nullptr;
QLineEdit* m_lidarMaxDistance = nullptr;
QLineEdit* m_lidarStartAngle = nullptr;
QLineEdit* m_lidarEndAngle = nullptr;
QLineEdit* m_udpAddress = nullptr;
QLineEdit* m_udpPort = nullptr;
QLineEdit* m_udpTargetId = nullptr;
QLineEdit* m_udpParkId = nullptr;
QCheckBox* m_udpEnabled = nullptr;
};
#endif // DIALOGALGOARG_H