diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp index 640ae571759..5f434472806 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include @@ -635,7 +634,6 @@ static FolderNode *createSourceGroupNode(const QString &sourceGroupName, if (!existingNode) { auto node = createCMakeVFolder(sourceDirectory, Node::DefaultFolderPriority + 5, p); node->setListInProject(false); - node->setIcon([] { return FileIconProvider::icon(QFileIconProvider::Folder); }); existingNode = node.get(); diff --git a/src/plugins/cmakeprojectmanager/projecttreehelper.cpp b/src/plugins/cmakeprojectmanager/projecttreehelper.cpp index a5f0461dea0..a97050541d5 100644 --- a/src/plugins/cmakeprojectmanager/projecttreehelper.cpp +++ b/src/plugins/cmakeprojectmanager/projecttreehelper.cpp @@ -15,6 +15,7 @@ #include using namespace ProjectExplorer; +using namespace Utils; namespace CMakeProjectManager::Internal { @@ -27,6 +28,21 @@ bool defaultCMakeSourceGroupFolder(const QString &displayName) || displayName == "State charts"; } +static QIcon iconForSourceGroup(const QString &sourceGroup) +{ + static const QHash sourceGroupToOverlay = { + {"Forms", ProjectExplorer::Constants::FILEOVERLAY_UI}, + {"Header Files", ProjectExplorer::Constants::FILEOVERLAY_H}, + {"Resources", ProjectExplorer::Constants::FILEOVERLAY_QRC}, + {"State charts", ProjectExplorer::Constants::FILEOVERLAY_SCXML}, + {"Source Files", ProjectExplorer::Constants::FILEOVERLAY_CPP}, + }; + + return sourceGroupToOverlay.contains(sourceGroup) + ? FileIconProvider::directoryIcon(sourceGroupToOverlay.value(sourceGroup)) + : FileIconProvider::icon(QFileIconProvider::Folder); +} + std::unique_ptr createCMakeVFolder(const Utils::FilePath &basePath, int priority, const QString &displayName) @@ -34,6 +50,7 @@ std::unique_ptr createCMakeVFolder(const Utils::FilePath &basePath, auto newFolder = std::make_unique(basePath); newFolder->setPriority(priority); newFolder->setDisplayName(displayName); + newFolder->setIcon([displayName] { return iconForSourceGroup(displayName); }); newFolder->setIsSourcesOrHeaders(defaultCMakeSourceGroupFolder(displayName)); return newFolder; }