From 53c4785a6afdb47b5f3ca7d37081cd1de00e8530 Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de>
Date: Wed, 9 Nov 2022 12:23:05 +0100
Subject: [PATCH] FitParameterContainerItem: rm rwVectorClass

---
 GUI/Model/Job/FitParameterContainerItem.cpp | 31 +++++++++++----------
 GUI/Model/Job/FitParameterContainerItem.h   |  2 +-
 GUI/Model/Model/JobModel.cpp                |  2 +-
 3 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/GUI/Model/Job/FitParameterContainerItem.cpp b/GUI/Model/Job/FitParameterContainerItem.cpp
index 4db4a667185..4451ba66a8e 100644
--- a/GUI/Model/Job/FitParameterContainerItem.cpp
+++ b/GUI/Model/Job/FitParameterContainerItem.cpp
@@ -26,11 +26,15 @@ namespace {
 
 namespace Tag {
 
-const QString FitParameters("FitParameters");
 const QString FitParameter("FitParameter");
 
 } // namespace Tag
 
+namespace Attrib {
+
+const QString name("name");
+
+}
 } // namespace
 
 FitParameterContainerItem::FitParameterContainerItem(QObject* parent)
@@ -51,9 +55,7 @@ void FitParameterContainerItem::createFitParameter(ParameterItem* parameterItem)
     if (!oldFitPar)
         removeLink(parameterItem);
 
-    FitParameterItem* fitPar = new FitParameterItem(this);
-    m_fitParameterItems.emplace_back(fitPar);
-    updateFitParameterNames();
+    auto* fitPar = createBareFitParameter();
 
     fitPar->setStartValue(parameterItem->valueOfLink());
     fitPar->initMinMaxValues(parameterItem->limitsOfLink());
@@ -134,7 +136,6 @@ void FitParameterContainerItem::removeLink(const ParameterItem* parameterItem)
         fitParItem->removeLink(parameterItem->link());
 }
 
-// for tests
 FitParameterItem* FitParameterContainerItem::createBareFitParameter()
 {
     FitParameterItem* fitPar = new FitParameterItem(this);
@@ -192,21 +193,23 @@ mumufit::Parameters FitParameterContainerItem::createParameters() const
 
 void FitParameterContainerItem::writeTo(QXmlStreamWriter* writer) const
 {
-    // fit parameters
-    writer->writeStartElement(Tag::FitParameters);
-    GUI::Session::XML::writeVectorClass(writer, Tag::FitParameter, m_fitParameterItems);
-    writer->writeEndElement();
+    // fit parameters   
+    for (const auto* fitPar : fitParameterItems()) {
+        writer->writeStartElement(Tag::FitParameter);
+        writer->writeAttribute(Attrib::name, fitPar->displayName());
+        fitPar->writeTo(writer);
+        writer->writeEndElement();
+    }
 }
 
 void FitParameterContainerItem::readFrom(QXmlStreamReader* reader)
-{
+{    
     while (reader->readNextStartElement()) {
 
         // fit parameters
-        if (reader->name() == Tag::FitParameters) {
-            GUI::Session::XML::readVectorClass(reader, Tag::FitParameter, m_fitParameterItems,
-                                               this);
-            GUI::Session::XML::gotoEndElementOfTag(reader, Tag::FitParameters);
+        if (reader->name() == Tag::FitParameter) {
+            createBareFitParameter()->readFrom(reader);
+            GUI::Session::XML::gotoEndElementOfTag(reader, Tag::FitParameter);
 
         } else
             reader->skipCurrentElement();
diff --git a/GUI/Model/Job/FitParameterContainerItem.h b/GUI/Model/Job/FitParameterContainerItem.h
index 29c1d3c5075..d9c4d6624fd 100644
--- a/GUI/Model/Job/FitParameterContainerItem.h
+++ b/GUI/Model/Job/FitParameterContainerItem.h
@@ -60,7 +60,7 @@ public:
 
     void removeLink(const ParameterItem* parameterItem);
 
-    FitParameterItem* createBareFitParameter(); // for tests
+    FitParameterItem* createBareFitParameter();
 
     bool isEmpty();
     void setValuesInParameterContainer(const std::vector<double>& values,
diff --git a/GUI/Model/Model/JobModel.cpp b/GUI/Model/Model/JobModel.cpp
index 1386101c8f2..b4cda912ee2 100644
--- a/GUI/Model/Model/JobModel.cpp
+++ b/GUI/Model/Model/JobModel.cpp
@@ -145,7 +145,7 @@ void JobModel::writeTo(QXmlStreamWriter* writer)
     ASSERT(writer);
 
     // jobs
-    for (auto* job : jobItems()) {
+    for (const auto* job : jobItems()) {
         writer->writeStartElement(Tag::Job);
         writer->writeAttribute(Attrib::name, job->jobName());
         job->writeTo(writer);
-- 
GitLab