DiagramDesigner/diagramCavas/source/graphicsItem/electricSvgItemBus.cpp

116 lines
2.8 KiB
C++

#include "graphicsItem/electricSvgItemBus.h"
#include "graphicsItem/itemControlHandle.h"
#include "graphicsItem/itemPort.h"
#include "graphicsDataModel/fixedPortsModel.h"
#include "baseProperty.h"
#include <QSvgRenderer>
#include <QPainter>
#include <QStyleOption>
#include <QJsonArray>
ElectricSvgItemBus::ElectricSvgItemBus(const QRect &rect, QGraphicsItem *parent)
: ElectricSvgItem(rect,parent)
{
initial();
}
ElectricSvgItemBus::ElectricSvgItemBus(const ElectricSvgItemBus& obj)
: ElectricSvgItem(obj)
{
initial();
}
ElectricSvgItemBus::~ElectricSvgItemBus()
{
}
ElectricSvgItemBus* ElectricSvgItemBus::clone() const
{
return new ElectricSvgItemBus(*this);
}
void ElectricSvgItemBus::setImage_1(QFileInfo info)
{
QByteArray svgData;
QFile svgFile(info.absoluteFilePath());
if (svgFile.open(QIODevice::ReadOnly)) {
svgData = svgFile.readAll();
svgFile.close();
} else {
qDebug() << "can't open imgfile" << svgFile.errorString();
}
QMap<QString,QByteArray> mapData;
if(!svgData.isEmpty()){
mapData["bus"] = svgData;
updateMapSvg(mapData,"bus");
loadSvg(svgData);
updateItem();
}
QString sMeta;
QString sModel;
if(_property){
sMeta = _property->metaModelName();
sModel = _property->modelName();
}
if(_pHandle && !sMeta.isEmpty() && !sModel.isEmpty())
_pHandle->updateItemIcon(sMeta,sModel,mapData,"bus");
GraphicsBaseItem::setImage_1(info);
}
void ElectricSvgItemBus::updateHandles()
{
ElectricSvgItem::updateHandles();
}
void ElectricSvgItemBus::updateConnectData()
{
QJsonObject obj;
QJsonArray arr;
if(_property)
{
for(auto &ptr:m_mapPort)
{
//if(ptr->connected())
{
QJsonObject port;
port["portId"] = ptr->getId();
//auto pLine = ptr->getConnectPtr();
port["x"] = ptr->pos().x();
port["y"] = ptr->pos().y();
port["portType"] = ptr->getType();
arr.push_back(port);
}
}
obj["port"] = arr;
obj["metaModel"] = _property->metaModelName();
obj["subList"] = _property->saveSubToJsonArr();
obj["extraInfo"] = _property->getVoltageLevel();
_property->setContext(obj);
}
}
void ElectricSvgItemBus::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
{
ElectricSvgItem::paint(painter,option,widget);
}
void ElectricSvgItemBus::initial()
{
setHandleIfShow(H_textCaption,false);
setHandleVisible(false);
setFunctionHandleIfShow(false);
setFunctionHandleEnaable(false);
setHandleEnaable(H_right,true);
setHandleEnaable(H_left,true);
if(!_itemImgIndex.contains("bus"))
_itemImgIndex.append("bus");
}