From 6ad643d5994e80927f2c84999bbf3caa06ce11ff Mon Sep 17 00:00:00 2001
From: Gennady Pospelov <g.pospelov@fz-juelich.de>
Date: Wed, 21 May 2014 14:39:39 +0200
Subject: [PATCH] ParameterizedItem name is added to the properties.

---
 GUI/coregui/Models/MultiLayerItem.cpp         |  2 +
 GUI/coregui/Models/ParameterizedItem.cpp      | 48 ++++++++++++++-----
 GUI/coregui/Models/ParameterizedItem.h        |  8 ++--
 .../MaterialEditor/MaterialVariantFactory.cpp |  7 +++
 .../MaterialEditor/MaterialVariantFactory.h   |  2 +
 .../SampleDesigner/PropertyVariantFactory.cpp |  5 ++
 .../SampleDesigner/PropertyVariantFactory.h   |  2 +
 7 files changed, 59 insertions(+), 15 deletions(-)

diff --git a/GUI/coregui/Models/MultiLayerItem.cpp b/GUI/coregui/Models/MultiLayerItem.cpp
index 02c9e119c4e..7eeac5c7e17 100644
--- a/GUI/coregui/Models/MultiLayerItem.cpp
+++ b/GUI/coregui/Models/MultiLayerItem.cpp
@@ -23,6 +23,8 @@ MultiLayerItem::MultiLayerItem(ParameterizedItem *parent)
     registerProperty(P_CROSS_CORR_LENGTH, 0.0);
     m_valid_children.append(QString("Layer"));
     m_valid_children.append(QString("MultiLayer"));
+
+    setPropertyVisibility(ParameterizedItem::P_NAME, ParameterizedItem::VisibleProperty);
 }
 
 MultiLayerItem::~MultiLayerItem()
diff --git a/GUI/coregui/Models/ParameterizedItem.cpp b/GUI/coregui/Models/ParameterizedItem.cpp
index e92f21d0bc4..531299c18cf 100644
--- a/GUI/coregui/Models/ParameterizedItem.cpp
+++ b/GUI/coregui/Models/ParameterizedItem.cpp
@@ -24,13 +24,37 @@
 #include <QMetaEnum>
 #include <PropertyVariantManager.h>
 
+const QString ParameterizedItem::P_NAME = "Name";
 
+ParameterizedItem::ParameterizedItem(const QString &model_type,
+                                     ParameterizedItem *parent)
+    : m_model_type(model_type)
+    , m_parent(parent)
+    , m_block_property_change_event(false)
+{
+    if (m_parent) {
+        m_parent->addChildItem(this);
+    }
+
+    registerProperty(P_NAME, QString(), QString(), HiddenProperty);
+    setItemName(m_model_type);
+}
 
 ParameterizedItem::~ParameterizedItem()
 {
     qDeleteAll(m_children);
 }
 
+QString ParameterizedItem::itemName() const
+{
+    return getRegisteredProperty(P_NAME).toString();
+}
+
+void ParameterizedItem::setItemName(const QString &item_name)
+{
+    setRegisteredProperty(P_NAME, item_name);
+}
+
 ParameterizedItem *ParameterizedItem::takeChildItem(int row)
 {
     ParameterizedItem *item = m_children.takeAt(row);
@@ -55,6 +79,7 @@ bool ParameterizedItem::event(QEvent * e )
         if (m_sub_items.contains(name)) {
             updatePropertyItem(name);
         }
+        qDebug() << " xxxxxxxxxxxxxxxxx propertyChanged->e,it";
         emit propertyChanged(name);
     }
     return QObject::event(e);
@@ -93,18 +118,6 @@ ParameterizedItem *ParameterizedItem::createPropertyItem(QString name)
     return result;
 }
 
-ParameterizedItem::ParameterizedItem(const QString &model_type,
-                                     ParameterizedItem *parent)
-    : m_model_type(model_type)
-    , m_parent(parent)
-    , m_block_property_change_event(false)
-{
-    if (m_parent) {
-        m_parent->addChildItem(this);
-    }
-    setItemName(m_model_type);
-}
-
 void ParameterizedItem::updatePropertyItem(QString name)
 {
     qDebug() << "ParameterizedItem::updatePropertyItem() ";
@@ -214,3 +227,14 @@ QString ParameterizedItem::getPropertyToolTip(const QString &name) const
 {
     return m_property_tooltip[name];
 }
+
+
+void ParameterizedItem::setPropertyVisibility(const QString &name, PropertyVisibility visibility)
+{
+    if(m_hidden_properties.contains(name)) {
+        if(visibility == VisibleProperty) m_hidden_properties.removeAll(name);
+    } else {
+        if(visibility == HiddenProperty) m_hidden_properties << name;
+
+    }
+}
diff --git a/GUI/coregui/Models/ParameterizedItem.h b/GUI/coregui/Models/ParameterizedItem.h
index 1e72403dbbe..23775e52153 100644
--- a/GUI/coregui/Models/ParameterizedItem.h
+++ b/GUI/coregui/Models/ParameterizedItem.h
@@ -28,16 +28,17 @@ class ParameterizedItem : public QObject
 {
     Q_OBJECT
 public:
+    static const QString P_NAME;
     virtual ~ParameterizedItem();
 
     //! retrieves the model type
     QString modelType() const { return m_model_type; }
 
     //! retrieves the item's name
-    QString itemName() const { return m_item_name; }
+    QString itemName() const;
 
     //! sets the item's name
-    void setItemName(const QString &item_name) { m_item_name = item_name; }
+    void setItemName(const QString &item_name);
 
     //! retrieve parent item
     ParameterizedItem *parent() const { return m_parent; }
@@ -112,6 +113,7 @@ public:
     void setBlockPropertyChangeEvent(bool flag) {m_block_property_change_event = flag; }
     bool getBlockPropertyChangeEvent() const { return m_block_property_change_event; }
 
+    void setPropertyVisibility(const QString &name, PropertyVisibility visibility);
 signals:
     void propertyChanged(QString propertyName);
     void propertyItemChanged(QString propertyName);
@@ -126,7 +128,7 @@ protected:
 
 private:
     QString m_model_type;
-    QString m_item_name;
+    //QString m_item_name;
     ParameterizedItem *m_parent;
     QList<ParameterizedItem *> m_children;
     QMap<QString, ParameterizedItem *> m_sub_items;
diff --git a/GUI/coregui/Views/Components/MaterialEditor/MaterialVariantFactory.cpp b/GUI/coregui/Views/Components/MaterialEditor/MaterialVariantFactory.cpp
index c5ef3527ec5..94683c24771 100644
--- a/GUI/coregui/Views/Components/MaterialEditor/MaterialVariantFactory.cpp
+++ b/GUI/coregui/Views/Components/MaterialEditor/MaterialVariantFactory.cpp
@@ -117,3 +117,10 @@ void MaterialVariantFactory::slotEditorDestroyed(QObject *object)
     }
 }
 
+
+void MaterialVariantFactory::slotPropertyAttributeChanged(QtProperty *, const QString &, const QVariant &)
+{
+
+}
+
+
diff --git a/GUI/coregui/Views/Components/MaterialEditor/MaterialVariantFactory.h b/GUI/coregui/Views/Components/MaterialEditor/MaterialVariantFactory.h
index 644213ba929..a430d427105 100644
--- a/GUI/coregui/Views/Components/MaterialEditor/MaterialVariantFactory.h
+++ b/GUI/coregui/Views/Components/MaterialEditor/MaterialVariantFactory.h
@@ -28,6 +28,8 @@ private slots:
     void slotPropertyChanged(QtProperty *property, const QVariant &value);
     void slotSetValue(const MaterialColorProperty &value);
     void slotEditorDestroyed(QObject *object);
+    void slotPropertyAttributeChanged(QtProperty *, const QString &, const QVariant &);
+
 private:
     QMap<QtProperty *, QList<MaterialColorPropertyEdit *> >
         m_property_to_material_editors;
diff --git a/GUI/coregui/Views/Components/SampleDesigner/PropertyVariantFactory.cpp b/GUI/coregui/Views/Components/SampleDesigner/PropertyVariantFactory.cpp
index 91bdbd0f33c..164c1fcadef 100644
--- a/GUI/coregui/Views/Components/SampleDesigner/PropertyVariantFactory.cpp
+++ b/GUI/coregui/Views/Components/SampleDesigner/PropertyVariantFactory.cpp
@@ -180,3 +180,8 @@ void PropertyVariantFactory::slotEditorDestroyed(QObject *object)
     }
 }
 
+void PropertyVariantFactory::slotPropertyAttributeChanged(QtProperty *, const QString &, const QVariant &)
+{
+
+}
+
diff --git a/GUI/coregui/Views/Components/SampleDesigner/PropertyVariantFactory.h b/GUI/coregui/Views/Components/SampleDesigner/PropertyVariantFactory.h
index f099d2b77d8..b6d438dc368 100644
--- a/GUI/coregui/Views/Components/SampleDesigner/PropertyVariantFactory.h
+++ b/GUI/coregui/Views/Components/SampleDesigner/PropertyVariantFactory.h
@@ -32,6 +32,8 @@ private slots:
     void slotSetValue(const MaterialProperty &value);
     void slotSetValue(const GroupProperty &value);
     void slotEditorDestroyed(QObject *object);
+    void slotPropertyAttributeChanged(QtProperty *, const QString &, const QVariant &);
+
 private:
     QMap<QtProperty *, QList<MaterialPropertyEdit *> >
         m_property_to_material_editors;
-- 
GitLab