From 454612517bb472f0ad4d4db0fffb093732e7b622 Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de>
Date: Wed, 19 Oct 2022 17:14:28 +0200
Subject: [PATCH] before mv signals to container

---
 GUI/Model/Job/FitParameterContainerItem.cpp | 12 ++++-----
 GUI/Model/Job/FitParameterContainerItem.h   |  5 ++--
 GUI/Model/Model/FitParameterModel.cpp       | 28 +++------------------
 GUI/Model/Model/FitParameterModel.h         |  3 +--
 GUI/View/Fit/FitParameterWidget.cpp         | 10 ++++++++
 5 files changed, 23 insertions(+), 35 deletions(-)

diff --git a/GUI/Model/Job/FitParameterContainerItem.cpp b/GUI/Model/Job/FitParameterContainerItem.cpp
index c89f76fca90..7f556ab2e69 100644
--- a/GUI/Model/Job/FitParameterContainerItem.cpp
+++ b/GUI/Model/Job/FitParameterContainerItem.cpp
@@ -39,14 +39,11 @@ void FitParameterContainerItem::createFitParameter(ParameterItem* parameterItem)
     fitPar->setStartValue(parameterItem->valueOfLink());
     fitPar->initMinMaxValues(parameterItem->limitsOfLink());
     fitPar->addLink(parameterItem->titleForFitItem(), parameterItem->link());
-
-    emit fitParamChanged();
 }
 
 void FitParameterContainerItem::removeFitParameter(FitParameterItem* item)
 {
     model()->removeRow(item->index().row(), item->index().parent());
-    emit fitParamChanged();
 }
 
 void FitParameterContainerItem::addToFitParameter(ParameterItem* parameterItem,
@@ -56,10 +53,14 @@ void FitParameterContainerItem::addToFitParameter(ParameterItem* parameterItem,
     for (FitParameterItem* fitPar : fitParameterItems()) {
         if (fitPar->displayName() == fitParName) {
             fitPar->addLink(parameterItem->titleForFitItem(), parameterItem->link());
-            emit fitLinkChanged();
             break;
         }
-    }    
+    }
+}
+
+void FitParameterContainerItem::removeFromFitParameter(const ParameterItem *parameterItem)
+{
+    removeLink(parameterItem);
 }
 
 //! Returns FitParameterItem for given link (path in model)
@@ -96,7 +97,6 @@ void FitParameterContainerItem::removeLink(const ParameterItem* parameterItem)
 {
     if (FitParameterItem* fitParItem = fitParameterItem(parameterItem))
         fitParItem->removeLink(parameterItem->link());
-    emit fitLinkChanged();
 }
 
 bool FitParameterContainerItem::isEmpty()
diff --git a/GUI/Model/Job/FitParameterContainerItem.h b/GUI/Model/Job/FitParameterContainerItem.h
index c732077444a..cefc7c6c1b8 100644
--- a/GUI/Model/Job/FitParameterContainerItem.h
+++ b/GUI/Model/Job/FitParameterContainerItem.h
@@ -46,6 +46,8 @@ public:
     //! If parameterItem is already linked with another fitParameter, it will be relinked
     void addToFitParameter(ParameterItem* parameterItem, const QString& fitParName);
 
+    void removeFromFitParameter(const ParameterItem* parameterItem);
+
     //! get the fit parameter item whose link matches the given link.
     //!
     //! The link is a ParameterItem's path
@@ -68,8 +70,7 @@ public:
     mumufit::Parameters createParameters() const;
 
 signals:
-    void fitLinkChanged(SessionItem* linkItem = nullptr);
-    void fitParamChanged(SessionItem* item = nullptr);
+    void fitItemChanged();
 };
 
 #endif // BORNAGAIN_GUI_MODEL_JOB_FITPARAMETERCONTAINERITEM_H
diff --git a/GUI/Model/Model/FitParameterModel.cpp b/GUI/Model/Model/FitParameterModel.cpp
index e477ab2b315..86456c0ffc6 100644
--- a/GUI/Model/Model/FitParameterModel.cpp
+++ b/GUI/Model/Model/FitParameterModel.cpp
@@ -307,29 +307,9 @@ QVariant FitParameterModel::headerData(int section, Qt::Orientation orientation,
     return QVariant();
 }
 
-void FitParameterModel::onFitParChanged(SessionItem* item)
+void FitParameterModel::onFitItemChanged()
 {
     beginResetModel();
-    qInfo() << "FitPar" << item;
-    if(item) {
-        QModelIndex itemIndex = indexOfItem(item);
-        qInfo() << itemIndex.isValid();
-        if (itemIndex.isValid())
-            emit dataChanged(itemIndex, itemIndex);
-    }
-    endResetModel();
-}
-
-void FitParameterModel::onFitLinkChanged(SessionItem *item)
-{
-    beginResetModel();
-    qInfo() << "Link" << item;
-    if(item) {
-        QModelIndex itemIndex = indexOfItem(item);
-        qInfo() << itemIndex.isValid();
-        if (itemIndex.isValid())
-            emit dataChanged(itemIndex, itemIndex);
-    }
     endResetModel();
 }
 
@@ -391,10 +371,8 @@ void FitParameterModel::connectContainer() const
     if (!m_parameterContainer)
         return;
 
-    connect(m_parameterContainer, &FitParameterContainerItem::fitParamChanged, this,
-            &FitParameterModel::onFitParChanged);
-    connect(m_parameterContainer, &FitParameterContainerItem::fitLinkChanged, this,
-            &FitParameterModel::onFitLinkChanged);
+    connect(m_parameterContainer, &FitParameterContainerItem::fitItemChanged, this,
+            &FitParameterModel::onFitItemChanged);
 }
 
 void FitParameterModel::addColumn(FitParameterModel::EColumn id, const QString& name,
diff --git a/GUI/Model/Model/FitParameterModel.h b/GUI/Model/Model/FitParameterModel.h
index e8872f8d3cf..a7a6e92ec6a 100644
--- a/GUI/Model/Model/FitParameterModel.h
+++ b/GUI/Model/Model/FitParameterModel.h
@@ -59,8 +59,7 @@ public:
     bool isValidSourceItem(SessionItem* item) const;
 
 private slots:
-    void onFitParChanged(SessionItem *item);
-    void onFitLinkChanged(SessionItem *item);
+    void onFitItemChanged();
     void onSourceDataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight,
                              const QVector<int>& roles);
     void onSourceRowsRemoved(const QModelIndex& parent, int first, int last);
diff --git a/GUI/View/Fit/FitParameterWidget.cpp b/GUI/View/Fit/FitParameterWidget.cpp
index 65768dc8378..0b5e8569ec5 100644
--- a/GUI/View/Fit/FitParameterWidget.cpp
+++ b/GUI/View/Fit/FitParameterWidget.cpp
@@ -175,9 +175,11 @@ void FitParameterWidget::onFitParametersSelectionChanged(const QItemSelection& s
 
 void FitParameterWidget::onCreateFitParAction()
 {
+    qInfo() << "onCreateFitParAction";
     for (auto* item : m_tuningWidget->getSelectedParameters())
         if (!jobItem()->fitParameterContainerItem()->fitParameterItem(item))
             jobItem()->fitParameterContainerItem()->createFitParameter(item);
+    emit jobItem()->fitParameterContainerItem()->fitItemChanged();
 }
 
 //! All ParameterItem's selected in tuning widget will be removed from link section of
@@ -185,14 +187,17 @@ void FitParameterWidget::onCreateFitParAction()
 
 void FitParameterWidget::onRemoveFromFitParAction()
 {
+    qInfo() << "onRemoveFromFitParAction";
     for (auto* item : m_tuningWidget->getSelectedParameters())
         jobItem()->fitParameterContainerItem()->removeLink(item);
+    emit jobItem()->fitParameterContainerItem()->fitItemChanged();
 }
 
 //! All selected FitParameterItem's of FitParameterItemLink's will be removed
 
 void FitParameterWidget::onRemoveFitParAction()
 {
+    qInfo() << "onRemoveFitParAction";
     FitParameterContainerItem* container = jobItem()->fitParameterContainerItem();
 
     // retrieve both, selected FitParameterItem and FitParameterItemLink
@@ -209,15 +214,20 @@ void FitParameterWidget::onRemoveFitParAction()
 
     for (auto* item : itemsToRemove)
         container->removeFitParameter(item);
+
+    emit jobItem()->fitParameterContainerItem()->fitItemChanged();
 }
 
 //! Add all selected parameters to fitParameter with given index
 
 void FitParameterWidget::onAddToFitParAction(int ipar)
 {
+    qInfo() << "onAddToFitParAction";
     const QString fitParName = jobItem()->fitParameterContainerItem()->fitParameterNames().at(ipar);
     for (auto* item : m_tuningWidget->getSelectedParameters())
         jobItem()->fitParameterContainerItem()->addToFitParameter(item, fitParName);
+
+    emit jobItem()->fitParameterContainerItem()->fitItemChanged();
 }
 
 void FitParameterWidget::onFitParameterModelChange()
-- 
GitLab