geopro/src/app/panels/DatasetDetailPage.hpp

36 lines
1.4 KiB
C++

#pragma once
#include <QWidget>
#include "DatasetDetailController.hpp"
namespace geopro::app {
class RawDataChartView;
class GridDataChartView;
class LoadingOverlay;
// 单个数据集详情页:下划线页签「原数据 / 网格数据」+ 右侧「导出」操作。
// 内部分别由 RawDataChartView / GridDataChartView 实现各自三层布局。
class DatasetDetailPage : public QWidget {
Q_OBJECT
public:
explicit DatasetDetailPage(QWidget* parent = nullptr);
void setData(const geopro::controller::DatasetDetailController::ChartData& d);
// 网格数据到达(懒加载结果)→ 下发给 GridDataChartView 并标记已加载。
void setGridData(const geopro::controller::DatasetDetailController::GridData& d);
// 网格懒加载进行中(true)/结束(false)时切换遮罩显隐。
void setGridLoading(bool on);
QString dsId() const { return dsId_; }
signals:
// 「网格数据」页签首次激活且本页网格数据未加载 → 请求懒加载。
void gridDataNeeded(const QString& dsId, const QString& ddCode);
private:
QString dsId_;
QString ddCode_;
bool gridRequested_ = false; // 已请求过(避免重复发信号)
RawDataChartView* rawView_;
GridDataChartView* gridView_;
LoadingOverlay* gridOverlay_; // 网格懒加载期间覆盖 gridView_ 的遮罩
};
} // namespace geopro::app