GrabBag/App/GrabBag/GrabBagApp/dialogconfigtree.h
2026-03-28 10:49:55 +08:00

85 lines
2.6 KiB
C++

#ifndef DIALOGCONFIGTREE_H
#define DIALOGCONFIGTREE_H
#include <QDialog>
#include <QTreeWidget>
#include <QStackedWidget>
#include "IVrConfig.h"
#include <IVrEyeDevice.h>
// 前向声明
class GrabBagPresenter;
namespace Ui {
class DialogConfigTree;
}
class DialogConfigTree : public QDialog
{
Q_OBJECT
public:
explicit DialogConfigTree(ConfigResult* configResult,
const std::vector<std::pair<std::string, IVrEyeDevice*>>& deviceList,
GrabBagPresenter* presenter,
QWidget *parent = nullptr);
~DialogConfigTree();
ConfigResult* GetConfigResult() { return m_configResult; }
private slots:
void onTreeItemClicked(QTreeWidgetItem* item, int column);
void onAddClicked();
void onDeleteClicked();
void onSaveClicked();
void onCancelClicked();
void onSetDefaultClicked();
// 参数编辑槽
void onCameraLevelClicked();
void onHandEyeCalibSaveClicked();
void onHandEyeCalibLoadClicked();
void onUpdateWpNameClicked();
void onSavePkgParamClicked();
private:
void displayHandEyeCalibInline();
void initTree();
void initConfigPanels();
void updateConfigPanel(QTreeWidgetItem* item);
void saveCurrentConfig();
void saveConfigToFile();
// 树节点操作
void addWorkPosition(const QString& name);
void addCamera(const QString& wpId, const QString& name, int cameraIndex);
void addPackage(const QString& wpId, const QString& camId, const QString& name);
// 配置面板更新
void showWorkPositionConfig(const WorkPositionConfig* config);
void showCameraConfig(const WorkPositionConfig* wpConfig, const CameraConfig* camConfig);
void showPackageConfig(const WorkPositionConfig* wpConfig,
const CameraConfig* camConfig,
const PackageTypeConfig* pkgConfig);
// 配置保存
void saveWorkPositionConfig(WorkPositionConfig* config);
void saveCameraConfig(WorkPositionConfig* wpConfig, CameraConfig* camConfig);
void savePackageConfig(WorkPositionConfig* wpConfig,
CameraConfig* camConfig,
PackageTypeConfig* pkgConfig);
private:
Ui::DialogConfigTree *ui;
ConfigResult* m_configResult;
std::vector<std::pair<std::string, IVrEyeDevice*>> m_deviceList;
GrabBagPresenter* m_presenter;
QTreeWidgetItem* m_currentItem = nullptr;
WorkPositionConfig* m_currentWorkPos = nullptr;
CameraConfig* m_currentCamera = nullptr;
PackageTypeConfig* m_currentPackage = nullptr;
};
#endif // DIALOGCONFIGTREE_H