forked from qt-creator/qt-creator
Qbs: Move setup code for QbsProjectNodes into QbsNodeTreeBuilder
Change-Id: Ice5b445db916648bb8fb0d0f31bafe1d53e11182 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -584,14 +584,13 @@ QbsGroupNode *QbsProductNode::findGroupNode(const QString &name)
|
|||||||
// QbsProjectNode:
|
// QbsProjectNode:
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
|
|
||||||
QbsProjectNode::QbsProjectNode(const Utils::FileName &path) :
|
QbsProjectNode::QbsProjectNode(const Utils::FileName &projectDirectory) :
|
||||||
QbsBaseProjectNode(path)
|
QbsBaseProjectNode(projectDirectory)
|
||||||
{
|
{
|
||||||
if (m_projectIcon.isNull())
|
if (m_projectIcon.isNull())
|
||||||
m_projectIcon = generateIcon(QString::fromLatin1(ProjectExplorer::Constants::FILEOVERLAY_QT));
|
m_projectIcon = generateIcon(QString::fromLatin1(ProjectExplorer::Constants::FILEOVERLAY_QT));
|
||||||
|
|
||||||
setIcon(m_projectIcon);
|
setIcon(m_projectIcon);
|
||||||
addNode(new ProjectExplorer::FileNode(filePath(), ProjectExplorer::FileType::Project, false));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QbsProjectNode::~QbsProjectNode()
|
QbsProjectNode::~QbsProjectNode()
|
||||||
@@ -599,26 +598,6 @@ QbsProjectNode::~QbsProjectNode()
|
|||||||
// do not delete m_project
|
// do not delete m_project
|
||||||
}
|
}
|
||||||
|
|
||||||
void QbsProjectNode::update(const qbs::Project &qbsProject, const qbs::ProjectData &prjData)
|
|
||||||
{
|
|
||||||
foreach (const qbs::ProjectData &subData, prjData.subProjects()) {
|
|
||||||
auto subProject =
|
|
||||||
new QbsProjectNode(Utils::FileName::fromString(subData.location().filePath()));
|
|
||||||
subProject->update(qbsProject, subData);
|
|
||||||
addNode(subProject);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (const qbs::ProductData &prd, prjData.products())
|
|
||||||
addNode(QbsNodeTreeBuilder::buildProductNodeTree(qbsProject, prd));
|
|
||||||
|
|
||||||
if (!prjData.name().isEmpty())
|
|
||||||
setDisplayName(prjData.name());
|
|
||||||
else
|
|
||||||
setDisplayName(project()->displayName());
|
|
||||||
|
|
||||||
m_projectData = prjData;
|
|
||||||
}
|
|
||||||
|
|
||||||
QbsProject *QbsProjectNode::project() const
|
QbsProject *QbsProjectNode::project() const
|
||||||
{
|
{
|
||||||
return static_cast<QbsProjectNode *>(parentFolderNode())->project();
|
return static_cast<QbsProjectNode *>(parentFolderNode())->project();
|
||||||
@@ -634,12 +613,17 @@ bool QbsProjectNode::showInSimpleTree() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QbsProjectNode::setProjectData(const qbs::ProjectData &data)
|
||||||
|
{
|
||||||
|
m_projectData = data;
|
||||||
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
// QbsRootProjectNode:
|
// QbsRootProjectNode:
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
|
|
||||||
QbsRootProjectNode::QbsRootProjectNode(QbsProject *project) :
|
QbsRootProjectNode::QbsRootProjectNode(QbsProject *project) :
|
||||||
QbsProjectNode(project->projectFilePath()),
|
QbsProjectNode(project->projectDirectory()),
|
||||||
m_project(project),
|
m_project(project),
|
||||||
m_buildSystemFiles(new ProjectExplorer::FolderNode(project->projectDirectory(),
|
m_buildSystemFiles(new ProjectExplorer::FolderNode(project->projectDirectory(),
|
||||||
ProjectExplorer::NodeType::Folder,
|
ProjectExplorer::NodeType::Folder,
|
||||||
@@ -661,7 +645,7 @@ void QbsRootProjectNode::update()
|
|||||||
QbsGroupNode::setupFiles(m_buildSystemFiles, qbs::GroupData(), projectBuildSystemFiles,
|
QbsGroupNode::setupFiles(m_buildSystemFiles, qbs::GroupData(), projectBuildSystemFiles,
|
||||||
base.toString(), false);
|
base.toString(), false);
|
||||||
|
|
||||||
update(m_project->qbsProject(), m_project->qbsProjectData());
|
QbsNodeTreeBuilder::setupProjectNode(this, m_project->qbsProjectData(), m_project->qbsProject());
|
||||||
}
|
}
|
||||||
|
|
||||||
static QSet<QString> referencedBuildSystemFiles(const qbs::ProjectData &data)
|
static QSet<QString> referencedBuildSystemFiles(const qbs::ProjectData &data)
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ namespace QbsProjectManager {
|
|||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class FileTreeNode;
|
class FileTreeNode;
|
||||||
|
class QbsNodeTreeBuilder;
|
||||||
class QbsProject;
|
class QbsProject;
|
||||||
class QbsProjectFile;
|
class QbsProjectFile;
|
||||||
|
|
||||||
@@ -150,7 +151,7 @@ private:
|
|||||||
class QbsProjectNode : public QbsBaseProjectNode
|
class QbsProjectNode : public QbsBaseProjectNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit QbsProjectNode(const Utils::FileName &absoluteFilePath);
|
explicit QbsProjectNode(const Utils::FileName &projectDirectory);
|
||||||
~QbsProjectNode() override;
|
~QbsProjectNode() override;
|
||||||
|
|
||||||
virtual QbsProject *project() const;
|
virtual QbsProject *project() const;
|
||||||
@@ -159,12 +160,13 @@ public:
|
|||||||
|
|
||||||
bool showInSimpleTree() const override;
|
bool showInSimpleTree() const override;
|
||||||
|
|
||||||
protected:
|
|
||||||
void update(const qbs::Project &qbsProject, const qbs::ProjectData &prjData);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void setProjectData(const qbs::ProjectData &data);
|
||||||
|
|
||||||
static QIcon m_projectIcon;
|
static QIcon m_projectIcon;
|
||||||
qbs::ProjectData m_projectData;
|
qbs::ProjectData m_projectData;
|
||||||
|
|
||||||
|
friend class QbsNodeTreeBuilder;
|
||||||
};
|
};
|
||||||
|
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
@@ -176,7 +178,6 @@ class QbsRootProjectNode : public QbsProjectNode
|
|||||||
public:
|
public:
|
||||||
explicit QbsRootProjectNode(QbsProject *project);
|
explicit QbsRootProjectNode(QbsProject *project);
|
||||||
|
|
||||||
using QbsProjectNode::update;
|
|
||||||
void update();
|
void update();
|
||||||
|
|
||||||
QbsProject *project() const override { return m_project; }
|
QbsProject *project() const override { return m_project; }
|
||||||
|
|||||||
@@ -104,6 +104,15 @@ void setupQbsProductData(QbsProjectManager::Internal::QbsProductNode *node,
|
|||||||
setupArtifacts(genFiles, prd.generatedArtifacts());
|
setupArtifacts(genFiles, prd.generatedArtifacts());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QbsProjectManager::Internal::QbsProductNode *
|
||||||
|
buildProductNodeTree(const qbs::Project &project, const qbs::ProductData &prd)
|
||||||
|
{
|
||||||
|
auto result = new QbsProjectManager::Internal::QbsProductNode(prd);
|
||||||
|
|
||||||
|
setupQbsProductData(result, prd, project);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
namespace QbsProjectManager {
|
namespace QbsProjectManager {
|
||||||
@@ -130,14 +139,38 @@ ProjectExplorer::FileType QbsNodeTreeBuilder::fileType(const qbs::ArtifactData &
|
|||||||
return ProjectExplorer::FileType::Unknown;
|
return ProjectExplorer::FileType::Unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
QbsProductNode *QbsNodeTreeBuilder::buildProductNodeTree(const qbs::Project &project,
|
QbsProjectNode *QbsNodeTreeBuilder::buildProjectNodeTree(const qbs::Project &qbsProject,
|
||||||
const qbs::ProductData &prd)
|
const qbs::ProjectData &prjData)
|
||||||
{
|
{
|
||||||
auto result = new QbsProductNode(prd);
|
Utils::FileName filePath = Utils::FileName::fromString(prjData.location().filePath());
|
||||||
|
auto result = new QbsProjectNode(filePath.parentDir());
|
||||||
|
result->setProjectData(prjData);
|
||||||
|
|
||||||
|
result->addNode(new ProjectExplorer::FileNode(filePath, ProjectExplorer::FileType::Project, false));
|
||||||
|
|
||||||
|
setupProjectNode(result, prjData, qbsProject);
|
||||||
|
|
||||||
setupQbsProductData(result, prd, project);
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QbsNodeTreeBuilder::setupProjectNode(QbsProjectNode *node, const qbs::ProjectData &prjData,
|
||||||
|
const qbs::Project &qbsProject)
|
||||||
|
{
|
||||||
|
foreach (const qbs::ProjectData &subData, prjData.subProjects()) {
|
||||||
|
auto subProject =
|
||||||
|
new QbsProjectNode(Utils::FileName::fromString(subData.location().filePath()).parentDir());
|
||||||
|
setupProjectNode(subProject, subData, qbsProject);
|
||||||
|
node->addNode(subProject);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (const qbs::ProductData &prd, prjData.products())
|
||||||
|
node->addNode(buildProductNodeTree(qbsProject, prd));
|
||||||
|
|
||||||
|
if (!prjData.name().isEmpty())
|
||||||
|
node->setDisplayName(prjData.name());
|
||||||
|
else
|
||||||
|
node->setDisplayName(node->project()->displayName());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace QbsProjectManager
|
} // namespace QbsProjectManager
|
||||||
|
|||||||
@@ -41,9 +41,10 @@ class QbsNodeTreeBuilder
|
|||||||
public:
|
public:
|
||||||
static ProjectExplorer::FileType fileType(const qbs::ArtifactData &artifact);
|
static ProjectExplorer::FileType fileType(const qbs::ArtifactData &artifact);
|
||||||
|
|
||||||
static QbsGroupNode *buildGroupNodeTree(const qbs::GroupData &grp, const QString &productPath,
|
static QbsProjectNode *buildProjectNodeTree(const qbs::Project &qbsProject,
|
||||||
bool productIsEnabled);
|
const qbs::ProjectData &prjData);
|
||||||
static QbsProductNode *buildProductNodeTree(const qbs::Project &project, const qbs::ProductData &prd);
|
|
||||||
|
static void setupProjectNode(QbsProjectNode *node, const qbs::ProjectData &prjData, const qbs::Project &qbsProject);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
Reference in New Issue
Block a user