forked from qt-creator/qt-creator
qbs: Move setup of Group node tree into QbsNodeTreeBuilder
Move code to set up the tree of project nodes out of the project nodes themselves. This makes them easier to manage and will enable creator to change to a less update-intense project tree. Change-Id: I2d0702d257e87543f47ebfb456344423ebe4f871 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
|
||||
#include "qbsnodes.h"
|
||||
|
||||
#include "qbsnodetreebuilder.h"
|
||||
#include "qbsproject.h"
|
||||
#include "qbsprojectmanagerconstants.h"
|
||||
#include "qbsrunconfiguration.h"
|
||||
@@ -322,11 +323,8 @@ QbsGroupNode::QbsGroupNode(const qbs::GroupData &grp, const QString &productPath
|
||||
|
||||
setIcon(m_groupIcon);
|
||||
|
||||
addNode(new QbsFileNode(Utils::FileName::fromString(grp.location().filePath()),
|
||||
ProjectExplorer::FileType::Project, false,
|
||||
grp.location().line()));
|
||||
|
||||
updateQbsGroupData(grp, productPath, true);
|
||||
m_productPath = productPath;
|
||||
m_qbsGroupData = grp;
|
||||
}
|
||||
|
||||
QList<ProjectExplorer::ProjectAction> QbsGroupNode::supportedActions(ProjectExplorer::Node *node) const
|
||||
@@ -391,32 +389,6 @@ bool QbsGroupNode::renameFile(const QString &filePath, const QString &newFilePat
|
||||
prdNode->qbsProductData(), m_qbsGroupData);
|
||||
}
|
||||
|
||||
void QbsGroupNode::updateQbsGroupData(const qbs::GroupData &grp, const QString &productPath,
|
||||
bool productIsEnabled)
|
||||
{
|
||||
QTC_ASSERT(grp.isValid(), return);
|
||||
|
||||
setEnabled(productIsEnabled && grp.isEnabled());
|
||||
|
||||
m_productPath = productPath;
|
||||
m_qbsGroupData = grp;
|
||||
|
||||
setAbsoluteFilePathAndLine(Utils::FileName::fromString(grp.location().filePath()), line());
|
||||
setDisplayName(grp.name());
|
||||
|
||||
QbsFileNode *idx = 0;
|
||||
foreach (ProjectExplorer::FileNode *fn, fileNodes()) {
|
||||
idx = dynamic_cast<QbsFileNode *>(fn);
|
||||
if (idx)
|
||||
break;
|
||||
}
|
||||
QTC_ASSERT(idx, return);
|
||||
idx->setAbsoluteFilePathAndLine(Utils::FileName::fromString(grp.location().filePath()),
|
||||
grp.location().line());
|
||||
|
||||
setupFiles(this, grp, grp.allFilePaths(), productPath, false);
|
||||
}
|
||||
|
||||
void QbsGroupNode::setupFiles(ProjectExplorer::FolderNode *root, const qbs::GroupData &group,
|
||||
const QStringList &files, const QString &productPath, bool generated)
|
||||
{
|
||||
@@ -438,7 +410,7 @@ void QbsGroupNode::setupFiles(ProjectExplorer::FolderNode *root, const qbs::Grou
|
||||
|
||||
QHash<QString, ProjectExplorer::FileType> fileTypeHash;
|
||||
foreach (const qbs::ArtifactData &sa, group.allSourceArtifacts())
|
||||
fileTypeHash[sa.filePath()] = fileType(sa);
|
||||
fileTypeHash[sa.filePath()] = Internal::QbsNodeTreeBuilder::fileType(sa);
|
||||
|
||||
setupFolder(root, fileTypeHash, &tree, productPath, generated);
|
||||
}
|
||||
@@ -506,27 +478,6 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root,
|
||||
}
|
||||
}
|
||||
|
||||
ProjectExplorer::FileType QbsGroupNode::fileType(const qbs::ArtifactData &artifact)
|
||||
{
|
||||
QTC_ASSERT(artifact.isValid(), return ProjectExplorer::FileType::Unknown);
|
||||
|
||||
if (artifact.fileTags().contains(QLatin1String("c"))
|
||||
|| artifact.fileTags().contains(QLatin1String("cpp"))
|
||||
|| artifact.fileTags().contains(QLatin1String("objc"))
|
||||
|| artifact.fileTags().contains(QLatin1String("objcpp"))) {
|
||||
return ProjectExplorer::FileType::Source;
|
||||
}
|
||||
if (artifact.fileTags().contains(QLatin1String("hpp")))
|
||||
return ProjectExplorer::FileType::Header;
|
||||
if (artifact.fileTags().contains(QLatin1String("qrc")))
|
||||
return ProjectExplorer::FileType::Resource;
|
||||
if (artifact.fileTags().contains(QLatin1String("ui")))
|
||||
return ProjectExplorer::FileType::Form;
|
||||
if (artifact.fileTags().contains(QLatin1String("scxml")))
|
||||
return ProjectExplorer::FileType::StateChart;
|
||||
return ProjectExplorer::FileType::Unknown;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// QbsProductNode:
|
||||
// --------------------------------------------------------------------
|
||||
@@ -619,7 +570,8 @@ void QbsProductNode::setQbsProductData(const qbs::Project &project, const qbs::P
|
||||
setEnabled(prd.isEnabled());
|
||||
|
||||
setDisplayName(QbsProject::productDisplayName(project, prd));
|
||||
setAbsoluteFilePathAndLine(Utils::FileName::fromString(prd.location().filePath()), line());
|
||||
setAbsoluteFilePathAndLine(Utils::FileName::fromString(prd.location().filePath()).parentDir(),
|
||||
line());
|
||||
const QString &productPath = QFileInfo(prd.location().filePath()).absolutePath();
|
||||
|
||||
// Find the QbsFileNode we added earlier:
|
||||
@@ -636,18 +588,14 @@ void QbsProductNode::setQbsProductData(const qbs::Project &project, const qbs::P
|
||||
foreach (const qbs::GroupData &grp, prd.groups()) {
|
||||
if (grp.name() == prd.name() && grp.location() == prd.location()) {
|
||||
// Set implicit product group right onto this node:
|
||||
QbsGroupNode::setupFiles(this, grp, grp.allFilePaths(), productPath, false);
|
||||
QbsNodeTreeBuilder::setupArtifacts(this, grp.allSourceArtifacts());
|
||||
continue;
|
||||
}
|
||||
addNode(new QbsGroupNode(grp, productPath));
|
||||
addNode(QbsNodeTreeBuilder::buildGroupNodeTree(grp, productPath, prd.isEnabled()));
|
||||
}
|
||||
|
||||
if (prd.isEnabled()) {
|
||||
const QStringList generatedFiles
|
||||
= Utils::transform(prd.generatedArtifacts(), &qbs::ArtifactData::filePath);
|
||||
QbsGroupNode::setupFiles(m_generatedFilesNode, qbs::GroupData(), generatedFiles,
|
||||
prd.buildDirectory(), true);
|
||||
}
|
||||
if (prd.isEnabled())
|
||||
QbsNodeTreeBuilder::setupArtifacts(this, prd.generatedArtifacts());
|
||||
|
||||
m_qbsProductData = prd;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user