Skip to content
Snippets Groups Projects
Commit 67d80252 authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

GroupItem revision and unit tests.

parent 3415a18e
No related branches found
No related tags found
No related merge requests found
...@@ -15,26 +15,21 @@ ...@@ -15,26 +15,21 @@
// ************************************************************************** // // ************************************************************************** //
#include "GroupItem.h" #include "GroupItem.h"
#include "GUIHelpers.h"
const QString GroupItem::T_ITEMS = "Item tag"; const QString GroupItem::T_ITEMS = "Item tag";
GroupItem::GroupItem() GroupItem::GroupItem() : SessionItem(Constants::GroupItemType)
:SessionItem(Constants::GroupItemType)
{ {
registerTag(T_ITEMS); registerTag(T_ITEMS);
setDefaultTag(T_ITEMS); setDefaultTag(T_ITEMS);
// mapper()->setOnChildPropertyChange(
// [this](SessionItem* item, const QString &name)
// {
// group()->setCurrentLabel(item->itemLabel());
//// emitDataChanged();
// });
} }
void GroupItem::setGroup(GroupProperty_t group) void GroupItem::setGroup(GroupProperty_t group)
{ {
if (value().isValid())
throw GUIHelpers::Error("GroupItem::setGroup() -> Error. Attempt to set group twice.");
group->setGroupItem(this); group->setGroupItem(this);
setValue(QVariant::fromValue(group)); setValue(QVariant::fromValue(group));
} }
...@@ -44,9 +39,16 @@ GroupProperty_t GroupItem::group() const ...@@ -44,9 +39,16 @@ GroupProperty_t GroupItem::group() const
return value().value<GroupProperty_t>(); return value().value<GroupProperty_t>();
} }
SessionItem *GroupItem::currentItem() SessionItem* GroupItem::currentItem()
{
return value().isValid() ? group()->getCurrentItem() : nullptr;
}
SessionItem* GroupItem::setCurrentType(const QString& modelType)
{ {
return group()->getCurrentItem(); GroupProperty_t group_property = group();
group_property->setCurrentType(modelType);
return currentItem();
} }
QStringList GroupItem::translateList(const QStringList& list) const QStringList GroupItem::translateList(const QStringList& list) const
......
...@@ -22,16 +22,17 @@ ...@@ -22,16 +22,17 @@
class BA_CORE_API_ GroupItem : public SessionItem class BA_CORE_API_ GroupItem : public SessionItem
{ {
public: public:
static const QString T_ITEMS; static const QString T_ITEMS;
GroupItem(); GroupItem();
void setGroup(GroupProperty_t group); void setGroup(GroupProperty_t group);
GroupProperty_t group() const; GroupProperty_t group() const;
SessionItem *currentItem(); SessionItem* currentItem();
QStringList translateList(const QStringList& list) const; SessionItem* setCurrentType(const QString& modelType);
QStringList translateList(const QStringList& list) const;
}; };
#endif // GROUPITEM_H #endif // GROUPITEM_H
......
...@@ -26,7 +26,7 @@ GroupProperty::GroupProperty(QString group_name) ...@@ -26,7 +26,7 @@ GroupProperty::GroupProperty(QString group_name)
SessionItem *GroupProperty::getCurrentItem() SessionItem *GroupProperty::getCurrentItem()
{ {
if(m_groupItem) return m_groupItem->getChildByName(this->getCurrentType()); if(m_groupItem) return m_groupItem->getChildByName(this->getCurrentType());
return 0; return nullptr;
} }
void GroupProperty::setGroupItem(SessionItem *groupItem) void GroupProperty::setGroupItem(SessionItem *groupItem)
...@@ -48,7 +48,7 @@ QString GroupProperty::getCurrentType() const ...@@ -48,7 +48,7 @@ QString GroupProperty::getCurrentType() const
return m_current_type; return m_current_type;
} }
void GroupProperty::setCurrentType(const QString &type, bool) void GroupProperty::setCurrentType(const QString &type)
{ {
if(type == getCurrentType()) return; if(type == getCurrentType()) return;
......
...@@ -36,7 +36,7 @@ public: ...@@ -36,7 +36,7 @@ public:
SessionItem *createCorrespondingItem(); SessionItem *createCorrespondingItem();
QString getCurrentType() const; QString getCurrentType() const;
void setCurrentType(const QString &type, bool = true); void setCurrentType(const QString &type);
QString getCurrentLabel() const; QString getCurrentLabel() const;
......
...@@ -28,6 +28,8 @@ ...@@ -28,6 +28,8 @@
#include "InterferenceFunction2DParaCrystal.h" #include "InterferenceFunction2DParaCrystal.h"
#include "InterferenceFunctionRadialParaCrystal.h" #include "InterferenceFunctionRadialParaCrystal.h"
#include "InterferenceFunction1DLattice.h" #include "InterferenceFunction1DLattice.h"
#include "GroupItem.h"
#include <QDebug>
InterferenceFunctionItem::InterferenceFunctionItem(const QString& modelType) InterferenceFunctionItem::InterferenceFunctionItem(const QString& modelType)
: SessionGraphicsItem(modelType) : SessionGraphicsItem(modelType)
...@@ -104,10 +106,15 @@ InterferenceFunction2DParaCrystalItem::InterferenceFunction2DParaCrystalItem() ...@@ -104,10 +106,15 @@ InterferenceFunction2DParaCrystalItem::InterferenceFunction2DParaCrystalItem()
} }
}); });
mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString&) { mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString& property) {
if (item->modelType() == Constants::GroupItemType) { if (item->modelType() == Constants::GroupItemType && item->displayName() ==
InterferenceFunction2DLatticeItem::P_LATTICE_TYPE) {
update_rotation_availability(); update_rotation_availability();
} }
// if (item->modelType() == Constants::GroupItemType && property == GroupItem::T_ITEMS && isTag(P_PDF1) && isTag(P_PDF2)) {
// qDebug() << item->modelType() << property;
// update_distribution_displaynames();
// }
}); });
} }
...@@ -145,6 +152,29 @@ void InterferenceFunction2DParaCrystalItem::update_rotation_availability() ...@@ -145,6 +152,29 @@ void InterferenceFunction2DParaCrystalItem::update_rotation_availability()
angleItem->setEnabled(!getItemValue(P_XI_INTEGRATION).toBool()); angleItem->setEnabled(!getItemValue(P_XI_INTEGRATION).toBool());
} }
//void InterferenceFunction2DParaCrystalItem::update_distribution_displaynames()
//{
// GroupItem *group1 = dynamic_cast<GroupItem*>(getItem(P_PDF1));
// GroupItem *group2 = dynamic_cast<GroupItem*>(getItem(P_PDF2));
// if(!group1 || !group2)
// return;
// SessionItem *pdf1 = group1->currentItem();
// SessionItem *pdf2 = group2->currentItem();
// if(pdf1 && pdf2) {
// qDebug() << pdf1->displayName() << pdf2->displayName();
// if(pdf1->modelType() == pdf2->modelType()) {
// pdf1->setDisplayName(pdf1->modelType()+QString::number(0));
// pdf2->setDisplayName(pdf2->modelType()+QString::number(1));
// } else {
// pdf1->setDisplayName(pdf1->modelType());
// pdf2->setDisplayName(pdf2->modelType());
// }
// }
//}
// --------------------------------------------------------------------------------------------- // // --------------------------------------------------------------------------------------------- //
const QString InterferenceFunction1DLatticeItem::P_LENGTH = const QString InterferenceFunction1DLatticeItem::P_LENGTH =
......
...@@ -55,6 +55,7 @@ public: ...@@ -55,6 +55,7 @@ public:
std::unique_ptr<IInterferenceFunction> createInterferenceFunction() const; std::unique_ptr<IInterferenceFunction> createInterferenceFunction() const;
private: private:
void update_rotation_availability(); void update_rotation_availability();
// void update_distribution_displaynames();
}; };
class BA_CORE_API_ InterferenceFunction1DLatticeItem : public InterferenceFunctionItem class BA_CORE_API_ InterferenceFunction1DLatticeItem : public InterferenceFunctionItem
......
...@@ -500,11 +500,9 @@ SessionItem *SessionItem::getGroupItem(const QString &name, const QString &type) ...@@ -500,11 +500,9 @@ SessionItem *SessionItem::getGroupItem(const QString &name, const QString &type)
SessionItem *SessionItem::setGroupProperty(const QString &name, const QString &value) const SessionItem *SessionItem::setGroupProperty(const QString &name, const QString &value) const
{ {
if (GroupItem *item = dynamic_cast<GroupItem *>(getItem(name))) { if (GroupItem *item = dynamic_cast<GroupItem *>(getItem(name)))
GroupProperty_t group_property = item->group(); return item->setCurrentType(value);
group_property->setCurrentType(value);
return group_property->getCurrentItem();
}
return nullptr; return nullptr;
} }
......
...@@ -21,9 +21,9 @@ bool run_tests() { ...@@ -21,9 +21,9 @@ bool run_tests() {
std::vector<std::pair<std::string, std::string>> conditions = { std::vector<std::pair<std::string, std::string>> conditions = {
// {"BasicGISAS", "CylindersAndPrismsBuilder"}, // {"BasicGISAS", "CylindersAndPrismsBuilder"},
{"BasicGISAS", "RotatedPyramidsBuilder"}, // {"BasicGISAS", "RotatedPyramidsBuilder"},
// {"BasicGISAS", "RadialParaCrystalBuilder"}, // {"BasicGISAS", "RadialParaCrystalBuilder"},
// {"BasicGISAS", "Basic2DParaCrystalBuilder"}, {"BasicGISAS", "Basic2DParaCrystalBuilder"},
// {"BasicGISAS", "Lattice1DBuilder"}, // {"BasicGISAS", "Lattice1DBuilder"},
// {"BasicGISAS", "Basic2DLatticeBuilder"}, // {"BasicGISAS", "Basic2DLatticeBuilder"},
// {"BasicGISAS", "SquareLatticeBuilder"}, // {"BasicGISAS", "SquareLatticeBuilder"},
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "TestMaterialModel.h" #include "TestMaterialModel.h"
#include "TestComboProperty.h" #include "TestComboProperty.h"
#include "TestTranslations.h" #include "TestTranslations.h"
#include "TestGroupProperty.h"
int main(int argc, char** argv) { int main(int argc, char** argv) {
QCoreApplication app(argc, argv); QCoreApplication app(argc, argv);
...@@ -42,6 +43,7 @@ int main(int argc, char** argv) { ...@@ -42,6 +43,7 @@ int main(int argc, char** argv) {
TestMaterialModel testMaterialModel; TestMaterialModel testMaterialModel;
TestComboProperty testComboProperty; TestComboProperty testComboProperty;
TestTranslations testTranslations; TestTranslations testTranslations;
TestGroupProperty testGroupProperty;
bool status(false); bool status(false);
...@@ -63,6 +65,7 @@ int main(int argc, char** argv) { ...@@ -63,6 +65,7 @@ int main(int argc, char** argv) {
status |= QTest::qExec(&testMaterialModel, argc, argv); status |= QTest::qExec(&testMaterialModel, argc, argv);
status |= QTest::qExec(&testComboProperty, argc, argv); status |= QTest::qExec(&testComboProperty, argc, argv);
status |= QTest::qExec(&testTranslations, argc, argv); status |= QTest::qExec(&testTranslations, argc, argv);
status |= QTest::qExec(&testGroupProperty, argc, argv);
return status; return status;
} }
#include <QtTest>
#include <QDebug>
#include "GroupItem.h"
#include "GroupPropertyRegistry.h"
#include "GUIHelpers.h"
#include "verify_throw_macro.h"
class TestGroupProperty : public QObject {
Q_OBJECT
private slots:
void test_CreateGroup();
};
inline void TestGroupProperty::test_CreateGroup()
{
GroupProperty_t property = GroupPropertyRegistry::createGroupProperty(
"MyGroupProperty", Constants::DistributionGroup);
QCOMPARE(property->getCurrentType(), Constants::DistributionCosineType);
GroupItem groupItem;
QCOMPARE(groupItem.childItems().size(), 0);
QVERIFY(groupItem.currentItem() == nullptr);
// setting group property
groupItem.setGroup(property);
QCOMPARE(groupItem.childItems().size(), 1);
QCOMPARE(groupItem.childItems()[0], groupItem.currentItem());
QCOMPARE(groupItem.currentItem()->modelType(), Constants::DistributionCosineType);
// setting group property twice
QVERIFY_THROW(groupItem.setGroup(property), GUIHelpers::Error);
// changing current item
SessionItem *newItem = groupItem.setCurrentType(Constants::DistributionNoneType);
QCOMPARE(newItem, groupItem.currentItem());
QCOMPARE(newItem->modelType(), Constants::DistributionNoneType);
QCOMPARE(groupItem.childItems().size(), 2);
}
//GroupProperty_t group_property = item->group();
//group_property->setCurrentType(value);
//return group_property->getCurrentItem();
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment