* @brief Materializes the group folder items and re-parents them; returns the id->item map. */
| 1695 | * @brief Materializes the group folder items and re-parents them; returns the id->item map. |
| 1696 | */ |
| 1697 | QHash<int, QStandardItem*> DataModel::ProjectEditor::appendGroupFolderItems( |
| 1698 | QStandardItem* groupsRoot, const QString& pathPrefix, QHash<QString, bool>& expandedStates) |
| 1699 | { |
| 1700 | const auto& folders = DataModel::ProjectModel::instance().editorGroupFolders(); |
| 1701 | const auto& groups = DataModel::ProjectModel::instance().groups(); |
| 1702 | |
| 1703 | QHash<int, bool> folderHasGroup; |
| 1704 | QHash<int, bool> folderHasEnabled; |
| 1705 | accumulateFolderEnabled(folders, groups, folderHasGroup, folderHasEnabled); |
| 1706 | |
| 1707 | QHash<int, QStandardItem*> folderItems; |
| 1708 | for (const auto& f : folders) { |
| 1709 | const bool folderEnabled = |
| 1710 | !folderHasGroup.value(f.folderId, false) || folderHasEnabled.value(f.folderId, false); |
| 1711 | |
| 1712 | auto* item = new QStandardItem(f.title); |
| 1713 | item->setData(f.title, TreeViewText); |
| 1714 | item->setData(QStringLiteral("qrc:/icons/project-editor/treeview/folder.svg"), TreeViewIcon); |
| 1715 | item->setData(-1, TreeViewFrameIndex); |
| 1716 | item->setData(KindGroupFolder, TreeItemKind); |
| 1717 | item->setData(f.folderId, TreeItemId); |
| 1718 | item->setData(f.parentFolderId, TreeItemParentId); |
| 1719 | item->setData(folderEnabled, TreeViewEnabled); |
| 1720 | |
| 1721 | const QString fPath = pathPrefix + QStringLiteral("/") + folderDisplayPath(folders, f.folderId); |
| 1722 | restoreExpandedStateMap(item, expandedStates, fPath); |
| 1723 | folderItems.insert(f.folderId, item); |
| 1724 | } |
| 1725 | |
| 1726 | for (const auto& f : folders) { |
| 1727 | auto* item = folderItems.value(f.folderId); |
| 1728 | QStandardItem* parent = (f.parentFolderId != -1 && folderItems.contains(f.parentFolderId)) |
| 1729 | ? folderItems.value(f.parentFolderId) |
| 1730 | : groupsRoot; |
| 1731 | parent->appendRow(item); |
| 1732 | m_groupFolderItems.insert(item, f.folderId); |
| 1733 | } |
| 1734 | |
| 1735 | return folderItems; |
| 1736 | } |
| 1737 | |
| 1738 | /** |
| 1739 | * @brief Appends the "Shared Memory" subtree (Pro only) with system + user tables. |
nothing calls this directly
no test coverage detected