00001 #ifndef NODEITEM_H 00002 #define NODEITEM_H 00003 00004 #include <QGraphicsSvgItem> 00005 #include <QStateMachine> 00006 #include <QState> 00007 #include <QPropertyAnimation> 00008 #include <QSvgRenderer> 00009 #include <QGraphicsTextItem> 00010 #include <QGraphicsPixmapItem> 00011 #include <QGraphicsColorizeEffect> 00012 #include <QMap> 00013 #include <QList> 00014 #include <QHash> 00015 #include <QListIterator> 00016 #include <QByteArray> 00017 #include <QString> 00018 #include <QFont> 00019 #include <QPixmap> 00020 #include <QGraphicsItem> 00021 #include <QEvent> 00022 #include "node.h" 00023 00024 00025 class NodeItem : public QGraphicsSvgItem 00026 { 00027 Q_OBJECT 00028 qreal _originalWidth; 00029 qreal _width; 00030 public: 00031 NodeItem( Node* n ); 00032 enum { Type = 65578 }; 00033 Node* node() const 00034 { 00035 return _node; 00036 } 00037 static QMap<QString, QSvgRenderer*> _renders; 00038 QHash<QString, QGraphicsSvgItem*> connectors(); 00039 int type() const 00040 { 00041 return Type; 00042 } 00043 public slots: 00044 void setupNode(); 00045 private slots: 00046 void updateRenderer(); 00047 void updateIcon(); 00048 void updateName(); 00049 void updateValue(); 00050 void updateColor(); 00051 void updatePos(); 00052 void updateSize(); 00053 void updateConnectors(); 00054 void updateImage(); 00055 private: 00056 Node* _node; 00057 QString _iconPackage; 00058 QString _element; 00059 QGraphicsSimpleTextItem* _name; 00060 QGraphicsSimpleTextItem* _value; 00061 QGraphicsPixmapItem* _image; 00062 QHash<QString, QGraphicsSvgItem*> _connectors; 00063 QGraphicsColorizeEffect* _colorizer; 00064 QFont _font; 00065 int ldown; 00066 int rdown; 00067 int previousCount; 00068 }; 00069 00070 #include "node.h" 00071 00072 #endif