#pragma once #include #include #include #include #include #include "DatasetDetailTab.hpp" // geopro::controller::TabSpec namespace geopro::data { class IColorTemplateRepository; class IDatasetCommandRepository; } namespace geopro::controller { class DatasetViewState; // 跨视图色阶真源(统一同步) } namespace geopro::app { class DatasetDetailPage; // 多 Tab 壳:每数据集一页(按 dsId 去重)。R095。tab 引擎版。 class DatasetDetailPanel : public QTabWidget { Q_OBJECT public: explicit DatasetDetailPanel(QWidget* parent = nullptr); // 色阶模板仓储 + projectId 取值回调:透传给每个新建的详情页(网格剖面色阶编辑器用)。 void setColorTemplateRepo(geopro::data::IColorTemplateRepository* repo, std::function projectIdGetter); // 反演命令仓储:透传给每个新建的详情页(measurement 反演运算/生成视电阻率用)。 void setCommandRepo(geopro::data::IDatasetCommandRepository* repo); // 跨视图色阶真源:透传给每个新建的详情页 → 网格视图(2D↔3D 色阶同步)。 void setViewState(geopro::controller::DatasetViewState* state); // 数据集打开:find-or-create 页 → build(tabs) → 加/抬该面板页签。 // tmObjectId:所属 TM 对象 id(白化 structParentId),build 前交给页 → 视图。 void onDatasetOpened(const QString& dsId, const QString& ddCode, const QString& dsName, const QString& tmObjectId, const std::vector& tabs); void onTabReady(const QString& dsId, int tabIndex, const QVariant& payload); void onTabLoadStarted(const QString& dsId, int tabIndex); void onLoadFailed(const QString& dsId, const QString& message); void focusDataset(const QString& dsId); // 单击聚焦已开页 signals: void activeDatasetChanged(const QString& dsId); // 反向联动数据集列表 void tabNeeded(const QString& dsId, const QString& ddCode, int tabIndex); // lazy 页首激活 → 懒加载 // 分页型页签分页器翻页 → 按页加载(外部接控制器 loadTabPaged)。 void tabPageNeeded(const QString& dsId, const QString& ddCode, int tabIndex, int pageNo, int pageSize); private: DatasetDetailPage* pageFor(const QString& dsId) const; // 色阶模板仓储注入(新页 build 前 setColorTemplateRepo 透传)。 geopro::data::IColorTemplateRepository* colorTplRepo_ = nullptr; std::function projectIdGetter_; // 反演命令仓储注入(新页 build 前 setCommandRepo 透传)。 geopro::data::IDatasetCommandRepository* cmdRepo_ = nullptr; geopro::controller::DatasetViewState* viewState_ = nullptr; // 跨视图色阶真源(透传给详情页) }; } // namespace geopro::app