From 24a209b900cb5003056c6c0736f4e36f395c2291 Mon Sep 17 00:00:00 2001
From: Tobias Knopff <t.knopff@fz-juelich.de>
Date: Mon, 3 May 2021 12:34:20 +0200
Subject: [PATCH] Make BeamItem::P_POLARIZATION private

---
 GUI/coregui/Models/BeamItems.cpp                         | 9 +++++++--
 GUI/coregui/Models/BeamItems.h                           | 5 ++++-
 GUI/coregui/Models/TransformFromDomain.cpp               | 2 +-
 .../InstrumentWidgets/PolarizationAnalysisEditor.cpp     | 3 ++-
 4 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/GUI/coregui/Models/BeamItems.cpp b/GUI/coregui/Models/BeamItems.cpp
index f5bc558dc8e..27c2856a268 100644
--- a/GUI/coregui/Models/BeamItems.cpp
+++ b/GUI/coregui/Models/BeamItems.cpp
@@ -108,6 +108,11 @@ BeamAzimuthalAngleItem* BeamItem::azimuthalAngleItem() const
     return item<BeamAzimuthalAngleItem>(P_AZIMUTHAL_ANGLE);
 }
 
+VectorItem* BeamItem::polarizationItem() const
+{
+    return item<VectorItem>(P_POLARIZATION);
+}
+
 std::unique_ptr<Beam> BeamItem::createBeam() const
 {
     double lambda = wavelength();
@@ -117,7 +122,7 @@ std::unique_ptr<Beam> BeamItem::createBeam() const
     auto result =
         std::make_unique<Beam>(intensity(), lambda, Direction(inclination_angle, azimuthal_angle));
 
-    result->setPolarization(item<VectorItem>(P_POLARIZATION)->getVector());
+    result->setPolarization(polarizationItem()->getVector());
 
     return result;
 }
@@ -151,7 +156,7 @@ SpecularBeamItem::SpecularBeamItem() : BeamItem("SpecularBeam")
     initWavelength<SpecularBeamWavelengthItem>();
 
     azimuthalAngleItem()->setVisible(false);
-    getItem(P_POLARIZATION)->setVisible(false);
+    polarizationItem()->setVisible(false);
 
     auto item = addGroupProperty(P_FOOPTPRINT, "Footprint group");
     item->setDisplayName(footprint_group_label);
diff --git a/GUI/coregui/Models/BeamItems.h b/GUI/coregui/Models/BeamItems.h
index ef8889caa78..088e727c7f8 100644
--- a/GUI/coregui/Models/BeamItems.h
+++ b/GUI/coregui/Models/BeamItems.h
@@ -25,6 +25,7 @@ class BeamWavelengthItem;
 class FootprintItem;
 class GroupItem;
 class IAxis;
+class VectorItem;
 
 class BA_CORE_API_ BeamItem : public SessionItem {
 private:
@@ -32,9 +33,9 @@ private:
     static const QString P_WAVELENGTH;
     static const QString P_INCLINATION_ANGLE;
     static const QString P_AZIMUTHAL_ANGLE;
-public:
     static const QString P_POLARIZATION;
 
+public:
     ~BeamItem() override;
 
     double intensity() const;
@@ -53,6 +54,8 @@ public:
     void setAzimuthalAngle(double value);
     BeamAzimuthalAngleItem* azimuthalAngleItem() const;
 
+    VectorItem* polarizationItem() const;
+
     std::unique_ptr<Beam> createBeam() const;
 
 protected:
diff --git a/GUI/coregui/Models/TransformFromDomain.cpp b/GUI/coregui/Models/TransformFromDomain.cpp
index b33fe558160..2c2b8db6d1e 100644
--- a/GUI/coregui/Models/TransformFromDomain.cpp
+++ b/GUI/coregui/Models/TransformFromDomain.cpp
@@ -234,7 +234,7 @@ void TransformFromDomain::setGISASBeamItem(BeamItem* beam_item, const GISASSimul
     }
 
     // polarization parameters
-    beam_item->item<VectorItem>(BeamItem::P_POLARIZATION)->setVector(beam.getBlochVector());
+    beam_item->polarizationItem()->setVector(beam.getBlochVector());
 }
 
 void TransformFromDomain::setOffSpecularBeamItem(BeamItem* beam_item,
diff --git a/GUI/coregui/Views/InstrumentWidgets/PolarizationAnalysisEditor.cpp b/GUI/coregui/Views/InstrumentWidgets/PolarizationAnalysisEditor.cpp
index 4bf977cea5b..59f82fcd8ab 100644
--- a/GUI/coregui/Views/InstrumentWidgets/PolarizationAnalysisEditor.cpp
+++ b/GUI/coregui/Views/InstrumentWidgets/PolarizationAnalysisEditor.cpp
@@ -15,6 +15,7 @@
 #include "GUI/coregui/Views/InstrumentWidgets/PolarizationAnalysisEditor.h"
 #include "GUI/coregui/Models/DetectorItems.h"
 #include "GUI/coregui/Models/InstrumentItems.h"
+#include "GUI/coregui/Models/VectorItem.h"
 #include "GUI/coregui/Views/CommonWidgets/ColumnResizer.h"
 #include "GUI/coregui/Views/PropertyEditor/ComponentEditor.h"
 #include "GUI/coregui/utils/LayoutUtils.h"
@@ -54,7 +55,7 @@ PolarizationAnalysisEditor::PolarizationAnalysisEditor(ColumnResizer* columnResi
 
 void PolarizationAnalysisEditor::subscribeToItem()
 {
-    m_polarizationEditor->setItem(beamItem()->getItem(BeamItem::P_POLARIZATION));
+    m_polarizationEditor->setItem(beamItem()->polarizationItem());
 
     currentItem()->mapper()->setOnPropertyChange(
         [this](const QString& name) {
-- 
GitLab