GridFrame/diagramCavas/source/diagramEditor/transformerBuilder.cpp

51 lines
1.7 KiB
C++
Raw Normal View History

2026-05-06 19:48:33 +08:00
// TransformerBuilder.cpp
#include "diagramEditor/transformerBuilder.h"
#include "diagramEditor/hierarchyItemBuilder.h"
TransformerBuilder::TransformerBuilder(EditPanel* panel)
: LayoutBuilder(panel) {}
LayoutBuilder::BuildResult TransformerBuilder::buildContainer(const BlockMap& blockMap) {
BuildResult result = LayoutBuilder::buildContainer(blockMap);
// 为变压器创建额外的层级项
for (int layerIndex = 0; layerIndex < TOTAL_LAYERS; ++layerIndex) {
auto blocks = blockMap.value(layerIndex);
for (auto &block : blocks) {
if (block && block->getType() == TRANSFORMER_TYPE) {
processTransformerBlock(block, result.bayItems, result.deviceItems);
}
}
}
return result;
}
QGraphicsLinearLayout* TransformerBuilder::createTransformerRowLayout() {
auto layout = createRowLayout();
layout->insertStretch(0);
layout->addStretch();
return layout;
}
HierarchyItem TransformerBuilder::buildTransformerHierarchyItem(BlockDataPtr blockData) {
if (!blockData) return {};
return HierarchyItemBuilder::instance()
.buildDeviceWithParent(blockData, blockData, TRANSFORMER_DEVICE_TYPE);
}
void TransformerBuilder::processTransformerBlock(BlockDataPtr block,
QList<HierarchyItem>& bayItems,
QList<HierarchyItem>& deviceItems) {
if (!block) return;
// 变压器需要bayItem吗根据原始代码变压器会创建bayItem
auto bayItem = HierarchyItemBuilder::instance().buildBayItem(block);
bayItems.append(bayItem);
// 创建变压器的deviceItem
auto deviceItem = buildTransformerHierarchyItem(block);
deviceItems.append(deviceItem);
}