diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 16c4dcb00..eaa12321c 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -1129,9 +1129,6 @@ void MainWindow::ClosedDialogPiecePath(int result) { DialogPiecePath *dialog = qobject_cast(dialogTool); SCASSERT(dialog != nullptr); - - const PiecePathType type = dialog->GetType(); - const VPiecePath path = dialog->GetPiecePath(); //VToolDetail::Create(dialogTool, sceneDetails, doc, pattern); } ArrowTool(); diff --git a/src/libs/vpatterndb/vpiece.cpp b/src/libs/vpatterndb/vpiece.cpp index b876ff8c6..dd3560597 100644 --- a/src/libs/vpatterndb/vpiece.cpp +++ b/src/libs/vpatterndb/vpiece.cpp @@ -38,7 +38,7 @@ //--------------------------------------------------------------------------------------------------------------------- VPiece::VPiece() - : VAbstractPiece(), d(new VPieceData) + : VAbstractPiece(), d(new VPieceData(PiecePathType::PiecePath)) {} //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vpatterndb/vpiece_p.h b/src/libs/vpatterndb/vpiece_p.h index 0511d4ae5..3ec5cf61e 100644 --- a/src/libs/vpatterndb/vpiece_p.h +++ b/src/libs/vpatterndb/vpiece_p.h @@ -42,8 +42,8 @@ QT_WARNING_DISABLE_GCC("-Weffc++") class VPieceData : public QSharedData { public: - VPieceData() - : m_path(), + VPieceData(PiecePathType type) + : m_path(type), m_mx(0), m_my(0), m_inLayout(true), diff --git a/src/libs/vpatterndb/vpiecepath.cpp b/src/libs/vpatterndb/vpiecepath.cpp index d9445cff3..9fbf124a2 100644 --- a/src/libs/vpatterndb/vpiecepath.cpp +++ b/src/libs/vpatterndb/vpiecepath.cpp @@ -39,6 +39,11 @@ VPiecePath::VPiecePath() : d(new VPiecePathData) {} +//--------------------------------------------------------------------------------------------------------------------- +VPiecePath::VPiecePath(PiecePathType type) + : d(new VPiecePathData(type)) +{} + //--------------------------------------------------------------------------------------------------------------------- VPiecePath::VPiecePath(const VPiecePath &path) : d (path.d) @@ -101,6 +106,18 @@ void VPiecePath::SetNodes(const QVector &nodes) d->m_nodes = nodes; } +//--------------------------------------------------------------------------------------------------------------------- +PiecePathType VPiecePath::GetType() const +{ + return d->m_type; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VPiecePath::SetType(PiecePathType type) +{ + d->m_type = type; +} + //--------------------------------------------------------------------------------------------------------------------- QVector VPiecePath::PathPoints(const VContainer *data) const { diff --git a/src/libs/vpatterndb/vpiecepath.h b/src/libs/vpatterndb/vpiecepath.h index b85c34c6d..daa6893ca 100644 --- a/src/libs/vpatterndb/vpiecepath.h +++ b/src/libs/vpatterndb/vpiecepath.h @@ -32,6 +32,8 @@ #include #include +#include "../vmisc/def.h" + class VPiecePathData; class VPieceNode; class QPointF; @@ -43,6 +45,7 @@ class VPiecePath { public: VPiecePath(); + VPiecePath(PiecePathType type); VPiecePath(const VPiecePath &path); VPiecePath &operator=(const VPiecePath &path); ~VPiecePath(); @@ -57,6 +60,9 @@ public: QVector GetNodes() const; void SetNodes(const QVector &nodes); + PiecePathType GetType() const; + void SetType(PiecePathType type); + QVector PathPoints(const VContainer *data) const; QVector PathNodePoints(const VContainer *data) const; diff --git a/src/libs/vpatterndb/vpiecepath_p.h b/src/libs/vpatterndb/vpiecepath_p.h index de8efc3b7..ea3ca04b4 100644 --- a/src/libs/vpatterndb/vpiecepath_p.h +++ b/src/libs/vpatterndb/vpiecepath_p.h @@ -42,17 +42,25 @@ class VPiecePathData : public QSharedData { public: VPiecePathData() - : m_nodes() + : m_nodes(), + m_type(PiecePathType::Unknown) + {} + + VPiecePathData(PiecePathType type) + : m_nodes(), + m_type(type) {} VPiecePathData(const VPiecePathData &path) : QSharedData(path), - m_nodes(path.m_nodes) + m_nodes(path.m_nodes), + m_type(path.m_type) {} ~VPiecePathData(); QVector m_nodes; + PiecePathType m_type; private: VPiecePathData &operator=(const VPiecePathData &) Q_DECL_EQ_DELETE; diff --git a/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp b/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp index 89fd992b8..dd9c221ee 100644 --- a/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp @@ -261,6 +261,8 @@ void DialogPiecePath::SetPiecePath(const VPiecePath &path) NewItem(path.at(i)); } + SetType(path.GetType()); + ValidObjects(PathIsValid()); ListChanged(); @@ -345,6 +347,8 @@ VPiecePath DialogPiecePath::CreatePath() const path.Append(qvariant_cast(item->data(Qt::UserRole))); } + path.SetType(GetType()); + return path; } diff --git a/src/libs/vtools/dialogs/tools/dialogpiecepath.h b/src/libs/vtools/dialogs/tools/dialogpiecepath.h index 443e0d60f..6a9e3d6ef 100644 --- a/src/libs/vtools/dialogs/tools/dialogpiecepath.h +++ b/src/libs/vtools/dialogs/tools/dialogpiecepath.h @@ -48,9 +48,6 @@ public: VPiecePath GetPiecePath() const; void SetPiecePath(const VPiecePath &path); - PiecePathType GetType() const; - void SetType(PiecePathType type); - quint32 GetPieceId() const; void SetPieceId(quint32 id); @@ -83,6 +80,9 @@ private: bool PathIsValid() const; void ValidObjects(bool value); void NewItem(const VPieceNode &node); + + PiecePathType GetType() const; + void SetType(PiecePathType type); }; #endif // DIALOGPIECEPATH_H