summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp57
1 files 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<qt3dsdm::Qt3DSDMPropertyHandle> 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<int, QAction *> 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<QPair<QString, QVector<qt3dsdm::Qt3DSDMPropertyHandle>>> propGroups
+ = doc.GetStudioSystem()->GetPropertySystem()
+ ->GetControllableProperties(refInstance ? refInstance : instance);
+
+ QMap<QString, QAction *> 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);
+ }
}
}
}