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

Properties of nested group property now are shown in editor.

parent d60be38a
No related branches found
No related tags found
No related merge requests found
...@@ -33,12 +33,19 @@ bool ComponentProxyStrategy::processSourceIndex(const QModelIndex& index) ...@@ -33,12 +33,19 @@ bool ComponentProxyStrategy::processSourceIndex(const QModelIndex& index)
SessionItem* item = m_source->itemForIndex(index); SessionItem* item = m_source->itemForIndex(index);
QString tag;
if (item->parent())
tag = item->parent()->tagFromItem(item);
if ( !isPropertyRelated(item)) if ( !isPropertyRelated(item))
return false; // not going to visit non-property items return false; // not going to visit non-property items
if (isNewRootItem(item)) { if (isNewRootItem(item)) {
processRootItem(item, sourceIndex); processRootItem(item, sourceIndex);
} else if (isSubGroup(item)) {
processSubGroupItem(item, sourceIndex);
} else if (isGroupChildren(item)) { } else if (isGroupChildren(item)) {
processGroupItem(item, sourceIndex); processGroupItem(item, sourceIndex);
...@@ -82,6 +89,19 @@ void ComponentProxyStrategy::processRootItem(SessionItem* item, ...@@ -82,6 +89,19 @@ void ComponentProxyStrategy::processRootItem(SessionItem* item,
m_proxySourceParent.insert(proxyIndex, QModelIndex()); // new parent will be root m_proxySourceParent.insert(proxyIndex, QModelIndex()); // new parent will be root
} }
//! Returns true if item is a group property which in turn is inside of another group property.
bool ComponentProxyStrategy::isSubGroup(SessionItem* item)
{
const SessionItem* ancestor = ModelPath::ancestor(item->parent(), Constants::GroupItemType);
if (item->modelType() == Constants::GroupItemType && ancestor &&
ancestor->modelType() == Constants::GroupItemType) {
return true;
}
return false;
}
//! Returns true if item is a children/grandchildrent of some group item. //! Returns true if item is a children/grandchildrent of some group item.
bool ComponentProxyStrategy::isGroupChildren(SessionItem* item) bool ComponentProxyStrategy::isGroupChildren(SessionItem* item)
...@@ -107,7 +127,27 @@ void ComponentProxyStrategy::processGroupItem(SessionItem* item, ...@@ -107,7 +127,27 @@ void ComponentProxyStrategy::processGroupItem(SessionItem* item,
return; return;
auto groupItem = dynamic_cast<const GroupItem*>(ancestor); auto groupItem = dynamic_cast<const GroupItem*>(ancestor);
if (item->parent() == groupItem->currentItem() && item->isVisible()) { if (item->parent() == groupItem->currentItem()) {
QPersistentModelIndex proxyIndex
= createProxyIndex(SessionItemUtils::ParentVisibleRow(*item), sourceIndex.column(), sourceIndex.internalPointer());
m_sourceToProxy.insert(sourceIndex, proxyIndex);
m_proxySourceParent.insert(proxyIndex, groupItem->index());
}
}
}
//! Process group property which is inside of other group property.
void ComponentProxyStrategy::processSubGroupItem(SessionItem* item,
const QPersistentModelIndex& sourceIndex)
{
if(const SessionItem* ancestor = ModelPath::ancestor(item->parent(), Constants::GroupItemType)) {
auto groupItem = dynamic_cast<const GroupItem*>(ancestor);
if (item->parent() == groupItem->currentItem()) {
QPersistentModelIndex proxyIndex QPersistentModelIndex proxyIndex
= createProxyIndex(SessionItemUtils::ParentVisibleRow(*item), sourceIndex.column(), sourceIndex.internalPointer()); = createProxyIndex(SessionItemUtils::ParentVisibleRow(*item), sourceIndex.column(), sourceIndex.internalPointer());
...@@ -116,6 +156,7 @@ void ComponentProxyStrategy::processGroupItem(SessionItem* item, ...@@ -116,6 +156,7 @@ void ComponentProxyStrategy::processGroupItem(SessionItem* item,
} }
} }
} }
void ComponentProxyStrategy::processDefaultItem(SessionItem* item, void ComponentProxyStrategy::processDefaultItem(SessionItem* item,
......
...@@ -30,8 +30,10 @@ private: ...@@ -30,8 +30,10 @@ private:
bool isPropertyRelated(SessionItem* item); bool isPropertyRelated(SessionItem* item);
bool isNewRootItem(SessionItem* item); bool isNewRootItem(SessionItem* item);
void processRootItem(SessionItem* item, const QPersistentModelIndex& sourceIndex); void processRootItem(SessionItem* item, const QPersistentModelIndex& sourceIndex);
bool isSubGroup(SessionItem* item);
bool isGroupChildren(SessionItem* item); bool isGroupChildren(SessionItem* item);
void processGroupItem(SessionItem* item, const QPersistentModelIndex& sourceIndex); void processGroupItem(SessionItem* item, const QPersistentModelIndex& sourceIndex);
void processSubGroupItem(SessionItem* item, const QPersistentModelIndex& sourceIndex);
void processDefaultItem(SessionItem* item, const QPersistentModelIndex& sourceIndex); void processDefaultItem(SessionItem* item, const QPersistentModelIndex& sourceIndex);
}; };
......
...@@ -123,7 +123,7 @@ void TestComponentView::onExpandRequest() ...@@ -123,7 +123,7 @@ void TestComponentView::onExpandRequest()
void TestComponentView::init_source() void TestComponentView::init_source()
{ {
SampleBuilderFactory factory; SampleBuilderFactory factory;
const std::unique_ptr<MultiLayer> sample(factory.createSample("CylindersAndPrismsBuilder")); const std::unique_ptr<MultiLayer> sample(factory.createSample("CylindersWithSizeDistributionBuilder"));
GUIObjectBuilder::populateSampleModel(m_sampleModel, m_materialModel, *sample); GUIObjectBuilder::populateSampleModel(m_sampleModel, m_materialModel, *sample);
m_sampleModel->insertNewItem(Constants::VectorType); m_sampleModel->insertNewItem(Constants::VectorType);
m_sampleModel->insertNewItem(Constants::BeamType); m_sampleModel->insertNewItem(Constants::BeamType);
......
...@@ -47,13 +47,13 @@ TestView::TestView(MainWindow *mainWindow) ...@@ -47,13 +47,13 @@ TestView::TestView(MainWindow *mainWindow)
: QWidget(mainWindow) : QWidget(mainWindow)
, m_mainWindow(mainWindow) , m_mainWindow(mainWindow)
{ {
// test_ComponentProxyModel(); test_ComponentProxyModel();
// test_MaterialEditor(); // test_MaterialEditor();
// test_MinimizerSettings(); // test_MinimizerSettings();
// test_AccordionWidget(); // test_AccordionWidget();
// test_RunFitWidget(); // test_RunFitWidget();
// test_ba3d(); // test_ba3d();
test_specular_data_widget(); // test_specular_data_widget();
} }
void TestView::test_ComponentProxyModel() void TestView::test_ComponentProxyModel()
......
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