Merged in BojanKverh/valentina-issue24/feature (pull request #134)

Fixed issue #24. New feature: Label on detail.

--HG--
branch : develop
This commit is contained in:
Roman Telezhynskyi 2016-08-07 18:08:39 +03:00
commit da91ed974a
4 changed files with 68 additions and 1 deletions

View File

@ -59,6 +59,7 @@ VTextGraphicsItem::VTextGraphicsItem(QGraphicsItem* pParent)
m_rectBoundingBox.setTopLeft(QPointF(0, 0));
SetSize(MIN_W, m_iMinH);
setZValue(TOP_Z);
setAcceptHoverEvents(true);
}
//---------------------------------------------------------------------------------------------------------------------
@ -164,6 +165,16 @@ void VTextGraphicsItem::Reset()
setZValue(TOP_Z);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief VTextGraphicsItem::IsIdle checks if the item is in normal mode.
* @return true, if item is in normal mode and false otherwise.
*/
bool VTextGraphicsItem::IsIdle() const
{
return m_eMode == mNormal;
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief VTextGraphicsItem::AddLine adds a line of text to the label list. If necessary, it also resizes the
@ -355,6 +366,10 @@ void VTextGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *pME)
SetOverrideCursor(cursorArrowCloseHand, 1, 1);
}
}
else
{
SetOverrideCursor(cursorArrowCloseHand, 1, 1);
}
// raise the label and redraw it
setZValue(TOP_Z + 1);
UpdateBox();
@ -436,7 +451,7 @@ void VTextGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent* pME)
if (pME->button() == Qt::LeftButton)
{
// restore the cursor
if (m_eMode == mMove)
if (m_eMode == mMove || m_eMode == mRotate)
{
RestoreOverrideCursor(cursorArrowCloseHand);
}
@ -488,6 +503,37 @@ void VTextGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent* pME)
}
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief VTextGraphicsItem::hoverMoveEvent checks if cursor has to be changed
* @param pHE pointer to the scene hover event
*/
void VTextGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent* pHE)
{
if (m_eMode == mMove || m_eMode == mResize)
{
if (m_rectResize.contains(pHE->pos()) == true)
{
SetOverrideCursor(Qt::SizeFDiagCursor);
}
else
{
RestoreOverrideCursor(Qt::SizeFDiagCursor);
}
}
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief VTextGraphicsItem::hoverLeaveEvent tries to restore normal mouse cursor
* @param pHE not used
*/
void VTextGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent* pHE)
{
Q_UNUSED(pHE);
RestoreOverrideCursor(Qt::SizeFDiagCursor);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief VTextGraphicsItem::UpdateBox redraws the label content

View File

@ -59,6 +59,7 @@ public:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
void Reset();
bool IsIdle() const;
int GetFontSize() const;
QRectF boundingRect() const;
@ -75,6 +76,8 @@ protected:
void mousePressEvent(QGraphicsSceneMouseEvent* pME);
void mouseMoveEvent(QGraphicsSceneMouseEvent* pME);
void mouseReleaseEvent(QGraphicsSceneMouseEvent* pME);
void hoverMoveEvent(QGraphicsSceneHoverEvent* pHE);
void hoverLeaveEvent(QGraphicsSceneHoverEvent* pHE);
void UpdateBox();
void UpdateFont();

View File

@ -331,6 +331,22 @@ void VToolDetail::FullUpdateFromGuiOk(int result)
dialog = nullptr;
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief VToolDetail::paint draws a bounding box around detail, if one of its text items is not idle.
*/
void VToolDetail::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
if (dataLabel->IsIdle() == false || patternInfo->IsIdle() == false)
{
painter->save();
painter->setPen(QPen(Qt::black, 3, Qt::DashLine));
painter->drawRect(boundingRect().adjusted(1, 1, -1, -1));
painter->restore();
}
VNoBrushScalePathItem::paint(painter, option, widget);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief AddToFile add tag with informations about tool into file.

View File

@ -96,6 +96,8 @@ public slots:
virtual void ResetChildren(QGraphicsItem* pItem);
virtual void UpdateAll();
protected:
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget) Q_DECL_OVERRIDE;
virtual void AddToFile () Q_DECL_OVERRIDE;
virtual void RefreshDataInFile() Q_DECL_OVERRIDE;
virtual QVariant itemChange ( GraphicsItemChange change, const QVariant &value ) Q_DECL_OVERRIDE;