geopro/src/app/panels/columns/CategoryAnalysisTab.hpp

43 lines
1.5 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 <QStringList>
#include <QWidget>
#include <map>
#include <string>
#include <vector>
#include "DatasetCategory.hpp" // CategoryBuckets
#include "repo/RepoTypes.hpp"
namespace geopro::data {
class DatasetFieldDictionary;
}
namespace geopro::app {
class CategorySection;
// 「三维分析」tabQScrollArea 竖向堆叠 5 个数据类型大类段spec §4
// 各段勾选合并为并集上抛;生成/详情请求透传。
class CategoryAnalysisTab : public QWidget {
Q_OBJECT
public:
explicit CategoryAnalysisTab(geopro::data::DatasetFieldDictionary* dict, QWidget* parent = nullptr);
void setBuckets(const CategoryBuckets& b); // 分发到 5 段(与 categoryConfigs 同序)
void setStructure(const std::vector<geopro::data::StructNode>& nodes); // 转发各段
CategorySection* section(const std::string& id) const; // 按 CategorySpec.id 取段
signals:
void checkedDatasetsChanged(const QStringList& dsIds); // 5 段勾选并集
void generateVolumeRequested(const QString& dsTypeCode, const QStringList& sourceDsIds);
void detailRequested(const QString& dsId, const QString& ddCode, const QString& name);
void deleteDatasetRequested(const QString& dsId, const QString& ddCode); // 右键删除切片/异常
private:
void recomputeCheckedUnion();
std::map<std::string, CategorySection*> sections_;
std::map<std::string, QStringList> checkedBySeg_; // 各段当前勾选(合并成并集)
};
} // namespace geopro::app