44 #include <QGraphicsScene>
45 #include <QGraphicsSceneContextMenuEvent>
63 PluginItem::PluginItem(
IPlugin::SPtr pPlugin, QMenu *contextMenu, QGraphicsItem *parent)
64 : QGraphicsPolygonItem(parent)
68 , m_contextMenu(contextMenu)
71 m_qLinearGradientFace = QLinearGradient(m_iWidth/2, -10, m_iWidth/2, m_iHeight);
72 m_qLinearGradientFace.setColorAt(1, Qt::white);
73 m_qPolygon << QPointF(-m_iWidth/2, -m_iHeight/2) << QPointF(m_iWidth/2, -m_iHeight/2)
74 << QPointF(m_iWidth/2, m_iHeight/2) << QPointF(-m_iWidth/2, m_iHeight/2)
75 << QPointF(-m_iWidth/2, -m_iHeight/2);
76 switch (m_pPlugin->getType()) {
82 m_qColorContour = QColor(98, 152, 61);
83 m_qLinearGradientFace.setColorAt(0, QColor(235, 241, 233));
86 m_qColorContour = QColor(79, 136, 187);
87 m_qLinearGradientFace.setColorAt(0, QColor(234, 239, 247));
90 m_qColorContour = QColor(224, 169, 0);
91 m_qLinearGradientFace.setColorAt(0, QColor(255, 244, 231));
94 m_qColorContour = QColor(125, 125, 125);
95 m_qLinearGradientFace.setColorAt(0, QColor(125, 125, 125));
98 setBrush(m_qLinearGradientFace);
99 setPen(QPen(m_qColorContour,1));
100 setPolygon(m_qPolygon);
101 setFlag(QGraphicsItem::ItemIsMovable,
true);
102 setFlag(QGraphicsItem::ItemIsSelectable,
true);
103 setFlag(QGraphicsItem::ItemSendsGeometryChanges,
true);
109 PluginItem::~PluginItem()
117 void PluginItem::paint(QPainter * painter,
const QStyleOptionGraphicsItem * option, QWidget * widget)
119 QGraphicsPolygonItem::paint(painter, option, widget);
122 painter->setPen(QPen(m_qColorContour, 1));
139 painter->drawText(-m_iWidth/2+4,-m_iHeight/2+14,m_pPlugin->getName().mid(0,8));
141 painter->drawText(-m_iWidth/2+4,-m_iHeight/2+28,m_pPlugin->getName().mid(8,8));
148 void PluginItem::removeArrow(
Arrow *arrow)
150 int index = arrows.indexOf(arrow);
153 arrows.removeAt(index);
159 void PluginItem::removeArrows()
161 foreach (
Arrow *arrow, arrows) {
162 arrow->startItem()->removeArrow(arrow);
163 arrow->endItem()->removeArrow(arrow);
164 scene()->removeItem(arrow);
172 void PluginItem::addArrow(
Arrow *arrow)
174 arrows.append(arrow);
180 QPixmap PluginItem::image()
const
182 QPixmap pixmap(m_iWidth, m_iHeight);
183 pixmap.fill(Qt::transparent);
184 QPainter painter(&pixmap);
185 painter.setPen(QPen(m_qColorContour, 2));
186 painter.translate(m_iWidth/2, m_iHeight/2);
188 painter.drawPolyline(m_qPolygon);
190 painter.drawText(-m_iWidth/2+4,-m_iHeight/2+14,m_pPlugin->getName().mid(0,10));
198 void PluginItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
200 scene()->clearSelection();
202 m_contextMenu->exec(event->screenPos());
208 QVariant PluginItem::itemChange(GraphicsItemChange change,
const QVariant &value)
210 if (change == QGraphicsItem::ItemPositionChange) {
211 foreach (
Arrow *arrow, arrows) {
212 arrow->updatePosition();
QSharedPointer< IPlugin > SPtr
PluginItem class declaration.