diff --git a/sources/qetgraphicsitem/diagramtextitem.cpp b/sources/qetgraphicsitem/diagramtextitem.cpp index 19ccdac4f..19e13925f 100644 --- a/sources/qetgraphicsitem/diagramtextitem.cpp +++ b/sources/qetgraphicsitem/diagramtextitem.cpp @@ -22,63 +22,49 @@ #include "diagram.h" /** - Constructeur - @param parent Le QGraphicsItem parent du champ de texte - @param parent_diagram Le schema auquel appartient le champ de texte -*/ + * @brief DiagramTextItem::DiagramTextItem + * @param parent : parent item + */ DiagramTextItem::DiagramTextItem(QGraphicsItem *parent) : QGraphicsTextItem(parent), m_mouse_hover(false), previous_text_(), rotation_angle_(0.0), m_first_move (true) -{ - setAcceptHoverEvents(true); - build(); -} +{ build(); } /** - Constructeur - @param text Le texte affiche par le champ de texte - @param parent Le QGraphicsItem parent du champ de texte - @param parent_diagram Le schema auquel appartient le champ de texte -*/ + * @brief DiagramTextItem::DiagramTextItem + * @param text : text to display + * @param parent : parent item + */ DiagramTextItem::DiagramTextItem(const QString &text, QGraphicsItem *parent) : QGraphicsTextItem(text, parent), m_mouse_hover(false), previous_text_(text), rotation_angle_(0.0) -{ - build(); - setAcceptHoverEvents(true); -} - -/// Destructeur -DiagramTextItem::~DiagramTextItem() { -} +{ build(); } /** * @brief DiagramTextItem::build * Build this item with default value */ -void DiagramTextItem::build() { - //set Zvalue at 10 to be upper than the DiagramImageItem +void DiagramTextItem::build() +{ + //set Zvalue at 10 to be upper than the DiagramImageItem setZValue(10); + setAcceptHoverEvents(true); setDefaultTextColor(Qt::black); setFont(QETApp::diagramTextsFont()); - setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable); + setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemSendsGeometryChanges); setNoEditable(false); setToolTip(tr("Maintenir ctrl pour un déplacement libre")); -#if QT_VERSION >= 0x040600 - setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); -#endif - connect(this, SIGNAL(lostFocus()), this, SLOT(setNonFocusable())); } /** - @return le Diagram auquel ce texte appartient, ou 0 si ce texte n'est - rattache a aucun schema -*/ + * @brief DiagramTextItem::diagram + * @return The diagram of this item or 0 if this text isn't in a diagram + */ Diagram *DiagramTextItem::diagram() const { return(qobject_cast(scene())); } @@ -277,7 +263,7 @@ void DiagramTextItem::focusOutEvent(QFocusEvent *e) { // autorise de nouveau le deplacement du texte setFlag(QGraphicsItem::ItemIsMovable, true); - QTimer::singleShot(0, this, SIGNAL(lostFocus())); + setFlag(QGraphicsTextItem::ItemIsFocusable, false); } /** @@ -364,35 +350,19 @@ void DiagramTextItem::applyRotation(const qreal &angle) { setRotation(QET::correctAngle(rotation()+angle)); } -/// Rend le champ de texte non focusable -void DiagramTextItem::setNonFocusable() { - setFlag(QGraphicsTextItem::ItemIsFocusable, false); -} - - -/** - * @brief DiagramTextItem::setHtmlText - * @param txt - */ -void DiagramTextItem::setHtmlText(const QString &txt) { - setHtml( txt ); -} - /** * @brief Edit the text with HtmlEditor */ -void DiagramTextItem::edit() { - //Open the HtmlEditor +void DiagramTextItem::edit() +{ QWidget *parent = nullptr; if (scene() && scene()->views().size()) parent = scene()->views().first(); - qdesigner_internal::RichTextEditorDialog *editor = new qdesigner_internal::RichTextEditorDialog(parent); - // connect the in/out - connect(editor, SIGNAL(applyEditText(const QString &)), this, SLOT(setHtmlText(const QString &))); - // load the Html txt - editor->setText( toHtml() ); - // show - editor->show(); + + qdesigner_internal::RichTextEditorDialog editor(parent); + connect(&editor, &qdesigner_internal::RichTextEditorDialog::applyEditText, [this](QString text) {this->setHtml(text);}); + editor.setText(toHtml()); + editor.exec(); } diff --git a/sources/qetgraphicsitem/diagramtextitem.h b/sources/qetgraphicsitem/diagramtextitem.h index 739fa493d..243e0d0c9 100644 --- a/sources/qetgraphicsitem/diagramtextitem.h +++ b/sources/qetgraphicsitem/diagramtextitem.h @@ -29,77 +29,63 @@ class QDomDocument; diagram. @see QGraphicsItem::GraphicsItemFlags */ -class DiagramTextItem : public QGraphicsTextItem { +class DiagramTextItem : public QGraphicsTextItem +{ Q_OBJECT - // constructors, destructor + public: - DiagramTextItem(QGraphicsItem * = 0); - DiagramTextItem(const QString &, QGraphicsItem * = 0); - virtual ~DiagramTextItem(); + DiagramTextItem(QGraphicsItem * = 0); + DiagramTextItem(const QString &, QGraphicsItem * = 0); private: - void build(); + void build(); - // attributes public: - enum { Type = UserType + 1004 }; - - // methods - public: - /** - Enable the use of qgraphicsitem_cast to safely cast a QGraphicsItem into a - DiagramTextItem - @return the QGraphicsItem type - */ - virtual int type() const { return Type; } - Diagram *diagram() const; - virtual void fromXml(const QDomElement &) = 0; - virtual QDomElement toXml(QDomDocument &) const; - qreal rotationAngle() const; - void setRotationAngle(const qreal &); - void rotateBy(const qreal &); - void edit(); - QPointF mapMovementToScene(const QPointF &) const; - QPointF mapMovementFromScene(const QPointF &) const; - QPointF mapMovementToParent(const QPointF &) const; - QPointF mapMovementFromParent(const QPointF &) const; - void setFontSize(int &s); - void setNoEditable(bool e = true) {no_editable = e;} - + enum { Type = UserType + 1004 }; + virtual int type() const { return Type; } + + Diagram *diagram() const; + virtual void fromXml(const QDomElement &) = 0; + virtual QDomElement toXml(QDomDocument &) const; + qreal rotationAngle() const; + void setRotationAngle(const qreal &); + void rotateBy(const qreal &); + void edit(); + + QPointF mapMovementToScene (const QPointF &) const; + QPointF mapMovementFromScene (const QPointF &) const; + QPointF mapMovementToParent (const QPointF &) const; + QPointF mapMovementFromParent (const QPointF &) const; + + void setFontSize(int &s); + void setNoEditable(bool e = true) {no_editable = e;} + protected: - virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); - virtual void focusInEvent(QFocusEvent *); - virtual void focusOutEvent(QFocusEvent *); + virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); + virtual void focusInEvent(QFocusEvent *); + virtual void focusOutEvent(QFocusEvent *); - virtual void mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event); - virtual void mousePressEvent (QGraphicsSceneMouseEvent *event); - virtual void mouseMoveEvent (QGraphicsSceneMouseEvent *event); - virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *event); + virtual void mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event); + virtual void mousePressEvent (QGraphicsSceneMouseEvent *event); + virtual void mouseMoveEvent (QGraphicsSceneMouseEvent *event); + virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *event); - virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *); - virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *); - virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *); + virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *); + virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *); + virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *); + + virtual void applyRotation(const qreal &); - virtual void applyRotation(const qreal &); - - bool m_mouse_hover; signals: - /// signal emitted when the text field loses focus - void lostFocus(); - /// signal emitted after text was changed - void diagramTextChanged(DiagramTextItem *, const QString &, const QString &); - - public slots: - void setNonFocusable(); - void setHtmlText(const QString &); + /// signal emitted after text was changed + void diagramTextChanged(DiagramTextItem *, const QString &, const QString &); protected: - /// Previous text value - QString previous_text_; - /// angle of rotation of the text field - qreal rotation_angle_; - bool no_editable; - bool m_first_move; - QPointF m_mouse_to_origin_movement; + bool m_mouse_hover; + QString previous_text_; + qreal rotation_angle_; + bool no_editable; + bool m_first_move; + QPointF m_mouse_to_origin_movement; }; #endif