From 12b28f5fb3e9f731022b7a677f52d8510716a2a7 Mon Sep 17 00:00:00 2001
From: Gennady Pospelov <g.pospelov@fz-juelich.de>
Date: Tue, 24 Oct 2017 15:04:44 +0200
Subject: [PATCH] Relative diff item moved to FitComparisonController

---
 .../FitWidgets/FitComparisonController.cpp    | 17 +++++++++++++
 .../FitWidgets/FitComparisonController.h      |  8 ++++++
 .../Views/FitWidgets/FitComparisonWidget.cpp  | 25 +++----------------
 .../Views/FitWidgets/FitComparisonWidget.h    |  4 ---
 4 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp b/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp
index 916f90d3b51..c517254256e 100644
--- a/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp
+++ b/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp
@@ -15,9 +15,26 @@
 // ************************************************************************** //
 
 #include "FitComparisonController.h"
+#include "SessionModel.h"
+#include "IntensityDataItem.h"
 
 FitComparisonController::FitComparisonController(QObject* parent)
     : QObject(parent)
+    , m_relativeDiffItem(nullptr)
+    , m_tempIntensityDataModel(new SessionModel("TempIntensityDataModel", this))
 {
+    createRelativeDifferenceItem();
+}
+
+IntensityDataItem* FitComparisonController::diffItem()
+{
+    return m_relativeDiffItem;
+}
+
+void FitComparisonController::createRelativeDifferenceItem()
+{
+    m_tempIntensityDataModel->clear();
 
+    m_relativeDiffItem = dynamic_cast<IntensityDataItem*>(
+        m_tempIntensityDataModel->insertNewItem(Constants::IntensityDataType));
 }
diff --git a/GUI/coregui/Views/FitWidgets/FitComparisonController.h b/GUI/coregui/Views/FitWidgets/FitComparisonController.h
index 92ce39887b9..f7f0c6b6192 100644
--- a/GUI/coregui/Views/FitWidgets/FitComparisonController.h
+++ b/GUI/coregui/Views/FitWidgets/FitComparisonController.h
@@ -20,6 +20,9 @@
 #include "WinDllMacros.h"
 #include <QObject>
 
+class SessionModel;
+class IntensityDataItem;
+
 //! Provides syncronization between certain properties of fit related IntensityDataItems.
 //! Part of FitComparisonWidget.
 
@@ -29,8 +32,13 @@ class BA_CORE_API_ FitComparisonController : public QObject
 public:
     explicit FitComparisonController(QObject* parent = nullptr);
 
+    IntensityDataItem* diffItem();
+
 private:
+    void createRelativeDifferenceItem();
 
+    IntensityDataItem* m_relativeDiffItem;
+    SessionModel* m_tempIntensityDataModel;
 };
 
 #endif  // FITCOMPARISONCONTROLLER_H
diff --git a/GUI/coregui/Views/FitWidgets/FitComparisonWidget.cpp b/GUI/coregui/Views/FitWidgets/FitComparisonWidget.cpp
index abc5e58bcff..621348a7201 100644
--- a/GUI/coregui/Views/FitWidgets/FitComparisonWidget.cpp
+++ b/GUI/coregui/Views/FitWidgets/FitComparisonWidget.cpp
@@ -50,9 +50,7 @@ FitComparisonWidget::FitComparisonWidget(QWidget *parent)
     , m_statusLabel(new ColorMapLabel(0, this))
     , m_propertyWidget(new IntensityDataPropertyWidget)
     , m_repeater(new PropertyRepeater(this))
-    , m_relativeDiffItem(0)
     , m_resetViewAction(0)
-    , m_tempIntensityDataModel(new SessionModel("TempIntensityDataModel"))
     , m_comparisonController(new FitComparisonController(this))
 {
     QVBoxLayout *vlayout = new QVBoxLayout;
@@ -84,13 +82,11 @@ FitComparisonWidget::FitComparisonWidget(QWidget *parent)
     m_resetViewAction->setToolTip("Reset View");
     connect(m_resetViewAction, SIGNAL(triggered()), this, SLOT(onResetViewAction()));
 
-    m_relativeDiffItem = createRelativeDifferenceItem();
-    m_relativeDiffPlot->setItem(diffItem());
+    m_relativeDiffPlot->setItem(m_comparisonController->diffItem());
 
     m_propertyWidget->setVisible(false);
 }
 
-FitComparisonWidget::~FitComparisonWidget() { delete m_tempIntensityDataModel; }
 
 QList<QAction*> FitComparisonWidget::actionList()
 {
@@ -135,8 +131,8 @@ void FitComparisonWidget::subscribeToItem()
     m_repeater->addItem(realDataItem());
     m_repeater->addItem(simulatedDataItem());
 
-    QStringList activeProperties = QStringList() << BasicAxisItem::P_MIN << BasicAxisItem::P_MAX;
-    m_repeater->addItem(diffItem(), activeProperties);
+//    QStringList activeProperties = QStringList() << BasicAxisItem::P_MIN << BasicAxisItem::P_MAX;
+//    m_repeater->addItem(diffItem(), activeProperties);
 
     m_propertyWidget->setItem(simulatedDataItem());
 }
@@ -170,19 +166,6 @@ void FitComparisonWidget::onResetViewAction()
 //    m_repeater->setActive(true);
 }
 
-//! Creates an IntensityDataItem which will hold relative difference map between simulation
-//! and real data.
-
-IntensityDataItem* FitComparisonWidget::createRelativeDifferenceItem()
-{
-    m_tempIntensityDataModel->clear();
-
-    IntensityDataItem* result = dynamic_cast<IntensityDataItem*>(
-        m_tempIntensityDataModel->insertNewItem(Constants::IntensityDataType));
-
-    return result;
-}
-
 void FitComparisonWidget::calculateRelativeDifference()
 {
     if (!simulatedDataItem()->getOutputData()) // job failed
@@ -219,5 +202,5 @@ IntensityDataItem* FitComparisonWidget::simulatedDataItem()
 
 IntensityDataItem* FitComparisonWidget::diffItem()
 {
-    return m_relativeDiffItem;
+    return m_comparisonController->diffItem();
 }
diff --git a/GUI/coregui/Views/FitWidgets/FitComparisonWidget.h b/GUI/coregui/Views/FitWidgets/FitComparisonWidget.h
index 4346ec0b16e..ef4223cae41 100644
--- a/GUI/coregui/Views/FitWidgets/FitComparisonWidget.h
+++ b/GUI/coregui/Views/FitWidgets/FitComparisonWidget.h
@@ -40,7 +40,6 @@ class BA_CORE_API_ FitComparisonWidget : public SessionItemWidget
 
 public:
     explicit FitComparisonWidget(QWidget* parent = 0);
-    ~FitComparisonWidget();
 
     virtual QList<QAction*> actionList();
 
@@ -52,7 +51,6 @@ protected:
     void unsubscribeFromItem();
 
 private:
-    IntensityDataItem* createRelativeDifferenceItem();
     void calculateRelativeDifference();
 
     JobItem* jobItem();
@@ -68,9 +66,7 @@ private:
     IntensityDataPropertyWidget* m_propertyWidget;
     PropertyRepeater* m_repeater;
 
-    IntensityDataItem* m_relativeDiffItem;
     QAction* m_resetViewAction;
-    SessionModel* m_tempIntensityDataModel;
     FitComparisonController* m_comparisonController;
 };
 
-- 
GitLab