First working result.

Doesn't change file.

--HG--
branch : feature
This commit is contained in:
Roman Telezhynskyi 2017-09-17 09:19:13 +03:00
parent f2d1b4b916
commit fa74e32769
8 changed files with 73 additions and 12 deletions

View file

@ -245,21 +245,16 @@ void VContainer::UpdateId(quint32 newId)
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief UpdateObject update object in container
* @param obj container
* @param id id of existing object
* @param point object
*/
template <typename val>
void VContainer::UpdateObject(QHash<quint32, val> &obj, const quint32 &id, val point)
void VContainer::UpdateObject(const quint32 &id, val point)
{
Q_ASSERT_X(id != NULL_ID, Q_FUNC_INFO, "id == 0"); //-V654 //-V712
SCASSERT(point.isNull() == false)
point->setId(id);
if (d->gObjects.contains(id))
{
d->gObjects[id].clear();
}
obj[id] = point;
d->gObjects.insert(id, point);
UpdateId(id);
}
@ -505,7 +500,14 @@ void VContainer::UpdateGObject(quint32 id, VGObject* obj)
{
SCASSERT(obj != nullptr)
QSharedPointer<VGObject> pointer(obj);
UpdateObject(d->gObjects, id, pointer);
UpdateGObject(id, pointer);
}
//---------------------------------------------------------------------------------------------------------------------
void VContainer::UpdateGObject(quint32 id, const QSharedPointer<VGObject> &obj)
{
SCASSERT(not obj.isNull())
UpdateObject(id, obj);
uniqueNames.insert(obj->name());
}

View file

@ -160,6 +160,7 @@ public:
void RemovePiece(quint32 id);
void UpdateGObject(quint32 id, VGObject* obj);
void UpdateGObject(quint32 id, const QSharedPointer<VGObject> &obj);
void UpdatePiece(quint32 id, const VPiece &detail);
void UpdatePiecePath(quint32 id, const VPiecePath &path);
@ -220,7 +221,7 @@ private:
const val GetObject(const QHash<key, val> &obj, key id) const;
template <typename val>
void UpdateObject(QHash<quint32, val > &obj, const quint32 &id, val point);
void UpdateObject(const quint32 &id, val point);
template <typename key, typename val>
static quint32 AddObject(QHash<key, val> &obj, val value);

View file

@ -114,6 +114,31 @@ void VToolSinglePoint::GroupVisibility(quint32 object, bool visible)
setVisible(visible);
}
//---------------------------------------------------------------------------------------------------------------------
bool VToolSinglePoint::IsLabelVisible(quint32 id) const
{
if (this->id == id)
{
const QSharedPointer<VPointF> point = VAbstractTool::data.GeometricObject<VPointF>(id);
return point->IsShowLabel();
}
else
{
return false;
}
}
//---------------------------------------------------------------------------------------------------------------------
void VToolSinglePoint::SetLabelVisible(quint32 id, bool visible)
{
if (this->id == id)
{
const QSharedPointer<VPointF> point = VAbstractTool::data.GeometricObject<VPointF>(id);
point->SetShowLabel(visible);
RefreshPointGeometry(*point);
}
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief NameChangePosition handle change posion point label.

View file

@ -63,6 +63,9 @@ public:
void SetEnabled(bool enabled);
virtual void GroupVisibility(quint32 object, bool visible) Q_DECL_OVERRIDE;
virtual bool IsLabelVisible(quint32 id) const Q_DECL_OVERRIDE;
virtual void SetLabelVisible(quint32 id, bool visible) Q_DECL_OVERRIDE;
public slots:
void NameChangePosition(const QPointF &pos);
virtual void Disable(bool disable, const QString &namePP) Q_DECL_OVERRIDE;

View file

@ -210,6 +210,13 @@ void VDrawTool::DetailsMode(bool mode)
// Do nothing.
}
//---------------------------------------------------------------------------------------------------------------------
void VDrawTool::ChangeLabelVisibility(quint32 id, bool visible)
{
Q_UNUSED(id)
Q_UNUSED(visible)
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief AddToCalculation add tool to calculation tag in pattern file.
@ -236,3 +243,17 @@ void VDrawTool::SetTypeLine(const QString &value)
QSharedPointer<VGObject> obj = VAbstractTool::data.GetGObject(id);
SaveOption(obj);
}
//---------------------------------------------------------------------------------------------------------------------
bool VDrawTool::IsLabelVisible(quint32 id) const
{
Q_UNUSED(id)
return false;
}
//---------------------------------------------------------------------------------------------------------------------
void VDrawTool::SetLabelVisible(quint32 id, bool visible)
{
Q_UNUSED(id)
Q_UNUSED(visible)
}

View file

@ -67,6 +67,9 @@ public:
QString getLineType() const;
virtual void SetTypeLine(const QString &value);
virtual bool IsLabelVisible(quint32 id) const;
virtual void SetLabelVisible(quint32 id, bool visible);
signals:
void ChangedToolSelection(bool selected, quint32 object, quint32 tool);
@ -79,6 +82,7 @@ public slots:
virtual void DetailsMode(bool mode);
protected slots:
virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID)=0;
virtual void ChangeLabelVisibility(quint32 id, bool visible);
protected:
enum class RemoveOption : bool {Disable = false, Enable = true};
@ -209,7 +213,7 @@ void VDrawTool::ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemI
}
else if (selectedAction == actionShowLabel)
{
// do something here to show/hide a label
SetLabelVisible(itemId, selectedAction->isChecked());
}
}

View file

@ -44,6 +44,7 @@ VScenePoint::VScenePoint(QGraphicsItem *parent)
m_lineName(nullptr),
m_onlyPoint(false),
m_isHovered(false),
m_showLabel(true),
m_baseColor(Qt::black)
{
m_namePoint = new VGraphicsSimpleTextItem(this);
@ -74,7 +75,7 @@ void VScenePoint::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio
if (not m_onlyPoint)
{
m_namePoint->setVisible(true);
m_namePoint->setVisible(m_showLabel);
QPen lPen = m_lineName->pen();
lPen.setColor(CorrectColor(m_lineName, Qt::black));
@ -94,9 +95,12 @@ void VScenePoint::RefreshPointGeometry(const VPointF &point)
setPos(static_cast<QPointF>(point));
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
m_showLabel = point.IsShowLabel();
m_namePoint->blockSignals(true);
m_namePoint->setText(point.name());
m_namePoint->setPos(QPointF(point.mx(), point.my()));
m_namePoint->setVisible(m_showLabel);
m_namePoint->blockSignals(false);
RefreshLine();
@ -151,7 +155,7 @@ void VScenePoint::RefreshLine()
else
{
m_lineName->setLine(QLineF(p1, pRec - scenePos()));
m_lineName->setVisible(true);
m_lineName->setVisible(m_showLabel);
}
}
else

View file

@ -55,6 +55,7 @@ protected:
bool m_onlyPoint;
bool m_isHovered;
bool m_showLabel;
/** @brief m_baseColor base color of point. */
QColor m_baseColor;