QbsProjectManager: Use qbs::Project as a value.

Those objects are shared data pointers that can (and should)
be used as values. This is now actually possible due to
the newly introduced public default constructor and
isValid() method.

Change-Id: I989e339bd495aa7581b01f17f00cbffe0b617b9c
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Christian Kandeler
2013-09-06 18:02:46 +02:00
parent f9aa1207d2
commit 3948f9d887
5 changed files with 39 additions and 42 deletions

View File

@@ -535,8 +535,8 @@ QList<ProjectExplorer::RunConfiguration *> QbsProductNode::runConfigurationsFor(
Q_UNUSED(node);
QList<ProjectExplorer::RunConfiguration *> result;
QbsProjectNode *pn = qobject_cast<QbsProjectNode *>(projectNode());
if (!isEnabled() || !pn || pn->qbsProject()->targetExecutable(m_qbsProductData,
qbs::InstallOptions()).isEmpty()) {
if (!isEnabled() || !pn || !pn->qbsProject().isValid()
|| pn->qbsProject().targetExecutable(m_qbsProductData, qbs::InstallOptions()).isEmpty()) {
return result;
}
@@ -567,14 +567,14 @@ QbsGroupNode *QbsProductNode::findGroupNode(const QString &name)
QbsProjectNode::QbsProjectNode(QbsProject *project) :
QbsBaseProjectNode(project->projectFilePath()),
m_project(project), m_qbsProject(0)
m_project(project)
{
ctor();
}
QbsProjectNode::QbsProjectNode(const QString &path) :
QbsBaseProjectNode(path),
m_project(0), m_qbsProject(0)
m_project(0)
{
ctor();
}
@@ -582,14 +582,11 @@ QbsProjectNode::QbsProjectNode(const QString &path) :
QbsProjectNode::~QbsProjectNode()
{
// do not delete m_project
delete m_qbsProject;
}
void QbsProjectNode::update(const qbs::Project *prj)
void QbsProjectNode::update(const qbs::Project &prj)
{
update(prj ? prj->projectData() : qbs::ProjectData());
delete m_qbsProject;
update(prj.isValid() ? prj.projectData() : qbs::ProjectData());
m_qbsProject = prj;
}
@@ -638,10 +635,10 @@ QbsProject *QbsProjectNode::project() const
return m_project;
}
const qbs::Project *QbsProjectNode::qbsProject() const
const qbs::Project QbsProjectNode::qbsProject() const
{
QbsProjectNode *parent = qobject_cast<QbsProjectNode *>(projectNode());
if (!m_qbsProject && parent != this)
if (!m_qbsProject.isValid() && parent != this)
return parent->qbsProject();
return m_qbsProject;
}