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

ApplicationModels: upd r/w

parent ad465d96
No related branches found
No related tags found
1 merge request!1197GUI: serialization refactoring part 5
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "GUI/Model/Model/ApplicationModels.h" #include "GUI/Model/Model/ApplicationModels.h"
#include "GUI/Support/Data/SimulationOptionsItem.h" #include "GUI/Support/Data/SimulationOptionsItem.h"
#include "GUI/Support/XML/UtilXML.h"
#include "GUI/Util/DeserializationException.h" #include "GUI/Util/DeserializationException.h"
#include <QXmlStreamWriter> #include <QXmlStreamWriter>
...@@ -30,7 +31,7 @@ const QString RealModel("RealModel"); ...@@ -30,7 +31,7 @@ const QString RealModel("RealModel");
ApplicationModels::ApplicationModels() ApplicationModels::ApplicationModels()
{ {
//! creates and initializes models, order is important // creates and initializes models, order is important
m_realDataModel = std::make_unique<RealModel>(this); m_realDataModel = std::make_unique<RealModel>(this);
m_jobModel = std::make_unique<JobModel>(this); m_jobModel = std::make_unique<JobModel>(this);
...@@ -48,30 +49,40 @@ JobModel* ApplicationModels::jobModel() const ...@@ -48,30 +49,40 @@ JobModel* ApplicationModels::jobModel() const
return m_jobModel.get(); return m_jobModel.get();
} }
//! Writes all model in file one by one void ApplicationModels::writeTo(QXmlStreamWriter* w)
void ApplicationModels::writeTo(QXmlStreamWriter* writer)
{ {
writer->writeStartElement(Tag::RealModel); // real model
m_realDataModel->writeTo(writer); w->writeStartElement(Tag::RealModel);
writer->writeEndElement(); m_realDataModel->writeTo(w);
w->writeEndElement();
writer->writeStartElement(Tag::JobModel);
m_jobModel->writeTo(writer); // job model
writer->writeEndElement(); w->writeStartElement(Tag::JobModel);
m_jobModel->writeTo(w);
w->writeEndElement();
} }
void ApplicationModels::readFrom(QXmlStreamReader* reader, MessageService* messageService) void ApplicationModels::readFrom(QXmlStreamReader* r, MessageService* messageService)
{ {
try { try {
if (reader->name() == Tag::RealModel) QString tag = r->name().toString();
m_realDataModel->readFrom(reader, messageService);
else if (reader->name() == Tag::JobModel) // real model
m_jobModel->readFrom(reader, messageService); if (tag == Tag::RealModel) {
m_realDataModel->readFrom(r, messageService);
XML::gotoEndElementOfTag(r, tag);
// job model
} else if (tag == Tag::JobModel) {
m_jobModel->readFrom(r, messageService);
XML::gotoEndElementOfTag(r, tag);
} else
r->skipCurrentElement();
} catch (DeserializationException& ex) { } catch (DeserializationException& ex) {
m_realDataModel->clear(); m_realDataModel->clear();
m_jobModel->clear(); m_jobModel->clear();
reader->raiseError(ex.text()); r->raiseError(ex.text());
} }
} }
......
...@@ -33,8 +33,8 @@ public: ...@@ -33,8 +33,8 @@ public:
RealModel* realModel() const; RealModel* realModel() const;
JobModel* jobModel() const; JobModel* jobModel() const;
void writeTo(class QXmlStreamWriter* writer); void writeTo(QXmlStreamWriter* w);
void readFrom(class QXmlStreamReader* reader, MessageService* messageService); void readFrom(QXmlStreamReader* r, MessageService* messageService);
//! Returns all data items //! Returns all data items
QVector<DataItem*> dataItems() const; QVector<DataItem*> dataItems() const;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment