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