diff --git a/src/plugins/qbsprojectmanager/images/groups.png b/src/plugins/projectexplorer/images/fileoverlay_group.png
similarity index 100%
rename from src/plugins/qbsprojectmanager/images/groups.png
rename to src/plugins/projectexplorer/images/fileoverlay_group.png
diff --git a/src/plugins/qbsprojectmanager/images/groups@2x.png b/src/plugins/projectexplorer/images/fileoverlay_group@2x.png
similarity index 100%
rename from src/plugins/qbsprojectmanager/images/groups@2x.png
rename to src/plugins/projectexplorer/images/fileoverlay_group@2x.png
diff --git a/src/plugins/qbsprojectmanager/images/productgear.png b/src/plugins/projectexplorer/images/fileoverlay_product.png
similarity index 100%
rename from src/plugins/qbsprojectmanager/images/productgear.png
rename to src/plugins/projectexplorer/images/fileoverlay_product.png
diff --git a/src/plugins/qbsprojectmanager/images/productgear@2x.png b/src/plugins/projectexplorer/images/fileoverlay_product@2x.png
similarity index 100%
rename from src/plugins/qbsprojectmanager/images/productgear@2x.png
rename to src/plugins/projectexplorer/images/fileoverlay_product@2x.png
diff --git a/src/plugins/projectexplorer/projectexplorer.qrc b/src/plugins/projectexplorer/projectexplorer.qrc
index 0f5e0dc3069..32fb160cf63 100644
--- a/src/plugins/projectexplorer/projectexplorer.qrc
+++ b/src/plugins/projectexplorer/projectexplorer.qrc
@@ -64,6 +64,10 @@
images/fileoverlay_qrc@2x.png
images/fileoverlay_qt.png
images/fileoverlay_qt@2x.png
+ images/fileoverlay_product.png
+ images/fileoverlay_product@2x.png
+ images/fileoverlay_group.png
+ images/fileoverlay_group@2x.png
images/fileoverlay_ui.png
images/fileoverlay_ui@2x.png
images/fileoverlay_scxml.png
diff --git a/src/plugins/projectexplorer/projectexplorerconstants.h b/src/plugins/projectexplorer/projectexplorerconstants.h
index 48550359085..2fc05770560 100644
--- a/src/plugins/projectexplorer/projectexplorerconstants.h
+++ b/src/plugins/projectexplorer/projectexplorerconstants.h
@@ -210,6 +210,8 @@ const char PROJECTTREE_ID[] = "Projects";
// File icon overlays
const char FILEOVERLAY_QT[]=":/projectexplorer/images/fileoverlay_qt.png";
+const char FILEOVERLAY_GROUP[] = ":/projectexplorer/images/fileoverlay_group.png";
+const char FILEOVERLAY_PRODUCT[] = ":/projectexplorer/images/fileoverlay_product.png";
const char FILEOVERLAY_QML[]=":/projectexplorer/images/fileoverlay_qml.png";
const char FILEOVERLAY_UI[]=":/projectexplorer/images/fileoverlay_ui.png";
const char FILEOVERLAY_QRC[]=":/projectexplorer/images/fileoverlay_qrc.png";
diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp
index 01bfa6e9761..2ed8d1adf32 100644
--- a/src/plugins/qbsprojectmanager/qbsnodes.cpp
+++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp
@@ -73,7 +73,7 @@ const QbsProductNode *parentQbsProductNode(const ProjectExplorer::Node *node)
QbsGroupNode::QbsGroupNode(const QJsonObject &grp) : ProjectNode(FilePath()), m_groupData(grp)
{
- static QIcon groupIcon = QIcon(QString(Constants::QBS_GROUP_ICON));
+ static QIcon groupIcon = QIcon(QString(ProjectExplorer::Constants::FILEOVERLAY_GROUP));
setIcon(groupIcon);
setDisplayName(grp.value("name").toString());
setEnabled(grp.value("is-enabled").toBool());
@@ -109,7 +109,7 @@ QVariant QbsGroupNode::data(Core::Id role) const
QbsProductNode::QbsProductNode(const QJsonObject &prd) : ProjectNode(FilePath()), m_productData(prd)
{
static QIcon productIcon = Core::FileIconProvider::directoryIcon(
- Constants::QBS_PRODUCT_OVERLAY_ICON);
+ ProjectExplorer::Constants::FILEOVERLAY_PRODUCT);
setIcon(productIcon);
if (prd.value("is-runnable").toBool()) {
setProductType(ProductType::App);
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.qrc b/src/plugins/qbsprojectmanager/qbsprojectmanager.qrc
index d2848ec977e..d9432202401 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.qrc
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.qrc
@@ -1,9 +1,5 @@
- images/groups.png
- images/groups@2x.png
- images/productgear.png
- images/productgear@2x.png
images/settingscategory_qbsprojectmanager.png
images/settingscategory_qbsprojectmanager@2x.png
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerconstants.h b/src/plugins/qbsprojectmanager/qbsprojectmanagerconstants.h
index 12e3147cb1d..30a415fa575 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanagerconstants.h
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerconstants.h
@@ -73,10 +73,6 @@ const char QBS_CONFIG_QUICK_COMPILER_KEY[] = "modules.Qt.quick.useCompiler";
const char QBS_CONFIG_SEPARATE_DEBUG_INFO_KEY[] = "modules.cpp.separateDebugInformation";
const char QBS_FORCE_PROBES_KEY[] = "qbspm.forceProbes";
-// Icons:
-const char QBS_GROUP_ICON[] = ":/qbsprojectmanager/images/groups.png";
-const char QBS_PRODUCT_OVERLAY_ICON[] = ":/qbsprojectmanager/images/productgear.png";
-
// Toolchain related settings:
const char QBS_TARGETPLATFORM[] = "qbs.targetPlatform";
const char QBS_SYSROOT[] = "qbs.sysroot";
diff --git a/src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp b/src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp
index 05a5f1fac56..f5563678c7f 100644
--- a/src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp
@@ -95,6 +95,8 @@ public:
QVector fileTypeData;
QIcon projectIcon;
+ QIcon productIcon;
+ QIcon groupIcon;
};
void clearQmakeStaticData();
@@ -114,6 +116,8 @@ QmakeStaticData::QmakeStaticData()
}
// Project icon
projectIcon = Core::FileIconProvider::directoryIcon(ProjectExplorer::Constants::FILEOVERLAY_QT);
+ productIcon = Core::FileIconProvider::directoryIcon(ProjectExplorer::Constants::FILEOVERLAY_PRODUCT);
+ groupIcon = Core::FileIconProvider::directoryIcon(ProjectExplorer::Constants::FILEOVERLAY_GROUP);
qAddPostRoutine(clearQmakeStaticData);
}
@@ -124,12 +128,20 @@ void clearQmakeStaticData()
{
qmakeStaticData()->fileTypeData.clear();
qmakeStaticData()->projectIcon = QIcon();
+ qmakeStaticData()->productIcon = QIcon();
+ qmakeStaticData()->groupIcon = QIcon();
}
} // namespace
namespace QmakeProjectManager {
+static QIcon iconForProfile(const QmakeProFile *proFile)
+{
+ return proFile->projectType() == ProjectType::SubDirsTemplate ? qmakeStaticData()->projectIcon
+ : qmakeStaticData()->productIcon;
+}
+
static void createTree(QmakeBuildSystem *buildSystem,
const QmakePriFile *pri,
QmakePriFileNode *node,
@@ -139,7 +151,6 @@ static void createTree(QmakeBuildSystem *buildSystem,
QTC_ASSERT(node, return);
node->setDisplayName(pri->displayName());
- node->setIcon(qmakeStaticData()->projectIcon);
// .pro/.pri-file itself:
node->addNode(std::make_unique(pri->filePath(), FileType::Project));
@@ -227,10 +238,14 @@ static void createTree(QmakeBuildSystem *buildSystem,
// Virtual folders:
for (QmakePriFile *c : pri->children()) {
std::unique_ptr newNode;
- if (auto pf = dynamic_cast(c))
+ if (auto pf = dynamic_cast(c)) {
newNode = std::make_unique(c->buildSystem(), c->filePath(), pf);
- else
- newNode = std::make_unique(c->buildSystem(), node->proFileNode(), c->filePath(), c);
+ newNode->setIcon(iconForProfile(pf));
+ } else {
+ newNode = std::make_unique(c->buildSystem(), node->proFileNode(),
+ c->filePath(), c);
+ newNode->setIcon(qmakeStaticData->groupIcon);
+ }
createTree(buildSystem, c, newNode.get(), toExclude);
node->addNode(std::move(newNode));
}
@@ -246,6 +261,7 @@ std::unique_ptr QmakeNodeTreeBuilder::buildTree(QmakeBuildSyst
auto root = std::make_unique(buildSystem,
buildSystem->projectFilePath(),
buildSystem->rootProFile());
+ root->setIcon(iconForProfile(buildSystem->rootProFile()));
createTree(buildSystem, buildSystem->rootProFile(), root.get(), toExclude);
return root;