From 1d744bab81520ba4b1949b9ceab75725fbeb2072 Mon Sep 17 00:00:00 2001 From: gaozheng Date: Wed, 24 Jun 2026 21:13:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(app):=20=E5=AF=B9=E8=B1=A1=E6=A0=91?= =?UTF-8?q?=E6=8B=89=E5=8F=96=E6=94=B9=20checkedSourcesChanged+confType=20?= =?UTF-8?q?=E5=88=86=E6=B5=81(=E6=94=AF=E6=8C=81=20GS=20=E7=9B=B4=E6=8C=82?= =?UTF-8?q?=20ds)(Task12=20#1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/main.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index f569ac3..ebaa788 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -1223,27 +1223,28 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re // 渲染由三栏勾选框驱动(Task 7:Column3DDataset::checkedDatasetsChanged → setCheckedDatasets)。 auto generation = std::make_shared(0); QObject::connect( - objectTree, &geopro::app::ObjectTreePanel::checkedTmsChanged, &window, + objectTree, &geopro::app::ObjectTreePanel::checkedSourcesChanged, &window, [&projectRepo, &nav, drawer, emptyState, generation, lastSourceRows, - refreshAnalysis](const QStringList& tmIds) { + refreshAnalysis](const QList& sources) { const unsigned long long myGen = ++(*generation); - emptyState->setVisible(tmIds.isEmpty()); // 有勾选→隐藏引导层,露出中央渲染 - if (tmIds.isEmpty()) { + emptyState->setVisible(sources.isEmpty()); // 有勾选→隐藏引导层,露出中央渲染 + if (sources.isEmpty()) { *lastSourceRows = {}; refreshAnalysis(); // 清空 5 段(客户端三维体仍驻留) + col2D return; } - // 多 TM 异步汇总:每个 TM 取整棵 ds 子树,全部回来后 splitByCategory 分发到 5 段。 + // 多源异步汇总:每个源(TM / GS·项目根直挂)按 confType 取整棵 ds 子树,全部回来后 splitByCategory 分 5 段。 auto acc = std::make_shared>(); - auto remaining = std::make_shared(tmIds.size()); + auto remaining = std::make_shared(sources.size()); auto finish = [acc, generation, myGen, lastSourceRows, refreshAnalysis]() { if (*generation != myGen) return; // 已被更新的勾选批次取代→丢弃陈旧结果 *lastSourceRows = *acc; // 全部对象树 ds 作分析数据源 refreshAnalysis(); // splitByCategory→5段 + 合并三维体/切片 + dim2D→col2D }; - for (const QString& tm : tmIds) { + for (const geopro::data::DataSource& src : sources) { + // 第3参 confType:1=GS/项目根(直挂 ds),2=TM(测线下 ds)——透传给 loadRowsAsync(spec §6)。 geopro::data::NavRequest* req = projectRepo.loadRowsAsync( - nav.currentProjectId().toStdString(), tm.toStdString(), 2, 3, 1, 100000); + nav.currentProjectId().toStdString(), src.id, src.confType, 3, 1, 100000); QObject::connect(req, &geopro::data::NavRequest::done, drawer, [acc, remaining, finish](const QVariant& v) { auto page = qvariant_cast(v);