From a984bde534e0ce284f59ca6d802dae9f75cf8442 Mon Sep 17 00:00:00 2001
From: Tobias Knopff <t.knopff@fz-juelich.de>
Date: Tue, 4 May 2021 11:34:40 +0200
Subject: [PATCH] Make DataItem::P_AXES_UNITS private

---
 GUI/coregui/DataLoaders/QREDataLoader.cpp         |  4 ++--
 GUI/coregui/Models/DataItem.cpp                   | 15 +++++++++++++++
 GUI/coregui/Models/DataItem.h                     |  7 ++++++-
 GUI/coregui/Models/IntensityDataItem.cpp          |  4 ++--
 GUI/coregui/Models/JobItem.cpp                    |  2 +-
 GUI/coregui/Models/JobItemUtils.cpp               |  2 +-
 GUI/coregui/Models/RealDataItem.cpp               |  3 ++-
 GUI/coregui/Models/SpecularDataItem.cpp           |  4 ++--
 .../Views/FitWidgets/FitComparisonController.cpp  |  2 +-
 .../InstrumentWidgets/DetectorMaskDelegate.cpp    |  2 +-
 .../Views/IntensityDataWidgets/ColorMap.cpp       |  2 +-
 .../Views/SpecularDataWidgets/SpecularPlot.cpp    |  2 +-
 12 files changed, 35 insertions(+), 14 deletions(-)

diff --git a/GUI/coregui/DataLoaders/QREDataLoader.cpp b/GUI/coregui/DataLoaders/QREDataLoader.cpp
index f9b4d4b6a1f..298cb003ef9 100644
--- a/GUI/coregui/DataLoaders/QREDataLoader.cpp
+++ b/GUI/coregui/DataLoaders/QREDataLoader.cpp
@@ -557,8 +557,8 @@ void QREDataLoader::createOutputDataFromParsingResult(RealDataItem* item) const
     SpecularDataItem* specularItem = item->specularDataItem();
     ComboProperty combo = ComboProperty() << units_name;
 
-    specularItem->setItemValue(SpecularDataItem::P_AXES_UNITS, combo.variant());
-    specularItem->getItem(SpecularDataItem::P_AXES_UNITS)->setVisible(true);
+    specularItem->setAxesUnits(combo);
+    specularItem->getAxesUnitsItem()->setVisible(true);
 
     auto label_map = AxisNames::specAxis;
     const auto xAxisTitle = QString::fromStdString(label_map[Axes::Coords::QSPACE]);
diff --git a/GUI/coregui/Models/DataItem.cpp b/GUI/coregui/Models/DataItem.cpp
index c7bfdd81616..dd6b6a18ea3 100644
--- a/GUI/coregui/Models/DataItem.cpp
+++ b/GUI/coregui/Models/DataItem.cpp
@@ -90,6 +90,21 @@ QString DataItem::selectedCoords() const
     return combo.getValue();
 }
 
+void DataItem::setAxesUnits(const ComboProperty& units)
+{
+    setItemValue(P_AXES_UNITS, units.variant());
+}
+
+SessionItem* DataItem::getAxesUnitsItem() const
+{
+    return getItem(P_AXES_UNITS);
+}
+
+bool DataItem::isAxesUnitsPropertyName(const QString& name)
+{
+    return name == P_AXES_UNITS;
+}
+
 DataItem::DataItem(const QString& modelType) : SessionItem(modelType)
 {
     // name of the file used to serialize given IntensityDataItem
diff --git a/GUI/coregui/Models/DataItem.h b/GUI/coregui/Models/DataItem.h
index 8ab0d2c885c..eec5c2d5955 100644
--- a/GUI/coregui/Models/DataItem.h
+++ b/GUI/coregui/Models/DataItem.h
@@ -21,6 +21,7 @@
 #include <QDateTime>
 #include <mutex>
 
+class ComboProperty;
 class ImportDataInfo;
 class InstrumentItem;
 
@@ -32,9 +33,9 @@ class InstrumentItem;
 class BA_CORE_API_ DataItem : public SessionItem, public SaveLoadInterface {
 private:
     static const QString P_FILE_NAME;
+    static const QString P_AXES_UNITS;
 
 public:
-    static const QString P_AXES_UNITS;
 
     OutputData<double>* getOutputData() { return m_data.get(); }
     const OutputData<double>* getOutputData() const { return m_data.get(); }
@@ -58,6 +59,10 @@ public:
 
     QString selectedCoords() const;
 
+    void setAxesUnits(const ComboProperty& units);
+    SessionItem* getAxesUnitsItem() const;
+    static bool isAxesUnitsPropertyName(const QString& name);
+    
     virtual void setXaxisTitle(const QString& title) = 0;
     virtual void setYaxisTitle(const QString& title) = 0;
     virtual void setAxesRangeToData() = 0;
diff --git a/GUI/coregui/Models/IntensityDataItem.cpp b/GUI/coregui/Models/IntensityDataItem.cpp
index a9387823a67..6b9d6b95947 100644
--- a/GUI/coregui/Models/IntensityDataItem.cpp
+++ b/GUI/coregui/Models/IntensityDataItem.cpp
@@ -234,8 +234,8 @@ void IntensityDataItem::reset(ImportDataInfo data)
 {
     ASSERT(data.unitsLabel() == "nbins");
     ComboProperty combo = ComboProperty() << data.unitsLabel();
-    setItemValue(IntensityDataItem::P_AXES_UNITS, combo.variant());
-    getItem(IntensityDataItem::P_AXES_UNITS)->setVisible(true);
+    setAxesUnits(combo);
+    getAxesUnitsItem()->setVisible(true);
 
     setXaxisTitle(data.axisLabel(0));
     setYaxisTitle(data.axisLabel(1));
diff --git a/GUI/coregui/Models/JobItem.cpp b/GUI/coregui/Models/JobItem.cpp
index 791be4d035e..1d90da71bba 100644
--- a/GUI/coregui/Models/JobItem.cpp
+++ b/GUI/coregui/Models/JobItem.cpp
@@ -90,7 +90,7 @@ JobItem::JobItem() : SessionItem("JobItem")
 
     mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString& name) {
         if (item->parent() == this && dynamic_cast<DataItem*>(item)
-            && name == DataItem::P_AXES_UNITS)
+            && DataItem::isAxesUnitsPropertyName(name))
             dynamic_cast<DataItem*>(item)->updateCoords(instrumentItem());
     });
 
diff --git a/GUI/coregui/Models/JobItemUtils.cpp b/GUI/coregui/Models/JobItemUtils.cpp
index c2dd4df2f74..6dc14916a62 100644
--- a/GUI/coregui/Models/JobItemUtils.cpp
+++ b/GUI/coregui/Models/JobItemUtils.cpp
@@ -107,7 +107,7 @@ void JobItemUtils::setIntensityItemCoords(DataItem* intensityItem,
 void JobItemUtils::setIntensityItemCoords(DataItem* intensityItem, const ICoordSystem& converter)
 {
     ComboProperty combo = availableUnits(converter);
-    intensityItem->setItemValue(DataItem::P_AXES_UNITS, combo.variant());
+    intensityItem->setAxesUnits(combo);
 }
 
 void JobItemUtils::createDefaultDetectorMap(DataItem* intensityItem,
diff --git a/GUI/coregui/Models/RealDataItem.cpp b/GUI/coregui/Models/RealDataItem.cpp
index 81091b0488c..e7bfe494450 100644
--- a/GUI/coregui/Models/RealDataItem.cpp
+++ b/GUI/coregui/Models/RealDataItem.cpp
@@ -70,7 +70,8 @@ RealDataItem::RealDataItem() : SessionItem("RealData")
 
     mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString& name) {
         auto data_item = dynamic_cast<DataItem*>(item);
-        if (!data_item || !linkedInstrument() || name != DataItem::P_AXES_UNITS)
+        if (!data_item || !linkedInstrument()
+            || DataItem::isAxesUnitsPropertyName(name))
             return;
 
         mapper()->setActive(false);
diff --git a/GUI/coregui/Models/SpecularDataItem.cpp b/GUI/coregui/Models/SpecularDataItem.cpp
index 1deeed93381..88a2fdd1d9b 100644
--- a/GUI/coregui/Models/SpecularDataItem.cpp
+++ b/GUI/coregui/Models/SpecularDataItem.cpp
@@ -149,8 +149,8 @@ std::vector<int> SpecularDataItem::shape() const
 void SpecularDataItem::reset(ImportDataInfo data)
 {
     ComboProperty combo = ComboProperty() << data.unitsLabel();
-    setItemValue(SpecularDataItem::P_AXES_UNITS, combo.variant());
-    getItem(SpecularDataItem::P_AXES_UNITS)->setVisible(true);
+    setAxesUnits(combo);
+    getAxesUnitsItem()->setVisible(true);
 
     setXaxisTitle(data.axisLabel(0));
     setYaxisTitle(data.axisLabel(1));
diff --git a/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp b/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp
index 6f42427bcb5..92ac0d04c0e 100644
--- a/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp
+++ b/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp
@@ -177,7 +177,7 @@ void DiffItemController::subscribe()
     // on diff item units change
     m_diff_item->mapper()->setOnPropertyChange(
         [this](const QString& name) {
-            if (name == DataItem::P_AXES_UNITS)
+            if (DataItem::isAxesUnitsPropertyName(name))
                 m_diff_item->updateCoords(m_current_item->instrumentItem());
         },
         this);
diff --git a/GUI/coregui/Views/InstrumentWidgets/DetectorMaskDelegate.cpp b/GUI/coregui/Views/InstrumentWidgets/DetectorMaskDelegate.cpp
index 4cab14fadb2..40959d74c67 100644
--- a/GUI/coregui/Views/InstrumentWidgets/DetectorMaskDelegate.cpp
+++ b/GUI/coregui/Views/InstrumentWidgets/DetectorMaskDelegate.cpp
@@ -73,5 +73,5 @@ void DetectorMaskDelegate::createIntensityDataItem()
     JobItemUtils::createDefaultDetectorMap(m_intensityItem, instrument);
 
     m_intensityItem->getOutputData()->setAllTo(1.0);
-    m_intensityItem->getItem(DataItem::P_AXES_UNITS)->setEnabled(false);
+    m_intensityItem->getAxesUnitsItem()->setEnabled(false);
 }
diff --git a/GUI/coregui/Views/IntensityDataWidgets/ColorMap.cpp b/GUI/coregui/Views/IntensityDataWidgets/ColorMap.cpp
index bdd0c12a135..38878e917e0 100644
--- a/GUI/coregui/Views/IntensityDataWidgets/ColorMap.cpp
+++ b/GUI/coregui/Views/IntensityDataWidgets/ColorMap.cpp
@@ -115,7 +115,7 @@ void ColorMap::onPropertyChanged(const QString& property_name)
     } else if (property_name == IntensityDataItem::P_IS_INTERPOLATED) {
         m_colorMap->setInterpolate(intensityItem()->isInterpolated());
         replot();
-    } else if (property_name == DataItem::P_AXES_UNITS) {
+    } else if (DataItem::isAxesUnitsPropertyName(property_name)) {
         setAxesRangeFromItem(intensityItem());
         replot();
     }
diff --git a/GUI/coregui/Views/SpecularDataWidgets/SpecularPlot.cpp b/GUI/coregui/Views/SpecularDataWidgets/SpecularPlot.cpp
index e76cc5bb26e..b39ab181dbe 100644
--- a/GUI/coregui/Views/SpecularDataWidgets/SpecularPlot.cpp
+++ b/GUI/coregui/Views/SpecularDataWidgets/SpecularPlot.cpp
@@ -75,7 +75,7 @@ void SpecularPlot::onPropertyChanged(const QString& property_name)
     if (m_block_update)
         return;
 
-    if (property_name == DataItem::P_AXES_UNITS) {
+    if (DataItem::isAxesUnitsPropertyName(property_name)) {
         setAxesRangeFromItem(specularItem());
         replot();
     }
-- 
GitLab