Read/Write pattern label.

--HG--
branch : feature
This commit is contained in:
Roman Telezhynskyi 2017-08-15 10:44:00 +03:00
parent b9bd1b60e4
commit 8466e84eef
8 changed files with 113 additions and 78 deletions

View file

@ -602,9 +602,9 @@ void DialogPatternProperties::SaveTemplateData()
{ {
if (templateDataChanged) if (templateDataChanged)
{ {
//doc->SetTemplate(templateLines); doc->SetPatternLabelTemplate(templateLines);
templateDataChanged = false; templateDataChanged = false;
//emit doc->patternChanged(false); emit doc->patternChanged(false);
} }
} }
@ -884,14 +884,7 @@ void DialogPatternProperties::EditLabel()
DialogEditLabel editor(doc); DialogEditLabel editor(doc);
// if (templateDataChanged) templateDataChanged ? editor.SetTemplate(templateLines) : editor.SetTemplate(doc->GetPatternLabelTemplate());
// {
// editor.SetTemplate(templateLines);
// }
// else
// {
// editor.SetTemplate(doc->GetTemplate());
// }
if (QDialog::Accepted == editor.exec()) if (QDialog::Accepted == editor.exec())
{ {

View file

@ -213,4 +213,17 @@ extern const QString currentSeamAllowance;
extern const QStringList builInVariables; extern const QStringList builInVariables;
QT_WARNING_PUSH
QT_WARNING_DISABLE_GCC("-Weffc++")
struct VLabelTemplateLine
{
QString line;
bool bold;
bool italic;
int alignment;
};
QT_WARNING_POP
#endif // IFCDEF_H #endif // IFCDEF_H

View file

@ -87,6 +87,7 @@ const QString VAbstractPattern::TagPatternName = QStringLiteral("patternNam
const QString VAbstractPattern::TagPatternNum = QStringLiteral("patternNumber"); const QString VAbstractPattern::TagPatternNum = QStringLiteral("patternNumber");
const QString VAbstractPattern::TagCustomerName = QStringLiteral("customer"); const QString VAbstractPattern::TagCustomerName = QStringLiteral("customer");
const QString VAbstractPattern::TagCompanyName = QStringLiteral("company"); const QString VAbstractPattern::TagCompanyName = QStringLiteral("company");
const QString VAbstractPattern::TagPatternLabel = QStringLiteral("patternLabel");
const QString VAbstractPattern::TagSize = QStringLiteral("size"); const QString VAbstractPattern::TagSize = QStringLiteral("size");
const QString VAbstractPattern::TagShowDate = QStringLiteral("showDate"); const QString VAbstractPattern::TagShowDate = QStringLiteral("showDate");
const QString VAbstractPattern::TagShowMeasurements = QStringLiteral("showMeasurements"); const QString VAbstractPattern::TagShowMeasurements = QStringLiteral("showMeasurements");
@ -1374,6 +1375,25 @@ void VAbstractPattern::SetMesurementsVisible(bool bVisible)
emit patternChanged(false); emit patternChanged(false);
} }
//---------------------------------------------------------------------------------------------------------------------
void VAbstractPattern::SetPatternLabelTemplate(const QVector<VLabelTemplateLine> &lines)
{
QDomElement tag = CheckTagExists(TagPatternLabel);
RemoveAllChildren(tag);
SetLabelTemplate(tag, lines);
}
//---------------------------------------------------------------------------------------------------------------------
QVector<VLabelTemplateLine> VAbstractPattern::GetPatternLabelTemplate() const
{
const QDomNodeList list = elementsByTagName(TagPatternLabel);
if (list.isEmpty())
{
return QVector<VLabelTemplateLine>();
}
return GetLabelTemplate(list.at(0).toElement());
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString VAbstractPattern::GetImage() const QString VAbstractPattern::GetImage() const
{ {
@ -1516,7 +1536,8 @@ QDomElement VAbstractPattern::CheckTagExists(const QString &tag)
{ {
const QStringList tags = QStringList() << TagUnit << TagImage << TagAuthor << TagDescription << TagNotes const QStringList tags = QStringList() << TagUnit << TagImage << TagAuthor << TagDescription << TagNotes
<< TagGradation << TagPatternName << TagPatternNum << TagCompanyName << TagGradation << TagPatternName << TagPatternNum << TagCompanyName
<< TagCustomerName << TagSize << TagShowDate << TagShowMeasurements; << TagCustomerName << TagPatternLabel << TagSize << TagShowDate
<< TagShowMeasurements;
switch (tags.indexOf(tag)) switch (tags.indexOf(tag))
{ {
case 1: //TagImage case 1: //TagImage
@ -1556,13 +1577,16 @@ QDomElement VAbstractPattern::CheckTagExists(const QString &tag)
case 9: // TagCustomerName case 9: // TagCustomerName
element = createElement(TagCustomerName); element = createElement(TagCustomerName);
break; break;
case 10: // TagSize case 10: // TagPatternLabel
element = createElement(TagPatternLabel);
break;
case 11: // TagSize
element = createElement(TagSize); element = createElement(TagSize);
break; break;
case 11: // TagShowDate case 12: // TagShowDate
element = createElement(TagShowDate); element = createElement(TagShowDate);
break; break;
case 12: // TagShowMeasurements case 13: // TagShowMeasurements
element = createElement(TagShowMeasurements); element = createElement(TagShowMeasurements);
break; break;
case 0: //TagUnit (Mandatory tag) case 0: //TagUnit (Mandatory tag)

View file

@ -154,6 +154,9 @@ public:
bool IsMeasurementsVisible() const; bool IsMeasurementsVisible() const;
void SetMesurementsVisible(bool bVisible); void SetMesurementsVisible(bool bVisible);
void SetPatternLabelTemplate(const QVector<VLabelTemplateLine> &lines);
QVector<VLabelTemplateLine> GetPatternLabelTemplate() const;
QString GetImage() const; QString GetImage() const;
QString GetImageExtension() const; QString GetImageExtension() const;
void SetImage(const QString &text, const QString &extension); void SetImage(const QString &text, const QString &extension);
@ -209,6 +212,7 @@ public:
static const QString TagPatternNum; static const QString TagPatternNum;
static const QString TagCompanyName; static const QString TagCompanyName;
static const QString TagCustomerName; static const QString TagCustomerName;
static const QString TagPatternLabel;
static const QString TagSize; static const QString TagSize;
static const QString TagShowDate; static const QString TagShowDate;
static const QString TagShowMeasurements; static const QString TagShowMeasurements;

View file

@ -178,9 +178,15 @@ void MessageHandler::handleMessage(QtMsgType type, const QString &description, c
Q_LOGGING_CATEGORY(vXML, "v.xml") Q_LOGGING_CATEGORY(vXML, "v.xml")
const QString VDomDocument::AttrId = QStringLiteral("id"); const QString VDomDocument::AttrId = QStringLiteral("id");
const QString VDomDocument::AttrText = QStringLiteral("text");
const QString VDomDocument::AttrBold = QStringLiteral("bold");
const QString VDomDocument::AttrItalic = QStringLiteral("italic");
const QString VDomDocument::AttrAlignment = QStringLiteral("alignment");
const QString VDomDocument::TagVersion = QStringLiteral("version"); const QString VDomDocument::TagVersion = QStringLiteral("version");
const QString VDomDocument::TagUnit = QStringLiteral("unit"); const QString VDomDocument::TagUnit = QStringLiteral("unit");
const QString VDomDocument::TagLine = QStringLiteral("line");
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VDomDocument::VDomDocument() VDomDocument::VDomDocument()
@ -899,3 +905,48 @@ bool VDomDocument::SafeCopy(const QString &source, const QString &destination, Q
return result; return result;
} }
//---------------------------------------------------------------------------------------------------------------------
QVector<VLabelTemplateLine> VDomDocument::GetLabelTemplate(const QDomElement &element) const
{
QVector<VLabelTemplateLine> lines;
if (not element.isNull())
{
QDomElement tagLine = element.firstChildElement();
while (tagLine.isNull() == false)
{
if (tagLine.tagName() == TagLine)
{
VLabelTemplateLine line;
line.line = GetParametrString(tagLine, AttrText, tr("<empty>"));
line.bold = GetParametrBool(tagLine, AttrBold, falseStr);
line.italic = GetParametrBool(tagLine, AttrItalic, falseStr);
line.alignment = GetParametrUInt(tagLine, AttrAlignment, "0");
lines.append(line);
}
tagLine = tagLine.nextSiblingElement(TagLine);
}
}
return lines;
}
//---------------------------------------------------------------------------------------------------------------------
void VDomDocument::SetLabelTemplate(QDomElement &element, const QVector<VLabelTemplateLine> &lines)
{
if (not element.isNull())
{
for (int i=0; i < lines.size(); ++i)
{
QDomElement tagLine = createElement(TagLine);
SetAttribute(tagLine, AttrText, lines.at(i).line);
SetAttribute(tagLine, AttrBold, lines.at(i).bold);
SetAttribute(tagLine, AttrItalic, lines.at(i).italic);
SetAttribute(tagLine, AttrAlignment, lines.at(i).alignment);
element.appendChild(tagLine);
}
}
}

View file

@ -83,8 +83,14 @@ class VDomDocument : public QDomDocument
Q_DECLARE_TR_FUNCTIONS(VDomDocument) Q_DECLARE_TR_FUNCTIONS(VDomDocument)
public: public:
static const QString AttrId; static const QString AttrId;
static const QString AttrText;
static const QString AttrBold;
static const QString AttrItalic;
static const QString AttrAlignment;
static const QString TagVersion; static const QString TagVersion;
static const QString TagUnit; static const QString TagUnit;
static const QString TagLine;
VDomDocument(); VDomDocument();
virtual ~VDomDocument() Q_DECL_EQ_DEFAULT; virtual ~VDomDocument() Q_DECL_EQ_DEFAULT;
@ -130,6 +136,9 @@ protected:
void TestUniqueId() const; void TestUniqueId() const;
void CollectId(const QDomElement &node, QVector<quint32> &vector)const; void CollectId(const QDomElement &node, QVector<quint32> &vector)const;
QVector<VLabelTemplateLine> GetLabelTemplate(const QDomElement &element) const;
void SetLabelTemplate(QDomElement &element, const QVector<VLabelTemplateLine> &lines);
private: private:
Q_DISABLE_COPY(VDomDocument) Q_DISABLE_COPY(VDomDocument)
/** @brief Map used for finding element by id. */ /** @brief Map used for finding element by id. */

View file

@ -31,12 +31,6 @@
const QString VLabelTemplate::TagTemplate = QStringLiteral("template"); const QString VLabelTemplate::TagTemplate = QStringLiteral("template");
const QString VLabelTemplate::TagLines = QStringLiteral("lines"); const QString VLabelTemplate::TagLines = QStringLiteral("lines");
const QString VLabelTemplate::TagLine = QStringLiteral("line");
const QString VLabelTemplate::AttrText = QStringLiteral("text");
const QString VLabelTemplate::AttrBold = QStringLiteral("bold");
const QString VLabelTemplate::AttrItalic = QStringLiteral("italic");
const QString VLabelTemplate::AttrAlignment = QStringLiteral("alignment");
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VLabelTemplate::VLabelTemplate() VLabelTemplate::VLabelTemplate()
@ -69,52 +63,18 @@ void VLabelTemplate::AddLines(const QVector<VLabelTemplateLine> &lines)
return; return;
} }
QDomElement tagLines = listLines.at(0).toElement(); QDomElement tag = listLines.at(0).toElement();
if (not tagLines.isNull()) VDomDocument::SetLabelTemplate(tag, lines);
{
for (int i=0; i < lines.size(); ++i)
{
QDomElement tagLine = createElement(TagLine);
SetAttribute(tagLine, AttrText, lines.at(i).line);
SetAttribute(tagLine, AttrBold, lines.at(i).bold);
SetAttribute(tagLine, AttrItalic, lines.at(i).italic);
SetAttribute(tagLine, AttrAlignment, lines.at(i).alignment);
tagLines.appendChild(tagLine);
}
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QVector<VLabelTemplateLine> VLabelTemplate::ReadLines() const QVector<VLabelTemplateLine> VLabelTemplate::ReadLines() const
{ {
QVector<VLabelTemplateLine> lines;
const QDomNodeList listLines = elementsByTagName(TagLines); const QDomNodeList listLines = elementsByTagName(TagLines);
if (listLines.size() == 0) if (listLines.size() == 0)
{ {
return lines; return QVector<VLabelTemplateLine>();
} }
QDomElement tagLines = listLines.at(0).toElement(); return VDomDocument::GetLabelTemplate(listLines.at(0).toElement());
if (not tagLines.isNull())
{
QDomElement tagLine = tagLines.firstChildElement();
while (tagLine.isNull() == false)
{
if (tagLine.tagName() == TagLine)
{
VLabelTemplateLine line;
line.line = GetParametrString(tagLine, AttrText, tr("<empty>"));
line.bold = GetParametrBool(tagLine, AttrBold, falseStr);
line.italic = GetParametrBool(tagLine, AttrItalic, falseStr);
line.alignment = GetParametrUInt(tagLine, AttrAlignment, "0");
lines.append(line);
}
tagLine = tagLine.nextSiblingElement(TagLine);
}
}
return lines;
} }

View file

@ -31,19 +31,6 @@
#include "../ifc/xml/vdomdocument.h" #include "../ifc/xml/vdomdocument.h"
QT_WARNING_PUSH
QT_WARNING_DISABLE_GCC("-Weffc++")
struct VLabelTemplateLine
{
QString line;
bool bold;
bool italic;
int alignment;
};
QT_WARNING_POP
class VLabelTemplate : public VDomDocument class VLabelTemplate : public VDomDocument
{ {
public: public:
@ -52,12 +39,6 @@ public:
static const QString TagTemplate; static const QString TagTemplate;
static const QString TagLines; static const QString TagLines;
static const QString TagLine;
static const QString AttrText;
static const QString AttrBold;
static const QString AttrItalic;
static const QString AttrAlignment;
void CreateEmptyTemplate(); void CreateEmptyTemplate();