64 lines
2.9 KiB
C++
64 lines
2.9 KiB
C++
#pragma once
|
||
#include <functional>
|
||
#include <vector>
|
||
#include <QString>
|
||
#include <QTabWidget>
|
||
#include <QVariant>
|
||
#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<QString()> 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<geopro::controller::TabSpec>& 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<QString()> projectIdGetter_;
|
||
|
||
// 反演命令仓储注入(新页 build 前 setCommandRepo 透传)。
|
||
geopro::data::IDatasetCommandRepository* cmdRepo_ = nullptr;
|
||
|
||
geopro::controller::DatasetViewState* viewState_ = nullptr; // 跨视图色阶真源(透传给详情页)
|
||
};
|
||
} // namespace geopro::app
|