From de096fef23700d530d49f807a9ebe4bf8ca1bf4a Mon Sep 17 00:00:00 2001 From: blacksun Date: Wed, 7 Jan 2015 19:35:42 +0000 Subject: [PATCH] Move element display help line git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3592 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- sources/qetgraphicsitem/element.cpp | 32 ++++++++++- sources/qetgraphicsitem/element.h | 87 +++++++++++++++-------------- 2 files changed, 74 insertions(+), 45 deletions(-) diff --git a/sources/qetgraphicsitem/element.cpp b/sources/qetgraphicsitem/element.cpp index aeac1b025..7498be891 100644 --- a/sources/qetgraphicsitem/element.cpp +++ b/sources/qetgraphicsitem/element.cpp @@ -494,9 +494,18 @@ QDomElement Element::toXml(QDomDocument &document, QHash &table return(element); } -// Initialise link for this element -void Element::initLink(QETProject *prj) { - // if nothing to link return now +/** + * @brief Element::initLink + * Initialise the link between this element and other elements. + * This method can be call once because init the link according to + * uuid store in a private list, after link, the list is clear, so + * call another time do nothing. + * + * @param prj, ownership project of this element and other element to be linked + */ +void Element::initLink(QETProject *prj) +{ + // if nothing to link return now if (tmp_uuids_link.isEmpty()) return; ElementProvider ep(prj); @@ -540,6 +549,23 @@ bool comparPos(const Element *elmt1, const Element *elmt2) { return elmt1->pos().x() <= elmt2->pos().x(); } +void Element::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + QetGraphicsItem::mouseMoveEvent(event); + foreach (Terminal *t, terminals()) + { + t -> drawHelpLine(true); + } +} + +void Element::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + QetGraphicsItem::mouseReleaseEvent(event); + foreach (Terminal *t, terminals()) + { + t -> drawHelpLine(false); + } +} /** * When mouse over element diff --git a/sources/qetgraphicsitem/element.h b/sources/qetgraphicsitem/element.h index 54b40ccb9..8803cb7d4 100644 --- a/sources/qetgraphicsitem/element.h +++ b/sources/qetgraphicsitem/element.h @@ -42,9 +42,18 @@ class Element : public QetGraphicsItem { // attributes public: + /** + * Enable the use of qgraphicsitem_cast to safely cast + * a QGraphicsItem into an Element. + * @return the QGraphicsItem type + */ enum { Type = UserType + 1000 }; - // this enum is use to know the kind of element and - // to use flag for element provider class + virtual int type() const { return Type; } + + /** + * @brief The kind enum + * Used to know the kind of this element (master, slave, report ect...) + */ enum kind {Simple = 1, NextReport = 2, PreviousReport = 4, @@ -54,44 +63,35 @@ class Element : public QetGraphicsItem { Terminale = 32}; private: - QSize dimensions; - QPoint hotspot_coord; - QPixmap preview; + QSize dimensions; + QPoint hotspot_coord; + QPixmap preview; - - // methods + // methods public: - /** - Enable the use of qgraphicsitem_cast to safely cast a QGraphicsItem into an - Element. - @return the QGraphicsItem type - */ - virtual int type() const { return Type; } - - // pure virtual methods to be defined in derived classes - /// @return the list of terminals for this element + /// @return the list of terminals for this element virtual QList terminals() const = 0; - /// @return the list of conductors attached to this element + /// @return the list of conductors attached to this element virtual QList conductors() const = 0; - /// @return the list of text items attached to this element + /// @return the list of text items attached to this element virtual QList texts() const = 0; - /// @return the text field tagged with @tagg or NULL if text field isn't found + /// @return the text field tagged with @tagg or NULL if text field isn't found virtual ElementTextItem* taggedText(const QString &tagg) const = 0; - /// @return the list of lines items in this element + /// @return the list of lines items in this element virtual QList lines() const = 0; - /// @return the list of rectangles items in this element + /// @return the list of rectangles items in this element virtual QList rectangles() const = 0; - /// @return the list of bounding rectangles for circles items in this element + /// @return the list of bounding rectangles for circles items in this element virtual QList circles() const = 0; - /// @return the list of polygons in this element + /// @return the list of polygons in this element virtual QList *> polygons() const = 0; - /// @return the list of arcs in this element + /// @return the list of arcs in this element virtual QList *> arcs() const = 0; - /// @return the current number of terminals of this element + /// @return the current number of terminals of this element virtual int terminalsCount() const = 0; - /// @return the minimum number of terminals for this element + /// @return the minimum number of terminals for this element virtual int minTerminalsCount() const = 0; - /// @return the maximum number of terminals for this element + /// @return the maximum number of terminals for this element virtual int maxTerminalsCount() const = 0; @@ -101,22 +101,22 @@ class Element : public QetGraphicsItem { *like the linked element or information about this element */ //METHODS related to linked element - public: - bool isFree () const; - virtual void linkToElement(Element *) {} - virtual void unlinkAllElements() {} - virtual void unlinkElement(Element *) {} - virtual void initLink(QETProject *); - QList linkedElements (); - virtual int linkType() const {return link_type_;} // @return the linkable type - void newUuid() {uuid_ = QUuid::createUuid();} //create new uuid for this element + public: + bool isFree () const; + virtual void linkToElement (Element *) {} + virtual void unlinkAllElements () {} + virtual void unlinkElement (Element *) {} + virtual void initLink (QETProject *); + QList linkedElements (); + virtual int linkType() const {return link_type_;} // @return the linkable type + void newUuid() {uuid_ = QUuid::createUuid();} //create new uuid for this element - //ATTRIBUTES related to linked element + //ATTRIBUTES related to linked element protected: QList connected_elements; - QList tmp_uuids_link; - QUuid uuid_; - kind link_type_; + QList tmp_uuids_link; + QUuid uuid_; + kind link_type_; signals: void elementInfoChange(DiagramContext old_info, DiagramContext new_info); @@ -182,8 +182,11 @@ class Element : public QetGraphicsItem { void updatePixmap(); protected: - virtual void hoverEnterEvent ( QGraphicsSceneHoverEvent * ); - virtual void hoverLeaveEvent ( QGraphicsSceneHoverEvent * ); + virtual void mouseMoveEvent ( QGraphicsSceneMouseEvent *event ); + virtual void mouseReleaseEvent ( QGraphicsSceneMouseEvent *event ); + virtual void hoverEnterEvent ( QGraphicsSceneHoverEvent * ); + virtual void hoverLeaveEvent ( QGraphicsSceneHoverEvent * ); + private: bool m_mouse_over;