51 lines
1.7 KiB
C++
51 lines
1.7 KiB
C++
// 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);
|
||
}
|