Skip to content
Snippets Groups Projects
Commit 72b7fdb3 authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

DataItems: serialization refactored

parent f0803027
No related branches found
No related tags found
1 merge request!1181GUI: DataItems serialization refactoring
Pipeline #82621 passed
......@@ -19,7 +19,6 @@
#include "GUI/Util/Error.h"
namespace {
namespace Tag {
const QString FileName("FileName");
......@@ -28,13 +27,6 @@ const QString XAxis("XAxis");
const QString YAxis("YAxis");
} // namespace Tag
namespace Attrib {
const QString value("value");
} // namespace Attrib
} // namespace
const QString x_axis_default_name = "X [nbins]";
......@@ -267,11 +259,13 @@ void DataItem::setAxesRangeToData()
setUpperY(yMax());
}
void DataItem::writeBaseData(QXmlStreamWriter *writer) const
void DataItem::writeBaseData(QXmlStreamWriter* writer) const
{
// In case of changes here update "version" of SpecularDataItem and IntensityDataitem!
// file name
writer->writeStartElement(Tag::FileName);
XML::writeAttribute(writer, Attrib::value, m_fileName);
XML::writeAttribute(writer, XML::Attrib::value, m_fileName);
writer->writeEndElement();
// axes units
......@@ -290,28 +284,33 @@ void DataItem::writeBaseData(QXmlStreamWriter *writer) const
writer->writeEndElement();
}
void DataItem::readBaseData(QXmlStreamReader* reader)
void DataItem::readBaseData(QXmlStreamReader* reader, uint version)
{
Q_UNUSED(version)
QString name = reader->name().toString();
// file name
if (reader->name() == Tag::FileName) {
XML::readAttribute(reader, Attrib::value, &m_fileName);
XML::gotoEndElementOfTag(reader, Tag::FileName);
if (name == Tag::FileName) {
XML::readAttribute(reader, XML::Attrib::value, &m_fileName);
XML::gotoEndElementOfTag(reader, name);
// axes units
} else if (reader->name() == Tag::AxesUnits) {
} else if (name == Tag::AxesUnits) {
m_axesUnits.readFrom(reader);
XML::gotoEndElementOfTag(reader, Tag::AxesUnits);
XML::gotoEndElementOfTag(reader, name);
// x axis
} else if (reader->name() == Tag::XAxis) {
} else if (name == Tag::XAxis) {
m_xAxis->readFrom(reader);
XML::gotoEndElementOfTag(reader, Tag::XAxis);
XML::gotoEndElementOfTag(reader, name);
// y axis
} else if (reader->name() == Tag::YAxis) {
} else if (name == Tag::YAxis) {
m_yAxis->readFrom(reader);
XML::gotoEndElementOfTag(reader, Tag::YAxis);
XML::gotoEndElementOfTag(reader, name);
} else
reader->skipCurrentElement();
XML::gotoEndElementOfTag(reader, name);
}
......@@ -126,7 +126,7 @@ protected:
virtual void writeTo(QXmlStreamWriter* writer) const = 0;
virtual void readFrom(QXmlStreamReader* reader) = 0;
void writeBaseData(QXmlStreamWriter* writer) const;
void readBaseData(QXmlStreamReader* reader);
void readBaseData(QXmlStreamReader* reader, uint version);
signals:
void datafieldChanged();
......
......@@ -338,7 +338,6 @@ void IntensityDataItem::writeTo(QXmlStreamWriter* writer) const
void IntensityDataItem::readFrom(QXmlStreamReader* reader)
{
uint version = XML::readUIntAttribute(reader, XML::Attrib::version);
Q_UNUSED(version)
while (reader->readNextStartElement()) {
QString name = reader->name().toString();
......@@ -359,7 +358,7 @@ void IntensityDataItem::readFrom(QXmlStreamReader* reader)
XML::gotoEndElementOfTag(reader, name);
} else
DataItem::readBaseData(reader);
DataItem::readBaseData(reader, version);
}
}
......
......@@ -21,7 +21,6 @@
#include "GUI/Util/Error.h"
namespace {
namespace Tag {
const QString LineType("LineType");
......@@ -32,12 +31,6 @@ const QString ScatterSize("ScatterSize");
} // namespace Tag
namespace Attrib {
const QString value("value");
} // namespace Attrib
// scatters for representation of 1D graphs
const QMap<QString, QCPScatterStyle::ScatterShape> scatter_map = {
{"None", QCPScatterStyle::ScatterShape::ssNone},
......@@ -215,69 +208,73 @@ void SpecularDataItem::setRealPlotStyle()
void SpecularDataItem::writeTo(QXmlStreamWriter* writer) const
{
XML::writeAttribute(writer, XML::Attrib::version, uint(1));
DataItem::writeBaseData(writer);
// line type
writer->writeStartElement(Tag::LineType);
XML::writeAttribute(writer, Attrib::value, m_lineType);
XML::writeAttribute(writer, XML::Attrib::value, m_lineType);
writer->writeEndElement();
// color
writer->writeStartElement(Tag::Color);
XML::writeAttribute(writer, Attrib::value, m_color.name(QColor::HexArgb));
XML::writeAttribute(writer, XML::Attrib::value, m_color.name(QColor::HexArgb));
writer->writeEndElement();
// thickness
writer->writeStartElement(Tag::Thickness);
XML::writeAttribute(writer, Attrib::value, m_thickness);
XML::writeAttribute(writer, XML::Attrib::value, m_thickness);
writer->writeEndElement();
// scatter type
writer->writeStartElement(Tag::ScatterType);
XML::writeAttribute(writer, Attrib::value, m_scatterType);
XML::writeAttribute(writer, XML::Attrib::value, m_scatterType);
writer->writeEndElement();
// scatter size
writer->writeStartElement(Tag::ScatterSize);
XML::writeAttribute(writer, Attrib::value, m_scatterSize);
XML::writeAttribute(writer, XML::Attrib::value, m_scatterSize);
writer->writeEndElement();
}
void SpecularDataItem::readFrom(QXmlStreamReader* reader)
{
uint version = XML::readUIntAttribute(reader, XML::Attrib::version);
while (reader->readNextStartElement()) {
QString name = reader->name().toString();
// line type
if (reader->name() == Tag::LineType) {
XML::readAttribute(reader, Attrib::value, &m_lineType);
XML::gotoEndElementOfTag(reader, Tag::LineType);
if (name == Tag::LineType) {
XML::readAttribute(reader, XML::Attrib::value, &m_lineType);
XML::gotoEndElementOfTag(reader, name);
// color
} else if (reader->name() == Tag::Color) {
} else if (name == Tag::Color) {
QString col;
XML::readAttribute(reader, Attrib::value, &col);
XML::readAttribute(reader, XML::Attrib::value, &col);
m_color = QColor(col);
XML::gotoEndElementOfTag(reader, Tag::Color);
XML::gotoEndElementOfTag(reader, name);
// thickness
} else if (reader->name() == Tag::Thickness) {
XML::readAttribute(reader, Attrib::value, &m_thickness);
XML::gotoEndElementOfTag(reader, Tag::Thickness);
} else if (name == Tag::Thickness) {
XML::readAttribute(reader, XML::Attrib::value, &m_thickness);
XML::gotoEndElementOfTag(reader, name);
// scatter type
} else if (reader->name() == Tag::ScatterType) {
XML::readAttribute(reader, Attrib::value, &m_scatterType);
XML::gotoEndElementOfTag(reader, Tag::ScatterType);
} else if (name == Tag::ScatterType) {
XML::readAttribute(reader, XML::Attrib::value, &m_scatterType);
XML::gotoEndElementOfTag(reader, name);
// scatter size
} else if (reader->name() == Tag::ScatterSize) {
XML::readAttribute(reader, Attrib::value, &m_scatterSize);
XML::gotoEndElementOfTag(reader, Tag::ScatterSize);
} else if (name == Tag::ScatterSize) {
XML::readAttribute(reader, XML::Attrib::value, &m_scatterSize);
XML::gotoEndElementOfTag(reader, name);
// types from base class
} else {
DataItem::readBaseData(reader);
}
} else
DataItem::readBaseData(reader, version);
}
}
......
......@@ -126,16 +126,6 @@ void XML::writeAttribute(QXmlStreamWriter* writer, const QString& attributeName,
writer->writeAttribute(attributeName, QString::number(d));
}
void XML::writeUid(QXmlStreamWriter* writer, const QString& id)
{
writer->writeAttribute(Tags::Id, id);
}
void XML::writeUid(QXmlStreamWriter* writer, const QUuid& id)
{
writer->writeAttribute(Tags::Id, id.toString());
}
void XML::writeVariant(QXmlStreamWriter* writer, QVariant variant, int role)
{
ASSERT(writer);
......@@ -144,7 +134,7 @@ void XML::writeVariant(QXmlStreamWriter* writer, QVariant variant, int role)
writer->writeAttribute(Tags::ParameterTypeAttribute, variant.typeName());
writer->writeAttribute(Tags::ParameterRoleAttribute, QString::number(role));
writeAttribute(writer, Tags::ParameterValueAttribute, variant);
writer->writeEndElement(); // end ParameterTag
writer->writeEndElement();
}
}
......
......@@ -20,22 +20,15 @@
#include <heinz/Complex.h>
#include <heinz/Vectors3D.h>
class QXmlStreamReader;
class MessageService;
class QUuid;
namespace XML {
namespace Attrib {
const QString value("value");
const QString version("version");
const QString value("value");
} // namespace Attrib
namespace Tags {
constexpr auto Id("id");
constexpr auto TagAttribute("Tag");
constexpr auto ModelTypeAttribute("ModelType");
constexpr auto DisplayNameAttribute("DisplayName");
......@@ -63,8 +56,6 @@ void writeVariant(QXmlStreamWriter* writer, QVariant variant, int role);
void writeAttribute(QXmlStreamWriter* writer, const QString& attributeName,
const QVariant& variant);
void writeUid(QXmlStreamWriter* writer, const QString& id);
void writeUid(QXmlStreamWriter* writer, const QUuid& id);
void writeAttribute(QXmlStreamWriter* writer, const QString& attributeName, int d);
void writeAttribute(QXmlStreamWriter* writer, const QString& attributeName, bool b);
void writeAttribute(QXmlStreamWriter* writer, const QString& attributeName, unsigned d);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment