insilmaril@795: #ifndef XLINKITEM_H insilmaril@795: #define XLINKITEM_H insilmaril@795: insilmaril@795: class BranchItem; insilmaril@795: class XLinkObj; insilmaril@795: class QGraphicsScene; insilmaril@795: insilmaril@795: #include "mapitem.h" insilmaril@795: insilmaril@795: /*! \brief xlinks are used to draw arbitrary connections between branches (BranchObj) in the map. */ insilmaril@795: insilmaril@795: ///////////////////////////////////////////////////////////////////////////// insilmaril@795: class XLinkItem:public MapItem { insilmaril@795: public: insilmaril@795: enum XLinkState {undefinedXLink,initXLink,activeXLink,deleteXLink}; insilmaril@795: insilmaril@795: XLinkItem (const QList &data, TreeItem *parent=NULL); insilmaril@795: virtual ~XLinkItem (); insilmaril@795: virtual void init (); insilmaril@795: void setBegin (BranchItem*); insilmaril@795: BranchItem* getBegin(); insilmaril@795: void setEnd (BranchItem*); insilmaril@795: void setEnd (QPointF); insilmaril@795: BranchItem* getEnd(); insilmaril@795: void setColor(QColor); insilmaril@795: QColor getColor(); insilmaril@795: void setWidth (int); insilmaril@795: int getWidth (); insilmaril@795: bool activate (); //! Creates a 2nd XLink (without a XLinkObj attached) insilmaril@795: bool isBegin(); //! true, if this is master xLink, which may have an XLinkObj attached insilmaril@795: void updateXLink(); insilmaril@795: virtual void updateVisibility(); // FIXME-3 not really needed atm... insilmaril@795: BranchItem* getPartnerBranch (); insilmaril@814: BranchItem* getOtherBranch (TreeItem *ti); insilmaril@795: XLinkItem *getPartnerXLink(); //! Partner XLink insilmaril@795: QString saveToDir (); insilmaril@795: virtual XLinkObj* createMapObj(QGraphicsScene *scene); insilmaril@795: insilmaril@795: private: insilmaril@795: XLinkState xLinkState; // init during drawing or active insilmaril@795: QColor color; insilmaril@795: int width; insilmaril@795: BranchItem *beginBranch; insilmaril@795: BranchItem *endBranch; insilmaril@795: XLinkItem *partnerXLink; insilmaril@795: bool isBeginXLink; insilmaril@795: }; insilmaril@795: insilmaril@795: #endif