From 2edc96fe8921747b71d165c71bc2ea78087e7635 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Wed, 26 Jun 2019 12:47:27 +0300 Subject: Fix grouping in "Set datainput controller" menu, studio part Properties were grouped according to property type, which was confusing. Changed the grouping to be by group, which makes more sense, and results in same ordering of properties as the inspector. Task-number: QT3DS-3373 Change-Id: I7317d79f86c1f20881c3166f0f76e4b1f7ea7573 Reviewed-by: Janne Koskinen --- .../TimelineGraphicsView/ui/RowTreeContextMenu.cpp | 57 +++++++++++----------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp index ae5c0bbb..cde22595 100644 --- a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp +++ b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp @@ -75,40 +75,39 @@ void RowTreeContextMenu::initialize() m_diMenu = addMenu(tr("Set datainput controller")); connect(m_diMenu, &QMenu::triggered, this, &RowTreeContextMenu::addDiController); - QVector propList; - // If this is a referenced material instance, we need to get the property list from // the referenced source, and set datainput control to point to the property // in the referenced source. auto refInstance = doc.GetStudioSystem()->GetClientDataModelBridge() ->getMaterialReference(instance); - propList = doc.GetStudioSystem()->GetPropertySystem() - ->GetControllableProperties(refInstance ? refInstance : instance); - - QMap sections; - for (const auto &prop : propList) { - QAction *action - = new QAction(QString::fromStdWString(doc.GetPropertySystem() - ->GetFormalName( - refInstance ? refInstance : instance, - prop).wide_str())); - action->setData(QString::fromStdWString( - doc.GetPropertySystem() - ->GetName(prop).wide_str())); - - auto metadata = doc.GetStudioSystem()->GetActionMetaData()->GetMetaDataPropertyInfo( - doc.GetStudioSystem()->GetActionMetaData()->GetMetaDataProperty( - refInstance ? refInstance : instance, prop)); - - if (sections.contains(metadata->m_CompleteType) ) { - m_diMenu->insertAction(sections[metadata->m_CompleteType], action); - } else { - // Create a QAction for a section so that we can insert properties above it - // to maintain category groupings. Sections are shown as separators in Studio - // style i.e. enum text is not shown. - QAction *section = m_diMenu->addSection(QString(metadata->m_CompleteType)); - sections.insert(metadata->m_CompleteType, section); - m_diMenu->insertAction(section, action); + const QVector>> propGroups + = doc.GetStudioSystem()->GetPropertySystem() + ->GetControllableProperties(refInstance ? refInstance : instance); + + QMap sections; + for (const auto &propGroup : propGroups) { + const QString group = propGroup.first; + const auto &propList = propGroup.second; + for (const auto &prop : propList) { + QAction *action + = new QAction(QString::fromStdWString( + doc.GetPropertySystem()->GetFormalName( + refInstance ? refInstance : instance, + prop).wide_str())); + action->setData(QString::fromStdWString( + doc.GetPropertySystem() + ->GetName(prop).wide_str())); + + if (sections.contains(group) ) { + m_diMenu->insertAction(sections[group], action); + } else { + // Create a QAction for a section so that we can insert properties above it + // to maintain category groupings. Sections are shown as separators in Studio + // style i.e. enum text is not shown. + QAction *section = m_diMenu->addSection(group); + sections.insert(group, section); + m_diMenu->insertAction(section, action); + } } } } -- cgit v1.2.3