geopro/src/app/panels/DatasetDetailPanel.hpp

64 lines
2.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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白化 structParentIdbuild 前交给页 → 视图。
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