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);
|
|||
|
|
}
|