//Copyright (C) 2006 Dominic Letourneau (Dominic.Letourneau@USherbrooke.ca) 

#ifndef _QTLINK_H
#define _QTLINK_H

#include <QPen>
#include <QGraphicsItem>
#include <string>


namespace FD 
{
    
    class QtNode;
    class QtTerminal;
    class UILinkController;
    
    class QtLink : public QGraphicsItem
    {
        
        public:
        QtLink(QtTerminal *source, QtTerminal *dest, UILinkController* uiLink);
        ~QtLink();
        
        QtTerminal *sourceQtTerminal() const {return m_source;}
        void setSourceQtTerminal(QtTerminal *source) {m_source = source; adjust();}
        
        QtTerminal *destQtTerminal() const {return m_dest;}
        void setDestQtTerminal(QtTerminal* dest) {m_dest = dest; adjust();}
        
        void adjust();
        
        UILinkController* getUILink() {return m_uiLink;}
        
        enum { Type = UserType + 2 };
        int type() const { return Type; }
        
        protected:
        QRectF boundingRect() const;
        void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
        QVariant itemChange(GraphicsItemChange change, const QVariant &value);
        
        private:
        
        QPointF m_sourcePoint;
        QPointF m_destPoint;      
        QtTerminal *m_source;
        QtTerminal *m_dest;
        UILinkController *m_uiLink;
        qreal arrowSize;
        
        qreal m_penWidth;
    };
    
}//namespace FD

#endif


syntax highlighted by Code2HTML, v. 0.9.1