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

PointwiseItem: upd r/w

parent ff8c5e92
No related branches found
No related tags found
1 merge request!1197GUI: serialization refactoring part 5
......@@ -22,20 +22,13 @@
#include "GUI/Support/XML/UtilXML.h"
namespace {
namespace Tag {
const QString NativeUnits("NativeUnits");
const QString BinaryData("BinaryData");
const QString BaseData("BaseData");
} // namespace Tag
namespace Attrib {
const QString value("value");
}
} // namespace
PointwiseAxisItem::PointwiseAxisItem(QObject* parent)
......@@ -106,44 +99,56 @@ void PointwiseAxisItem::deserializeBinaryData(const QByteArray& data)
m_axis = std::unique_ptr<IAxis>(d->axis(0).clone());
}
void PointwiseAxisItem::writeTo(QXmlStreamWriter* writer) const
void PointwiseAxisItem::writeTo(QXmlStreamWriter* w) const
{
BasicAxisItem::writeTo(writer);
XML::writeAttribute(w, XML::Attrib::version, uint(1));
// parameters from base class
w->writeStartElement(Tag::BaseData);
BasicAxisItem::writeTo(w);
w->writeEndElement();
// axis binary data
QByteArray a = serializeBinaryData();
if (!a.isEmpty()) {
writer->writeStartElement(Tag::BinaryData);
writer->writeCharacters(a.toBase64());
writer->writeEndElement();
w->writeStartElement(Tag::BinaryData);
w->writeCharacters(a.toBase64());
w->writeEndElement();
}
// native units
writer->writeStartElement(Tag::NativeUnits);
XML::writeAttribute(writer, Attrib::value, m_nativeAxisUnits);
writer->writeEndElement();
w->writeStartElement(Tag::NativeUnits);
XML::writeAttribute(w, XML::Attrib::value, m_nativeAxisUnits);
w->writeEndElement();
}
void PointwiseAxisItem::readFrom(QXmlStreamReader* reader)
void PointwiseAxisItem::readFrom(QXmlStreamReader* r)
{
while (reader->readNextStartElement()) {
const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
Q_UNUSED(version)
while (r->readNextStartElement()) {
QString tag = r->name().toString();
// axis binary data
if (reader->name() == Tag::BinaryData) {
QString valueAsBase64 = reader->readElementText(QXmlStreamReader::SkipChildElements);
// parameters from base class
if (tag == Tag::BaseData) {
BasicAxisItem::readFrom(r);
XML::gotoEndElementOfTag(r, tag);
// axis binary data
} else if (tag == Tag::BinaryData) {
QString valueAsBase64 = r->readElementText(QXmlStreamReader::SkipChildElements);
const auto data = QByteArray::fromBase64(valueAsBase64.toLatin1());
deserializeBinaryData(data);
XML::gotoEndElementOfTag(reader, Tag::BinaryData);
XML::gotoEndElementOfTag(r, tag);
// native units
} else if (reader->name() == Tag::NativeUnits) {
XML::readAttribute(reader, Attrib::value, &m_nativeAxisUnits);
XML::gotoEndElementOfTag(reader, Tag::NativeUnits);
// members from base class
} else {
BasicAxisItem::readBasicTags(reader);
}
} else if (tag == Tag::NativeUnits) {
XML::readAttribute(r, XML::Attrib::value, &m_nativeAxisUnits);
XML::gotoEndElementOfTag(r, tag);
} else
r->skipCurrentElement();
}
}
......
......@@ -42,8 +42,8 @@ public:
QByteArray serializeBinaryData() const;
void deserializeBinaryData(const QByteArray& data);
void writeTo(QXmlStreamWriter* writer) const override;
void readFrom(QXmlStreamReader* reader) override;
void writeTo(QXmlStreamWriter* w) const override;
void readFrom(QXmlStreamReader* r) override;
private:
bool checkValidity() const;
......
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