From dbf9fc2f4b668131fc8ba0c732ab0a6c0ddfc949 Mon Sep 17 00:00:00 2001
From: Dmitry Yurov <d.yurov@fz-juelich.de>
Date: Mon, 12 Feb 2018 17:54:59 +0100
Subject: [PATCH] Enable saving specular data in GUI

Redmine: #1936
by replacing IntensityDataItem with DataItem where appropriate
---
 GUI/coregui/Models/JobItem.cpp                |  6 +++---
 GUI/coregui/Models/JobItemUtils.cpp           |  4 ++--
 GUI/coregui/Models/JobItemUtils.h             |  7 ++++---
 .../mainwindow/OutputDataIOHistory.cpp        | 12 +++++------
 GUI/coregui/mainwindow/OutputDataIOHistory.h  | 20 +++++++++----------
 .../mainwindow/OutputDataIOService.cpp        | 13 ++++++------
 GUI/coregui/mainwindow/OutputDataIOService.h  |  4 ++--
 GUI/coregui/mainwindow/SaveService.cpp        |  2 +-
 GUI/coregui/mainwindow/projectdocument.cpp    |  2 +-
 9 files changed, 35 insertions(+), 35 deletions(-)

diff --git a/GUI/coregui/Models/JobItem.cpp b/GUI/coregui/Models/JobItem.cpp
index 21d35c01f77..aa221bdc33e 100644
--- a/GUI/coregui/Models/JobItem.cpp
+++ b/GUI/coregui/Models/JobItem.cpp
@@ -291,13 +291,13 @@ QString JobItem::defaultPresentationType()
 
 void JobItem::updateIntensityDataFileName()
 {
-    if (IntensityDataItem* item = intensityDataItem())
-        item->setItemValue(IntensityDataItem::P_FILE_NAME,
+    if (DataItem* item = dataItem())
+        item->setItemValue(DataItem::P_FILE_NAME,
                            JobItemFunctions::jobResultsFileName(*this));
 
     if (RealDataItem* realItem = realDataItem())
         if (IntensityDataItem* item = realItem->intensityDataItem())
-            item->setItemValue(IntensityDataItem::P_FILE_NAME,
+            item->setItemValue(DataItem::P_FILE_NAME,
                                JobItemFunctions::jobReferenceFileName(*this));
 }
 
diff --git a/GUI/coregui/Models/JobItemUtils.cpp b/GUI/coregui/Models/JobItemUtils.cpp
index 0cf32b43898..b2309791ebb 100644
--- a/GUI/coregui/Models/JobItemUtils.cpp
+++ b/GUI/coregui/Models/JobItemUtils.cpp
@@ -123,7 +123,7 @@ void JobItemUtils::updateDataAxes(IntensityDataItem* intensityItem,
 
 //! loads intensity data from project directory
 
-void JobItemUtils::loadIntensityData(IntensityDataItem *intensityItem, const QString &projectDir)
+void JobItemUtils::loadIntensityData(DataItem *intensityItem, const QString &projectDir)
 {
     QString filename = intensityItem->fileName(projectDir);
     auto data = IntensityDataIOFactory::readOutputData(filename.toStdString());
@@ -133,7 +133,7 @@ void JobItemUtils::loadIntensityData(IntensityDataItem *intensityItem, const QSt
 
 //! Saves intensityData in project directory
 
-void JobItemUtils::saveIntensityData(IntensityDataItem* intensityItem, const QString& projectDir)
+void JobItemUtils::saveIntensityData(DataItem* intensityItem, const QString& projectDir)
 {
     if (!intensityItem || !intensityItem->getOutputData())
         return;
diff --git a/GUI/coregui/Models/JobItemUtils.h b/GUI/coregui/Models/JobItemUtils.h
index 55d4161ac36..e3c7cdd32e4 100644
--- a/GUI/coregui/Models/JobItemUtils.h
+++ b/GUI/coregui/Models/JobItemUtils.h
@@ -18,9 +18,10 @@
 #include "IDetector.h"
 #include <QMap>
 
+class DataItem;
 class Simulation;
-class IntensityDataItem;
 class InstrumentItem;
+class IntensityDataItem;
 class JobItem;
 class SpecularDataItem;
 
@@ -44,10 +45,10 @@ BA_CORE_API_ void updateDataAxes(IntensityDataItem* intensityItem,
                                  const InstrumentItem* instrumentItem);
 
 //! loads intensity data from project directory
-BA_CORE_API_ void loadIntensityData(IntensityDataItem* intensityItem, const QString& projectDir);
+BA_CORE_API_ void loadIntensityData(DataItem* intensityItem, const QString& projectDir);
 
 //! saves intensity data into project directory
-BA_CORE_API_ void saveIntensityData(IntensityDataItem* intensityItem, const QString& projectDir);
+BA_CORE_API_ void saveIntensityData(DataItem* intensityItem, const QString& projectDir);
 
 //! returns axes units names from their domain counterpart
 BA_CORE_API_ QString nameFromAxesUnits(AxesUnits units);
diff --git a/GUI/coregui/mainwindow/OutputDataIOHistory.cpp b/GUI/coregui/mainwindow/OutputDataIOHistory.cpp
index 3ed11ba0259..29fdff624d8 100644
--- a/GUI/coregui/mainwindow/OutputDataIOHistory.cpp
+++ b/GUI/coregui/mainwindow/OutputDataIOHistory.cpp
@@ -17,7 +17,7 @@
 
 //! Static method to create info for just saved IntensityDataItem.
 
-OutputDataSaveInfo OutputDataSaveInfo::createSaved(const IntensityDataItem *item)
+OutputDataSaveInfo OutputDataSaveInfo::createSaved(const DataItem *item)
 {
     Q_ASSERT(item);
 
@@ -43,7 +43,7 @@ bool OutputDataSaveInfo::wasSavedBefore(const QDateTime& dtime) const
 
 //-----------------------------------------------------------------------------
 
-void OutputDataDirHistory::markAsSaved(const IntensityDataItem *item)
+void OutputDataDirHistory::markAsSaved(const DataItem *item)
 {
     if (contains(item))
         throw GUIHelpers::Error("OutputDataDirHistory::markAsSaved() -> Error. "
@@ -52,13 +52,13 @@ void OutputDataDirHistory::markAsSaved(const IntensityDataItem *item)
     m_history.push_back(OutputDataSaveInfo::createSaved(item));
 }
 
-bool OutputDataDirHistory::wasModifiedSinceLastSave(const IntensityDataItem *item)
+bool OutputDataDirHistory::wasModifiedSinceLastSave(const DataItem *item)
 {
     // non existing item is treated as modified since last save
     return contains(item) ? itemInfo(item).wasModifiedSinceLastSave() : true;
 }
 
-bool OutputDataDirHistory::contains(const IntensityDataItem *item) {
+bool OutputDataDirHistory::contains(const DataItem *item) {
     for(auto& info : m_history)
         if(info.dataItem() == item)
             return true;
@@ -78,7 +78,7 @@ QStringList OutputDataDirHistory::savedFileNames() const
     return result;
 }
 
-OutputDataSaveInfo OutputDataDirHistory::itemInfo(const IntensityDataItem* item) const
+OutputDataSaveInfo OutputDataDirHistory::itemInfo(const DataItem* item) const
 {
     for(auto& info : m_history) {
         if (info.dataItem() == item)
@@ -96,7 +96,7 @@ bool OutputDataIOHistory::hasHistory(const QString& dirname) const
 }
 
 bool OutputDataIOHistory::wasModifiedSinceLastSave(const QString& dirname,
-                                                   const IntensityDataItem* item)
+                                                   const DataItem *item)
 {
     if (!hasHistory(dirname))
         throw GUIHelpers::Error("OutputDataIOHistory::wasModifiedSinceLastSave() -> Error. "
diff --git a/GUI/coregui/mainwindow/OutputDataIOHistory.h b/GUI/coregui/mainwindow/OutputDataIOHistory.h
index f37489d2274..2bc9cd7fa8d 100644
--- a/GUI/coregui/mainwindow/OutputDataIOHistory.h
+++ b/GUI/coregui/mainwindow/OutputDataIOHistory.h
@@ -16,7 +16,7 @@
 #define OUTPUTDATAIOHISTORY_H
 
 #include "WinDllMacros.h"
-#include "IntensityDataItem.h"
+#include "DataItem.h"
 #include <QVector>
 #include <QDateTime>
 
@@ -27,11 +27,11 @@ class IntensityDataItem;
 class BA_CORE_API_ OutputDataSaveInfo
 {
 public:
-    OutputDataSaveInfo() : m_dataItem(nullptr){}
+    OutputDataSaveInfo() : m_dataItem(nullptr) {}
 
-    static OutputDataSaveInfo createSaved(const IntensityDataItem* item);
+    static OutputDataSaveInfo createSaved(const DataItem* item);
 
-    const IntensityDataItem* dataItem() const { return m_dataItem; }
+    const DataItem* dataItem() const { return m_dataItem; }
 
     QString fileName() const { return m_file_name; }
 
@@ -42,7 +42,7 @@ private:
 
     QDateTime m_last_saved;
     QString m_file_name;
-    const IntensityDataItem* m_dataItem;
+    const DataItem* m_dataItem;
 };
 
 //! Save history information for collection of IntensityDataItems.
@@ -51,16 +51,16 @@ class BA_CORE_API_ OutputDataDirHistory {
 public:
     OutputDataDirHistory() {}
 
-    void markAsSaved(const IntensityDataItem* item);
+    void markAsSaved(const DataItem* item);
 
-    bool wasModifiedSinceLastSave(const IntensityDataItem* item);
+    bool wasModifiedSinceLastSave(const DataItem* item);
 
-    bool contains(const IntensityDataItem* item);
+    bool contains(const DataItem* item);
 
     QStringList savedFileNames() const;
 
 private:
-    OutputDataSaveInfo itemInfo(const IntensityDataItem* item) const;
+    OutputDataSaveInfo itemInfo(const DataItem* item) const;
 
     QVector<OutputDataSaveInfo> m_history;
 };
@@ -71,7 +71,7 @@ class BA_CORE_API_ OutputDataIOHistory {
 public:
     bool hasHistory(const QString& dirname) const;
 
-    bool wasModifiedSinceLastSave(const QString& dirname, const IntensityDataItem* item);
+    bool wasModifiedSinceLastSave(const QString& dirname, const DataItem* item);
 
     void setHistory(const QString& dirname, const OutputDataDirHistory& history);
 
diff --git a/GUI/coregui/mainwindow/OutputDataIOService.cpp b/GUI/coregui/mainwindow/OutputDataIOService.cpp
index 6e0f28b0de0..fb1aa9ea4ed 100644
--- a/GUI/coregui/mainwindow/OutputDataIOService.cpp
+++ b/GUI/coregui/mainwindow/OutputDataIOService.cpp
@@ -14,7 +14,7 @@
 
 #include "OutputDataIOService.h"
 #include "ApplicationModels.h"
-#include "IntensityDataItem.h"
+#include "DataItem.h"
 #include "JobItemUtils.h"
 #include "ProjectUtils.h"
 #include "MessageService.h"
@@ -83,17 +83,16 @@ void OutputDataIOService::load(const QString& projectDir, MessageService* messag
 
 //! Returns all IntensityDataItems available for save/load.
 
-QVector<IntensityDataItem*> OutputDataIOService::dataItems() const
+QVector<DataItem*> OutputDataIOService::dataItems() const
 {
-    QVector<IntensityDataItem*> result;
+    QVector<DataItem*> result;
 
     if (!m_applicationModels)
         return result;
 
-    for (auto item : m_applicationModels->nonXMLData()) {
-        if (auto intensityItem = dynamic_cast<IntensityDataItem*>(item))
-            result.push_back(intensityItem);
-    }
+    for (auto item : m_applicationModels->nonXMLData())
+        if (auto data_item = dynamic_cast<DataItem*>(item))
+            result.push_back(data_item);
 
     return result;
 }
diff --git a/GUI/coregui/mainwindow/OutputDataIOService.h b/GUI/coregui/mainwindow/OutputDataIOService.h
index 8f81027d6ca..554017de9f6 100644
--- a/GUI/coregui/mainwindow/OutputDataIOService.h
+++ b/GUI/coregui/mainwindow/OutputDataIOService.h
@@ -20,7 +20,7 @@
 #include <QObject>
 
 class ApplicationModels;
-class IntensityDataItem;
+class DataItem;
 class MessageService;
 
 //! Provide read/write of heavy data files in a separate thread.
@@ -41,7 +41,7 @@ public:
 
     void load(const QString& projectDir, MessageService* messageService=nullptr);
 
-    QVector<IntensityDataItem* > dataItems() const;
+    QVector<DataItem* > dataItems() const;
 
 private:
     void cleanOldFiles(const QString& projectDir, const QStringList& oldSaves,
diff --git a/GUI/coregui/mainwindow/SaveService.cpp b/GUI/coregui/mainwindow/SaveService.cpp
index 85c2718ae69..41e3880f92a 100644
--- a/GUI/coregui/mainwindow/SaveService.cpp
+++ b/GUI/coregui/mainwindow/SaveService.cpp
@@ -136,7 +136,7 @@ void SaveService::process_queue()
         QString project_file_name = m_save_queue.dequeue();
 
         // saving project file in a main thread
-        bool isAutosave = project_file_name.contains(ProjectUtils::autosaveSubdir()) ? true : false;
+        const bool isAutosave = project_file_name.contains(ProjectUtils::autosaveSubdir());
         m_document->save_project_file(project_file_name, isAutosave);
 
         if(m_document->hasData()) {
diff --git a/GUI/coregui/mainwindow/projectdocument.cpp b/GUI/coregui/mainwindow/projectdocument.cpp
index 4d7433f612a..328b154c73c 100644
--- a/GUI/coregui/mainwindow/projectdocument.cpp
+++ b/GUI/coregui/mainwindow/projectdocument.cpp
@@ -206,7 +206,7 @@ bool ProjectDocument::hasErrors() const
 
 bool ProjectDocument::hasData() const
 {
-    return m_dataService->dataItems().isEmpty() ? false : true;
+    return !m_dataService->dataItems().isEmpty();
 }
 
 QString ProjectDocument::documentVersion() const
-- 
GitLab