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

JobModel: upd r/w

parent e8804e02
No related branches found
No related tags found
1 merge request!1197GUI: serialization refactoring part 5
...@@ -134,39 +134,44 @@ QVector<DataItem*> JobModel::dataItems() const ...@@ -134,39 +134,44 @@ QVector<DataItem*> JobModel::dataItems() const
return result; return result;
} }
void JobModel::writeTo(QXmlStreamWriter* writer) void JobModel::writeTo(QXmlStreamWriter* w)
{ {
ASSERT(writer); XML::writeAttribute(w, XML::Attrib::version, uint(1));
// jobs // jobs
for (const auto* job : m_jobItems) { for (const auto* job : m_jobItems) {
writer->writeStartElement(Tag::Job); w->writeStartElement(Tag::Job);
writer->writeAttribute(XML::Attrib::name, job->jobName()); XML::writeAttribute(w, XML::Attrib::name, job->jobName());
job->writeTo(writer); job->writeTo(w);
writer->writeEndElement(); w->writeEndElement();
} }
} }
void JobModel::readFrom(QXmlStreamReader* reader, MessageService* messageService /*= 0*/) void JobModel::readFrom(QXmlStreamReader* r, MessageService* messageService /*= 0*/)
{ {
Q_UNUSED(messageService); Q_UNUSED(messageService);
ASSERT(reader);
clear(); clear();
while (reader->readNextStartElement()) {
// jobs const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
if (reader->name() == Tag::Job) { Q_UNUSED(version)
createJobItem()->readFrom(reader);
XML::gotoEndElementOfTag(reader, Tag::Job); while (r->readNextStartElement()) {
QString tag = r->name().toString();
// job
if (tag == Tag::Job) {
createJobItem()->readFrom(r);
XML::gotoEndElementOfTag(r, tag);
} else } else
reader->skipCurrentElement(); r->skipCurrentElement();
} }
if (reader->hasError()) if (r->hasError())
throw Error(reader->errorString()); throw Error(r->errorString());
// Set & check instrument links. JobItem and realItem have to reference the same instrument // Set & check instrument links. JobItem and realItem have to reference the same instrument
// (which is the one contained in this job item, not contained in the instrument model) // (which is the one contained in this job item, not contained in the instrument model)
// TODO mv to JobItem::readFrom
for (auto* jobItem : jobItems()) { for (auto* jobItem : jobItems()) {
if (RealItem* refItem = jobItem->realItem()) if (RealItem* refItem = jobItem->realItem())
refItem->linkToInstrument(jobItem->instrumentItem()); refItem->linkToInstrument(jobItem->instrumentItem());
......
...@@ -47,8 +47,8 @@ public: ...@@ -47,8 +47,8 @@ public:
void clear() override; void clear() override;
QVector<DataItem*> dataItems() const; QVector<DataItem*> dataItems() const;
void writeTo(QXmlStreamWriter* writer) override; void writeTo(QXmlStreamWriter* w) override;
void readFrom(QXmlStreamReader* reader, MessageService* messageService = nullptr) override; void readFrom(QXmlStreamReader* r, MessageService* messageService = nullptr) override;
void runJob(JobItem* jobItem); void runJob(JobItem* jobItem);
void cancelJob(JobItem* jobItem); void cancelJob(JobItem* jobItem);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment