From 57fb4fcee6eea4dbbd64b4bbf97614abe5d5a219 Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Wed, 6 Dec 2017 15:59:06 +0100 Subject: [PATCH] GroupProperty renamed to GroupItemController --- GUI/coregui/Models/GroupItem.cpp | 62 +++++++------------ GUI/coregui/Models/GroupItem.h | 8 +-- ...upProperty.cpp => GroupItemController.cpp} | 40 ++++++------ ...{GroupProperty.h => GroupItemController.h} | 20 +++--- GUI/coregui/Models/GroupPropertyRegistry.h | 2 +- GUI/coregui/Models/SessionModelDelegate.h | 1 - GUI/coregui/Models/SessionXML.cpp | 1 + .../Views/PropertyEditor/CustomEditors.cpp | 2 +- .../ObsoleteComponentEditor.cpp | 2 +- .../ObsoletePropertyBrowserUtils.h | 2 +- .../ObsoletePropertyVariantFactory.h | 2 +- .../ObsoletePropertyVariantManager.h | 2 +- .../PropertyEditor/PropertyEditorFactory.cpp | 2 +- .../Views/SampleDesigner/ParticleView.cpp | 1 - Tests/UnitTests/GUI/TestParaCrystalItems.h | 2 +- 15 files changed, 63 insertions(+), 86 deletions(-) rename GUI/coregui/Models/{GroupProperty.cpp => GroupItemController.cpp} (71%) rename GUI/coregui/Models/{GroupProperty.h => GroupItemController.h} (80%) diff --git a/GUI/coregui/Models/GroupItem.cpp b/GUI/coregui/Models/GroupItem.cpp index 9b6332396db..570eaa64dce 100644 --- a/GUI/coregui/Models/GroupItem.cpp +++ b/GUI/coregui/Models/GroupItem.cpp @@ -16,16 +16,17 @@ #include "GroupItem.h" #include "GUIHelpers.h" +#include "GroupItemController.h" #include "ComboProperty.h" #include <QDebug> #include "GUIHelpers.h" namespace { -QVariant createCombo(ObsoleteGroupProperty_t groupProperty) +QVariant createCombo(const GroupItemController& groupProperty) { ComboProperty result; - result.setValues(groupProperty->itemLabels()); - result.setCurrentIndex(groupProperty->currentIndex()); + result.setValues(groupProperty.itemLabels()); + result.setCurrentIndex(groupProperty.currentIndex()); return result.variant(); } @@ -41,45 +42,34 @@ GroupItem::GroupItem() : SessionItem(Constants::GroupItemType) mapper()->setOnValueChange([this]() { onValueChange(); }); } +GroupItem::~GroupItem(){} + void GroupItem::setGroupInfo(const GroupInfo& groupInfo) { - if (m_groupProperty) + if (m_controller) throw GUIHelpers::Error("GroupItem::setGroup() -> Error. Attempt to set group twice."); - ObsoleteGroupProperty_t prop(new GroupProperty); - prop->setGroupInfo(groupInfo); - - prop->setGroupItem(this); - m_groupProperty = prop; - - updateValue(); + m_controller.reset(new GroupItemController); + m_controller->setGroupInfo(groupInfo); + m_controller->setGroupItem(this); -// setValue(QVariant::fromValue(groupProperty)); + updateComboValue(); } SessionItem* GroupItem::currentItem() const { -// return value().isValid() ? groupProperty()->currentItem() : nullptr; - return groupProperty() ? groupProperty()->currentItem() : nullptr; + return m_controller ? m_controller->currentItem() : nullptr; } QString GroupItem::currentType() const { - return groupProperty()->currentType(); + return m_controller->currentType(); } -#include <QDebug> SessionItem* GroupItem::setCurrentType(const QString& modelType) { - qDebug() << "GroupItem::setCurrentType -> current" - << groupProperty()->currentType() << groupProperty()->currentIndex(); - qDebug() << " setting" << modelType; - groupProperty()->setCurrentType(modelType); - qDebug() << "GroupItem::setCurrentType -> current" - << groupProperty()->currentType() << groupProperty()->currentIndex(); - - updateValue(); - + m_controller->setCurrentType(modelType); + updateComboValue(); return currentItem(); } @@ -89,19 +79,9 @@ QStringList GroupItem::translateList(const QStringList& list) const return list; } -ObsoleteGroupProperty_t GroupItem::groupProperty() const -{ - return m_groupProperty; -// return value().value<GroupProperty_t>(); -} - SessionItem* GroupItem::getItemOfType(const QString& type) { - SessionItem* result = groupProperty()->getItemOfType(type); - -// setValue(createCombo(groupProperty())); - - return result; + return m_controller->getItemOfType(type); } void GroupItem::onValueChange() @@ -112,18 +92,18 @@ void GroupItem::onValueChange() qDebug() << "GroupItem::onValueChange()"; ComboProperty property = value().value<ComboProperty>(); - if (property.currentIndex() != m_groupProperty->currentIndex()) { + if (property.currentIndex() != m_controller->currentIndex()) { qDebug() << "GroupItem::onValueChange() -> setting index" << property.currentIndex(); - m_groupProperty->setCurrentIndex(property.currentIndex()); + m_controller->setCurrentIndex(property.currentIndex()); // because of the delay between ComboProperty change and the change in GroupItem here, // we have to emit signals once again to inform other views (i.e. views other than the view - // were property was changed + // were property was changed) emitDataChanged(Qt::DisplayRole | Qt::EditRole); } } -void GroupItem::updateValue() +void GroupItem::updateComboValue() { - setValue(createCombo(groupProperty())); + setValue(createCombo(*m_controller.get())); } diff --git a/GUI/coregui/Models/GroupItem.h b/GUI/coregui/Models/GroupItem.h index 125c3788f12..9aafb6b0260 100644 --- a/GUI/coregui/Models/GroupItem.h +++ b/GUI/coregui/Models/GroupItem.h @@ -18,17 +18,18 @@ #define GROUPITEM_H #include "SessionItem.h" -#include "GroupProperty.h" #include "GroupInfo.h" #include <memory> class GroupInfo; +class GroupItemController; class BA_CORE_API_ GroupItem : public SessionItem { public: static const QString T_ITEMS; GroupItem(); + ~GroupItem(); void setGroupInfo(const GroupInfo& groupInfo); SessionItem* currentItem() const; @@ -43,9 +44,8 @@ public: private: void onValueChange(); - void updateValue(); - ObsoleteGroupProperty_t groupProperty() const; - ObsoleteGroupProperty_t m_groupProperty; + void updateComboValue(); + std::unique_ptr<GroupItemController> m_controller; }; #endif // GROUPITEM_H diff --git a/GUI/coregui/Models/GroupProperty.cpp b/GUI/coregui/Models/GroupItemController.cpp similarity index 71% rename from GUI/coregui/Models/GroupProperty.cpp rename to GUI/coregui/Models/GroupItemController.cpp index 0c76bdd2449..030ee7ff4c5 100644 --- a/GUI/coregui/Models/GroupProperty.cpp +++ b/GUI/coregui/Models/GroupItemController.cpp @@ -2,8 +2,8 @@ // // BornAgain: simulate and fit scattering at grazing incidence // -//! @file GUI/coregui/Models/GroupProperty.cpp -//! @brief Implements class GroupProperty +//! @file GUI/coregui/Models/GroupItemController.cpp +//! @brief Implements class GroupItemController //! //! @homepage http://www.bornagainproject.org //! @license GNU General Public License v3 or higher (see COPYING) @@ -14,20 +14,20 @@ // // ************************************************************************** // -#include "GroupProperty.h" +#include "GroupItemController.h" #include "ItemFactory.h" -GroupProperty::GroupProperty() +GroupItemController::GroupItemController() : m_groupItem(nullptr) { } -SessionItem* GroupProperty::currentItem() +SessionItem* GroupItemController::currentItem() { return m_groupItem ? m_groupItem->getChildOfType(currentType()) : nullptr; } -void GroupProperty::setGroupItem(SessionItem* groupItem) +void GroupItemController::setGroupItem(SessionItem* groupItem) { Q_ASSERT(groupItem); m_groupItem = groupItem; @@ -35,12 +35,12 @@ void GroupProperty::setGroupItem(SessionItem* groupItem) m_groupItem->insertItem(-1, item); } -QString GroupProperty::currentType() const +QString GroupItemController::currentType() const { return m_current_type; } -void GroupProperty::setCurrentType(const QString& type) +void GroupItemController::setCurrentType(const QString& type) { if (type == currentType()) return; @@ -64,7 +64,7 @@ void GroupProperty::setCurrentType(const QString& type) } } -void GroupProperty::setCurrentTypeName(const QString& type) +void GroupItemController::setCurrentTypeName(const QString& type) { if (type == currentType()) return; @@ -77,7 +77,7 @@ void GroupProperty::setCurrentTypeName(const QString& type) } } -SessionItem* GroupProperty::getItemOfType(const QString& type) +SessionItem* GroupItemController::getItemOfType(const QString& type) { if (m_groupItem) { if (auto item = m_groupItem->getChildOfType(type)) { @@ -96,53 +96,53 @@ SessionItem* GroupProperty::getItemOfType(const QString& type) return nullptr; } -int GroupProperty::currentIndex() const +int GroupItemController::currentIndex() const { return toIndex(m_current_type); } -void GroupProperty::setCurrentIndex(int index) +void GroupItemController::setCurrentIndex(int index) { setCurrentType(toString(index)); } -QString GroupProperty::currentLabel() const +QString GroupItemController::currentLabel() const { return itemLabels().at(currentIndex()); } -QStringList GroupProperty::itemTypes() const +QStringList GroupItemController::itemTypes() const { return m_groupInfo.itemTypes(); } -QStringList GroupProperty::itemLabels() const +QStringList GroupItemController::itemLabels() const { return m_groupInfo.itemLabels(); } -void GroupProperty::setGroupInfo(GroupInfo groupInfo) +void GroupItemController::setGroupInfo(GroupInfo groupInfo) { m_groupInfo = std::move(groupInfo); setCurrentType(m_groupInfo.defaultType()); } -SessionItem* GroupProperty::addItem(const QString& item_type) +SessionItem* GroupItemController::addItem(const QString& item_type) { return ItemFactory::createItem(item_type); } -SessionItem* GroupProperty::createCorrespondingItem() +SessionItem* GroupItemController::createCorrespondingItem() { return addItem(currentType()); } -int GroupProperty::toIndex(const QString& type) const +int GroupItemController::toIndex(const QString& type) const { return itemTypes().indexOf(type); } -QString GroupProperty::toString(int index) const +QString GroupItemController::toString(int index) const { return itemTypes().at(index); } diff --git a/GUI/coregui/Models/GroupProperty.h b/GUI/coregui/Models/GroupItemController.h similarity index 80% rename from GUI/coregui/Models/GroupProperty.h rename to GUI/coregui/Models/GroupItemController.h index 6b0a289c6a6..a7d78f45a82 100644 --- a/GUI/coregui/Models/GroupProperty.h +++ b/GUI/coregui/Models/GroupItemController.h @@ -2,8 +2,8 @@ // // BornAgain: simulate and fit scattering at grazing incidence // -//! @file GUI/coregui/Models/GroupProperty.h -//! @brief Defines class GroupProperty +//! @file GUI/coregui/Models/GroupItemController.h +//! @brief Defines class GroupItemController //! //! @homepage http://www.bornagainproject.org //! @license GNU General Public License v3 or higher (see COPYING) @@ -14,8 +14,8 @@ // // ************************************************************************** // -#ifndef GROUPPROPERTY_H -#define GROUPPROPERTY_H +#ifndef GROUPITEMCONTROLLER_H +#define GROUPITEMCONTROLLER_H #include "GroupInfo.h" #include <QSharedPointer> @@ -24,13 +24,10 @@ class SessionItem; //! Provides logic for manipulating items belonging to GroupItem parent. -//! Its construction is handled by a GroupPropertyRegistry object. -class BA_CORE_API_ GroupProperty +class BA_CORE_API_ GroupItemController { public: - friend class GroupPropertyRegistry; - void setGroupItem(SessionItem* groupItem); SessionItem* currentItem(); @@ -49,7 +46,7 @@ public: QStringList itemTypes() const; QStringList itemLabels() const; - GroupProperty(); + GroupItemController(); void setGroupInfo(GroupInfo groupInfo); private: @@ -64,7 +61,8 @@ private: GroupInfo m_groupInfo; }; -typedef QSharedPointer<GroupProperty> ObsoleteGroupProperty_t; +// TODO Remove simultaneously with qtpropertybrowserframework +typedef QSharedPointer<GroupItemController> ObsoleteGroupProperty_t; Q_DECLARE_METATYPE(ObsoleteGroupProperty_t) -#endif // GROUPPROPERTY_H +#endif // GROUPITEMCONTROLLER_H diff --git a/GUI/coregui/Models/GroupPropertyRegistry.h b/GUI/coregui/Models/GroupPropertyRegistry.h index 57d3f84873b..67237b5b12a 100644 --- a/GUI/coregui/Models/GroupPropertyRegistry.h +++ b/GUI/coregui/Models/GroupPropertyRegistry.h @@ -17,7 +17,7 @@ #ifndef GROUPPROPERTYREGISTRY_H #define GROUPPROPERTYREGISTRY_H -#include "GroupProperty.h" +#include "GroupItemController.h" #include "GroupInfoCatalogue.h" #include "item_constants.h" diff --git a/GUI/coregui/Models/SessionModelDelegate.h b/GUI/coregui/Models/SessionModelDelegate.h index ec02ac81fa1..82f68d149ae 100644 --- a/GUI/coregui/Models/SessionModelDelegate.h +++ b/GUI/coregui/Models/SessionModelDelegate.h @@ -18,7 +18,6 @@ #define SESSIONMODELDELEGATE_H #include "WinDllMacros.h" -#include "GroupProperty.h" #include <QStyledItemDelegate> //! The SessionModelDelegate class presents the content of SessionModel items in diff --git a/GUI/coregui/Models/SessionXML.cpp b/GUI/coregui/Models/SessionXML.cpp index efdd1559bd5..7d6defcc325 100644 --- a/GUI/coregui/Models/SessionXML.cpp +++ b/GUI/coregui/Models/SessionXML.cpp @@ -20,6 +20,7 @@ #include "GroupItem.h" #include "ItemFactory.h" #include "ExternalProperty.h" +#include "GroupItemController.h" #include "SessionModel.h" #include "WarningMessageService.h" #include <QtCore/QXmlStreamWriter> diff --git a/GUI/coregui/Views/PropertyEditor/CustomEditors.cpp b/GUI/coregui/Views/PropertyEditor/CustomEditors.cpp index 97f2e5c016e..5b2085fc9d2 100644 --- a/GUI/coregui/Views/PropertyEditor/CustomEditors.cpp +++ b/GUI/coregui/Views/PropertyEditor/CustomEditors.cpp @@ -17,7 +17,7 @@ #include "CustomEditors.h" #include "CustomEventFilters.h" #include "ExternalProperty.h" -#include "GroupProperty.h" +#include "GroupItemController.h" #include "ComboProperty.h" #include "ObsoleteColorProperty.h" #include "MaterialItemUtils.h" diff --git a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditor.cpp b/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditor.cpp index 440e975566c..427d608dfd8 100644 --- a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditor.cpp +++ b/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditor.cpp @@ -16,7 +16,7 @@ #include "ObsoleteComponentEditor.h" #include "ObsoleteComponentEditorPrivate.h" #include "GroupItem.h" -#include "GroupProperty.h" +#include "GroupItemController.h" #include "SessionItem.h" #include "SessionModel.h" #include "qtpropertybrowser.h" diff --git a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyBrowserUtils.h b/GUI/coregui/Views/PropertyEditor/ObsoletePropertyBrowserUtils.h index f0a6c68cbf0..9d082894770 100644 --- a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyBrowserUtils.h +++ b/GUI/coregui/Views/PropertyEditor/ObsoletePropertyBrowserUtils.h @@ -21,7 +21,7 @@ #include "ExternalProperty.h" #include "ObsoleteColorProperty.h" #include "ObsoleteScientificDoubleProperty.h" -#include "GroupProperty.h" +#include "GroupItemController.h" #include "ComboProperty.h" class QLabel; diff --git a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantFactory.h b/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantFactory.h index d6b894b6695..e37002e0da8 100644 --- a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantFactory.h +++ b/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantFactory.h @@ -19,7 +19,7 @@ //! collection of classes extending QtPropertyBrowser functionality -#include "GroupProperty.h" +#include "GroupItemController.h" #include <QtVariantEditorFactory> class ObsoleteMaterialPropertyEdit; diff --git a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantManager.h b/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantManager.h index edfecc75f5f..04c7b71aa40 100644 --- a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantManager.h +++ b/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantManager.h @@ -21,7 +21,7 @@ #include "ObsoleteColorProperty.h" #include "ComboProperty.h" -#include "GroupProperty.h" +#include "GroupItemController.h" #include "ExternalProperty.h" #include "ObsoleteScientificDoubleProperty.h" #include <QtVariantPropertyManager> diff --git a/GUI/coregui/Views/PropertyEditor/PropertyEditorFactory.cpp b/GUI/coregui/Views/PropertyEditor/PropertyEditorFactory.cpp index 95fe158d55e..0039b950468 100644 --- a/GUI/coregui/Views/PropertyEditor/PropertyEditorFactory.cpp +++ b/GUI/coregui/Views/PropertyEditor/PropertyEditorFactory.cpp @@ -18,7 +18,7 @@ #include "SessionItem.h" #include "RealLimits.h" #include "ExternalProperty.h" -#include "GroupProperty.h" +#include "GroupItemController.h" #include "CustomEditors.h" #include "ComboProperty.h" #include "CustomEventFilters.h" diff --git a/GUI/coregui/Views/SampleDesigner/ParticleView.cpp b/GUI/coregui/Views/SampleDesigner/ParticleView.cpp index b5e40323699..99988fe0c04 100644 --- a/GUI/coregui/Views/SampleDesigner/ParticleView.cpp +++ b/GUI/coregui/Views/SampleDesigner/ParticleView.cpp @@ -17,7 +17,6 @@ #include "ParticleView.h" #include "GUIHelpers.h" #include "GroupItem.h" -#include "GroupProperty.h" #include "ParticleItem.h" #include "FormFactorItems.h" #include <QObject> diff --git a/Tests/UnitTests/GUI/TestParaCrystalItems.h b/Tests/UnitTests/GUI/TestParaCrystalItems.h index 19da5800620..c6afd008803 100644 --- a/Tests/UnitTests/GUI/TestParaCrystalItems.h +++ b/Tests/UnitTests/GUI/TestParaCrystalItems.h @@ -1,6 +1,5 @@ #include <QtTest> #include "InterferenceFunctionItems.h" -#include "GroupProperty.h" #include "InterferenceFunction2DParaCrystal.h" #include "FTDistributions2D.h" #include "FTDistributionItems.h" @@ -9,6 +8,7 @@ #include "Lattice2DItems.h" #include "SampleModel.h" #include "Units.h" +#include "item_constants.h" class TestParaCrystalItems : public QObject { Q_OBJECT -- GitLab