From c075d2dd584eee56b1aa9c6accced9ed6587c247 Mon Sep 17 00:00:00 2001
From: Tobias Knopff <t.knopff@fz-juelich.de>
Date: Tue, 27 Apr 2021 12:36:36 +0200
Subject: [PATCH] Make MaterialItem::P_MAGNETIZATION private

---
 GUI/coregui/Models/GUIDomainSampleVisitor.cpp         |  3 +--
 GUI/coregui/Models/JobModelFunctions.cpp              |  2 +-
 GUI/coregui/Models/MaterialItem.cpp                   | 10 ++++++++++
 GUI/coregui/Models/MaterialItem.h                     |  6 ++++--
 Tests/Functional/GUI/Translate/GUITranslationTest.cpp |  4 ++--
 5 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/GUI/coregui/Models/GUIDomainSampleVisitor.cpp b/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
index d6dfdc2031d..7e5b309bc67 100644
--- a/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
+++ b/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
@@ -600,8 +600,7 @@ ExternalProperty GUIDomainSampleVisitor::createMaterialFromDomain(const Material
                                 "Unsupported material");
     }
 
-    materialItem->item<VectorItem>(MaterialItem::P_MAGNETIZATION)
-        ->setVector(material->magnetization());
+    materialItem->setMagnetization(material->magnetization());
     return MaterialItemUtils::materialProperty(*materialItem);
 }
 
diff --git a/GUI/coregui/Models/JobModelFunctions.cpp b/GUI/coregui/Models/JobModelFunctions.cpp
index 3e0c1908596..a9df6b038e9 100644
--- a/GUI/coregui/Models/JobModelFunctions.cpp
+++ b/GUI/coregui/Models/JobModelFunctions.cpp
@@ -181,7 +181,7 @@ void JobModelFunctions::muteMagnetizationData(JobItem* jobItem)
     auto container =
         static_cast<MaterialItemContainer*>(jobItem->getItem(JobItem::T_MATERIAL_CONTAINER));
     for (auto item : container->getItems(MaterialItemContainer::T_MATERIALS))
-        item->getItem(MaterialItem::P_MAGNETIZATION)->setVisible(false);
+        static_cast<MaterialItem*>(item)->hideMagnetization();
 
     auto sample = static_cast<MultiLayerItem*>(jobItem->getItem(JobItem::T_SAMPLE));
     sample->getItem(MultiLayerItem::P_EXTERNAL_FIELD)->setVisible(false);
diff --git a/GUI/coregui/Models/MaterialItem.cpp b/GUI/coregui/Models/MaterialItem.cpp
index dc0a8cd37dd..98147ee4e72 100644
--- a/GUI/coregui/Models/MaterialItem.cpp
+++ b/GUI/coregui/Models/MaterialItem.cpp
@@ -110,6 +110,16 @@ void MaterialItem::setColor(const QColor& color)
     setItemValue(P_COLOR, MaterialItemUtils::colorProperty(color).variant());
 }
 
+void MaterialItem::setMagnetization(const kvector_t& magnetization)
+{
+    item<VectorItem>(P_MAGNETIZATION)->setVector(magnetization);
+}
+
+void MaterialItem::hideMagnetization()
+{
+    getItem(MaterialItem::P_MAGNETIZATION)->setVisible(false);
+}
+
 std::unique_ptr<Material> MaterialItem::createMaterial() const
 {
     auto dataItem = getGroupItem(P_MATERIAL_DATA);
diff --git a/GUI/coregui/Models/MaterialItem.h b/GUI/coregui/Models/MaterialItem.h
index 46f97aa5170..1ea52dc4d2a 100644
--- a/GUI/coregui/Models/MaterialItem.h
+++ b/GUI/coregui/Models/MaterialItem.h
@@ -15,6 +15,7 @@
 #ifndef BORNAGAIN_GUI_COREGUI_MODELS_MATERIALITEM_H
 #define BORNAGAIN_GUI_COREGUI_MODELS_MATERIALITEM_H
 
+#include "Base/Vector/Vectors3D.h"
 #include "Base/Types/Complex.h"
 #include "GUI/coregui/Models/SessionItem.h"
 
@@ -24,9 +25,7 @@ class BA_CORE_API_ MaterialItem : public SessionItem {
 private:
     static const QString P_COLOR;
     static const QString P_MATERIAL_DATA;
-public:
     static const QString P_MAGNETIZATION;
-private:
     static const QString P_IDENTIFIER;
 
 public:
@@ -50,6 +49,9 @@ public:
     QColor color() const;
     void setColor(const QColor& color);
 
+    void setMagnetization(const kvector_t& magnetization);
+    void hideMagnetization();
+    
     std::unique_ptr<Material> createMaterial() const;
 };
 
diff --git a/Tests/Functional/GUI/Translate/GUITranslationTest.cpp b/Tests/Functional/GUI/Translate/GUITranslationTest.cpp
index e6c4ff98f91..457a0fa6d6c 100644
--- a/Tests/Functional/GUI/Translate/GUITranslationTest.cpp
+++ b/Tests/Functional/GUI/Translate/GUITranslationTest.cpp
@@ -50,7 +50,7 @@ bool containsNames(const QString& text, const QStringList& names)
 const QVector<QPair<QStringList, QStringList>> black_list{
     {// Global scope
      {""},
-     {"Sigma factor", "MaterialRefractiveData", "MaterialSLDData", MaterialItem::P_MAGNETIZATION}},
+     {"Sigma factor", "MaterialRefractiveData", "MaterialSLDData", "Magnetization"}},
     {// Instrument scope
      {"GISASInstrument", "OffSpecularInstrument", "SpecularInstrument"},
      {// Distribution types
@@ -74,7 +74,7 @@ const QVector<QPair<QStringList, QStringList>> black_list{
       // Beam angle parameters
       BeamItem::P_INCLINATION_ANGLE, BeamItem::P_AZIMUTHAL_ANGLE}}};
 
-//! Returns true, if it makes sence to look for GUI translation for given domain name.
+//! Returns true, if it makes sense to look for GUI translation for given domain name.
 //! Intended to supress warnings about not-yet implemented translations.
 bool requiresTranslation(ParameterItem* parItem)
 {
-- 
GitLab