From ece2c42e5fbd789cafc32b8da12c9ac39fe01678 Mon Sep 17 00:00:00 2001 From: Valentina Zhuravska Date: Fri, 11 Dec 2015 11:31:21 +0200 Subject: [PATCH] We need one method RefreshLine in VAbstractTool instead of two similar methods in VNodePoint and VToolSinglePoint --HG-- branch : feature --- .../toolsinglepoint/vtoolsinglepoint.cpp | 28 ++-------------- .../vtools/tools/nodeDetails/vnodepoint.cpp | 24 ++------------ src/libs/vtools/tools/vabstracttool.cpp | 33 +++++++++++++++++++ src/libs/vtools/tools/vabstracttool.h | 4 +++ 4 files changed, 42 insertions(+), 47 deletions(-) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp index e53a9700e..9ae9d08f8 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp @@ -247,32 +247,10 @@ void VToolSinglePoint::RefreshPointGeometry(const VPointF &point) void VToolSinglePoint::RefreshLine(quint32 id) { Q_UNUSED(id) + QPen pen(CorrectColor(Qt::black)); + pen.setWidthF(qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor); - QRectF nRec = namePoint->sceneBoundingRect(); - nRec.translate(- scenePos()); - if (this->rect().intersects(nRec) == false) - { - const QRectF nameRec = namePoint->sceneBoundingRect(); - QPointF p1, p2; - VGObject::LineIntersectCircle(QPointF(), radius, QLineF(QPointF(), nameRec.center() - scenePos()), p1, p2); - const QPointF pRec = VGObject::LineIntersectRect(nameRec, QLineF(scenePos(), nameRec.center())); - lineName->setLine(QLineF(p1, pRec - scenePos())); - lineName->setPen(QPen(CorrectColor(Qt::black), - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); - - if (QLineF(p1, pRec - scenePos()).length() <= ToPixel(4, Unit::Mm)) - { - lineName->setVisible(false); - } - else - { - lineName->setVisible(true); - } - } - else - { - lineName->setVisible(false); - } + VAbstractTool::RefreshLine(this, namePoint, lineName, radius, pen); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp index 9ae32e966..68428f1da 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp @@ -278,26 +278,6 @@ void VNodePoint::RefreshPointGeometry(const VPointF &point) * @brief RefreshLine refresh label line on scene. */ void VNodePoint::RefreshLine() -{ QRectF nRec = namePoint->sceneBoundingRect(); - nRec.translate(- scenePos()); - if (this->rect().intersects(nRec) == false) - { - QRectF nameRec = namePoint->sceneBoundingRect(); - QPointF p1, p2; - VGObject::LineIntersectCircle(QPointF(), radius, QLineF(QPointF(), nameRec.center()- scenePos()), p1, p2); - QPointF pRec = VGObject::LineIntersectRect(nameRec, QLineF(scenePos(), nameRec.center())); - lineName->setLine(QLineF(p1, pRec - scenePos())); - if (QLineF(p1, pRec - scenePos()).length() <= ToPixel(4, Unit::Mm)) - { - lineName->setVisible(false); - } - else - { - lineName->setVisible(true); - } - } - else - { - lineName->setVisible(false); - } +{ + VAbstractTool::RefreshLine(this, namePoint, lineName, radius, QPen(Qt::black)); } diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index f4883bcdb..27cc5fa0c 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -315,3 +315,36 @@ void VAbstractTool::AddRecord(const quint32 id, const Tool &toolType, VAbstractP history->insert(index+1, record); } } + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief RefreshLine refresh line to label on scene. + */ +void VAbstractTool::RefreshLine(QGraphicsEllipseItem *point, VGraphicsSimpleTextItem *namePoint, QGraphicsLineItem *lineName, + qreal radius, const QPen pen) +{ + QRectF nRec = namePoint->sceneBoundingRect(); + nRec.translate(- point->scenePos()); + if (point->rect().intersects(nRec) == false) + { + const QRectF nameRec = namePoint->sceneBoundingRect(); + QPointF p1, p2; + VGObject::LineIntersectCircle(QPointF(), radius, QLineF(QPointF(), nameRec.center() - point->scenePos()), p1, p2); + const QPointF pRec = VGObject::LineIntersectRect(nameRec, QLineF(point->scenePos(), nameRec.center())); + lineName->setLine(QLineF(p1, pRec - point->scenePos())); + lineName->setPen(pen); + + if (QLineF(p1, pRec - point->scenePos()).length() <= ToPixel(4, Unit::Mm)) + { + lineName->setVisible(false); + } + else + { + lineName->setVisible(true); + } + } + else + { + lineName->setVisible(false); + } +} diff --git a/src/libs/vtools/tools/vabstracttool.h b/src/libs/vtools/tools/vabstracttool.h index d157d6244..3aac8b09b 100644 --- a/src/libs/vtools/tools/vabstracttool.h +++ b/src/libs/vtools/tools/vabstracttool.h @@ -34,6 +34,7 @@ #include "../vmisc/vabstractapplication.h" #include "../vwidgets/vmaingraphicsscene.h" #include "visualization/visualization.h" +#include "../vwidgets/vgraphicssimpletextitem.h" class QDomElement; class QLineF; @@ -121,6 +122,9 @@ protected: virtual void SetVisualization()=0; void ToolCreation(const Source &typeCreation); + + static void RefreshLine(QGraphicsEllipseItem *point, VGraphicsSimpleTextItem *namePoint, QGraphicsLineItem *lineName, + qreal radius, const QPen pen); private: Q_DISABLE_COPY(VAbstractTool) };