From d73256f1196f6487693d5aac814f1aa829f4e8d3 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Tue, 5 Apr 2016 20:53:49 +0300 Subject: [PATCH] The method CreateGroup. --HG-- branch : feature --- src/app/valentina/mainwindow.cpp | 5 +-- src/app/valentina/xml/vpattern.cpp | 4 +-- src/libs/ifc/xml/vabstractpattern.cpp | 52 +++++++++++++++++++++++++-- src/libs/ifc/xml/vabstractpattern.h | 6 ++++ src/libs/ifc/xml/vdomdocument.cpp | 6 ++-- src/libs/vmisc/def.cpp | 2 ++ src/libs/vmisc/def.h | 2 ++ 7 files changed, 66 insertions(+), 11 deletions(-) diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index b37aab18c..fad3d9e82 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -1012,10 +1012,7 @@ void MainWindow::ClosedDialogGroup(int result) DialogGroup *dialog = qobject_cast(dialogTool); SCASSERT(dialog != nullptr); - const QString name = dialog->GetName(); - const QMap group = dialog->GetGroup(); - const quint32 id = pattern->getNextId(); - doc->AddGroup(id, name, group); + doc->AddGroup(pattern->getNextId(), dialog->GetName(), dialog->GetGroup()); } ArrowTool(); } diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index 33d8c6182..6816d7e4e 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -2882,7 +2882,7 @@ bool VPattern::IsDefCustom() const const QDomElement domElement = domNode.toElement(); if (domElement.isNull() == false) { - return GetParametrBool(domElement, AttrCustom, QStringLiteral("false")); + return GetParametrBool(domElement, AttrCustom, falseStr); } else { @@ -3051,7 +3051,7 @@ bool VPattern::IsReadOnly() const return false; } - return GetParametrBool(pattern, AttrReadOnly, QStringLiteral("false")); + return GetParametrBool(pattern, AttrReadOnly, falseStr); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/ifc/xml/vabstractpattern.cpp b/src/libs/ifc/xml/vabstractpattern.cpp index 2709dbe32..f7f50a77e 100644 --- a/src/libs/ifc/xml/vabstractpattern.cpp +++ b/src/libs/ifc/xml/vabstractpattern.cpp @@ -43,6 +43,8 @@ const QString VAbstractPattern::TagMeasurements = QStringLiteral("measurements") const QString VAbstractPattern::TagIncrements = QStringLiteral("increments"); const QString VAbstractPattern::TagIncrement = QStringLiteral("increment"); const QString VAbstractPattern::TagDraw = QStringLiteral("draw"); +const QString VAbstractPattern::TagGroups = QStringLiteral("groups"); +const QString VAbstractPattern::TagItem = QStringLiteral("item"); const QString VAbstractPattern::TagPoint = QStringLiteral("point"); const QString VAbstractPattern::TagLine = QStringLiteral("line"); const QString VAbstractPattern::TagSpline = QStringLiteral("spline"); @@ -54,6 +56,9 @@ const QString VAbstractPattern::TagSizes = QStringLiteral("sizes"); const QString VAbstractPattern::TagUnit = QStringLiteral("unit"); const QString VAbstractPattern::AttrName = QStringLiteral("name"); +const QString VAbstractPattern::AttrVisible = QStringLiteral("visible"); +const QString VAbstractPattern::AttrObject = QStringLiteral("object"); +const QString VAbstractPattern::AttrTool = QStringLiteral("tool"); const QString VAbstractPattern::AttrType = QStringLiteral("type"); const QString VAbstractPattern::AttrAll = QStringLiteral("all"); @@ -593,7 +598,7 @@ QMap VAbstractPattern::GetGradationHeights() const const QDomElement domElement = domNode.toElement(); if (domElement.isNull() == false) { - const QString defValue = QStringLiteral("true"); + const QString defValue = trueStr; switch (gTags.indexOf(domElement.tagName())) { case 0: // TagHeights @@ -759,7 +764,7 @@ QMap VAbstractPattern::GetGradationSizes() const const QDomElement domElement = domNode.toElement(); if (domElement.isNull() == false) { - const QString defValue = QStringLiteral("true"); + const QString defValue = trueStr; switch (gTags.indexOf(domElement.tagName())) { case 0: // TagHeights @@ -1356,8 +1361,51 @@ QDomElement VAbstractPattern::GetDraw(const QString &name) const return QDomElement(); } +//--------------------------------------------------------------------------------------------------------------------- +QDomElement VAbstractPattern::CreateGroups() +{ + QDomElement draw; + if (GetActivDrawElement(draw)) + { + QDomElement groups = draw.firstChildElement(TagGroups); + + if (groups.isNull()) + { + groups = createElement(TagGroups); + draw.appendChild(groups); + } + + return groups; + } + return QDomElement(); +} + //--------------------------------------------------------------------------------------------------------------------- void VAbstractPattern::AddGroup(quint32 id, const QString &name, const QMap &group) { + if (id == NULL_ID || group.isEmpty()) + { + return; + } + QDomElement groups = CreateGroups(); + + if (groups.isNull()) + { + return; + } + + groups.setAttribute(AttrId, id); + groups.setAttribute(AttrName, name); + groups.setAttribute(AttrVisible, trueStr); + + auto i = group.constBegin(); + while (i != group.constEnd()) + { + QDomElement item = createElement(TagItem); + item.setAttribute(AttrObject, i.key()); + item.setAttribute(AttrTool, i.value()); + groups.appendChild(item); + ++i; + } } diff --git a/src/libs/ifc/xml/vabstractpattern.h b/src/libs/ifc/xml/vabstractpattern.h index e7ba57630..15321da9e 100644 --- a/src/libs/ifc/xml/vabstractpattern.h +++ b/src/libs/ifc/xml/vabstractpattern.h @@ -114,6 +114,7 @@ public: QDomElement GetDraw(const QString &name) const; + QDomElement CreateGroups(); void AddGroup(quint32 id, const QString &name, const QMap &group); static const QString TagPattern; @@ -127,6 +128,8 @@ public: static const QString TagIncrements; static const QString TagIncrement; static const QString TagDraw; + static const QString TagGroups; + static const QString TagItem; static const QString TagPoint; static const QString TagLine; static const QString TagSpline; @@ -138,6 +141,9 @@ public: static const QString TagUnit; static const QString AttrName; + static const QString AttrVisible; + static const QString AttrObject; + static const QString AttrTool; static const QString AttrType; static const QString AttrAll; diff --git a/src/libs/ifc/xml/vdomdocument.cpp b/src/libs/ifc/xml/vdomdocument.cpp index 59215996b..f0d6bae55 100644 --- a/src/libs/ifc/xml/vdomdocument.cpp +++ b/src/libs/ifc/xml/vdomdocument.cpp @@ -255,7 +255,7 @@ bool VDomDocument::GetParametrBool(const QDomElement &domElement, const QString //--------------------------------------------------------------------------------------------------------------------- NodeUsage VDomDocument::GetParametrUsage(const QDomElement &domElement, const QString &name) const { - const bool value = GetParametrBool(domElement, name, QStringLiteral("true")); + const bool value = GetParametrBool(domElement, name, trueStr); if (value) { return NodeUsage::InUse; @@ -271,11 +271,11 @@ void VDomDocument::SetParametrUsage(QDomElement &domElement, const QString &name { if (value == NodeUsage::InUse) { - domElement.setAttribute(name, QStringLiteral("true")); + domElement.setAttribute(name, trueStr); } else { - domElement.setAttribute(name, QStringLiteral("false")); + domElement.setAttribute(name, falseStr); } } diff --git a/src/libs/vmisc/def.cpp b/src/libs/vmisc/def.cpp index 3995185dd..e94baca4f 100644 --- a/src/libs/vmisc/def.cpp +++ b/src/libs/vmisc/def.cpp @@ -408,6 +408,8 @@ const QString cursorArrowCloseHand = QStringLiteral("://cursor/cursor-arrow-clos // From documantation: If you use QStringLiteral you should avoid declaring the same literal in multiple places: This // furthermore blows up the binary sizes. const QString degreeSymbol = QStringLiteral("°"); +const QString trueStr = QStringLiteral("true"); +const QString falseStr = QStringLiteral("false"); //--------------------------------------------------------------------------------------------------------------------- void SetOverrideCursor(const QString &pixmapPath, int hotX, int hotY) diff --git a/src/libs/vmisc/def.h b/src/libs/vmisc/def.h index 5083bbb38..521492ba6 100644 --- a/src/libs/vmisc/def.h +++ b/src/libs/vmisc/def.h @@ -584,6 +584,8 @@ extern const QString cursorArrowOpenHand; extern const QString cursorArrowCloseHand; extern const QString degreeSymbol; +extern const QString trueStr; +extern const QString falseStr; void SetOverrideCursor(const QString & pixmapPath, int hotX = -1, int hotY = -1); void RestoreOverrideCursor(const QString & pixmapPath);