Qbs: Move updating of files from a project to own method

Change-Id: I88b41ff450dac4e0c2e5a34e3332e559c1919e6e
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Tobias Hunger
2014-06-24 12:06:13 +02:00
parent 53bfe6e0d8
commit 21cccaa1c9
4 changed files with 41 additions and 22 deletions

View File

@@ -768,12 +768,19 @@ bool QbsProjectNode::addFiles(const QStringList &filePaths, QStringList *notAdde
return prd ? prd->addFiles(filePaths, notAdded) : false;
}
void QbsProjectNode::update(const qbs::Project &prj)
void QbsProjectNode::setProject(const qbs::Project &prj)
{
update(prj.isValid() ? prj.projectData() : qbs::ProjectData());
m_qbsProject = prj;
}
void QbsProjectNode::update()
{
if (m_qbsProject.isValid())
update(m_qbsProject.projectData());
else
update(qbs::ProjectData());
}
void QbsProjectNode::update(const qbs::ProjectData &prjData)
{
QList<ProjectExplorer::ProjectNode *> toAdd;
@@ -808,8 +815,6 @@ void QbsProjectNode::update(const qbs::ProjectData &prjData)
removeProjectNodes(toRemove);
addProjectNodes(toAdd);
m_qbsProjectData = prjData;
}
QbsProject *QbsProjectNode::project() const
@@ -829,7 +834,7 @@ const qbs::Project QbsProjectNode::qbsProject() const
const qbs::ProjectData QbsProjectNode::qbsProjectData() const
{
return m_qbsProjectData;
return m_qbsProject.projectData();
}
bool QbsProjectNode::showInSimpleTree() const

View File

@@ -171,8 +171,9 @@ public:
bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0);
void update(const qbs::Project &prj);
void update(const qbs::ProjectData &prjData);
void setProject(const qbs::Project &prj); // This does *not* update the node tree!
void update();
QbsProject *project() const;
const qbs::Project qbsProject() const;
@@ -182,13 +183,14 @@ public:
private:
void ctor();
void update(const qbs::ProjectData &prjData);
QbsProductNode *findProductNode(const QString &name);
QbsProjectNode *findProjectNode(const QString &name);
QbsProject *m_project;
qbs::Project m_qbsProject;
qbs::ProjectData m_qbsProjectData;
static QIcon m_projectIcon;
};
} // namespace Internal

View File

@@ -291,22 +291,11 @@ void QbsProject::handleQbsParsingDone(bool success)
m_qbsUpdateFutureInterface = 0;
}
if (project.isValid()) {
// Do not throw away data when parsing errors were introduced. That frightens users:-)
m_rootProjectNode->update(project);
if (project.isValid())
m_rootProjectNode->setProject(project);
updateDocuments(project.isValid() ? project.buildSystemFiles() : QSet<QString>() << m_fileName);
readQbsData();
updateCppCodeModel(m_rootProjectNode->qbsProjectData());
updateQmlJsCodeModel(m_rootProjectNode->qbsProjectData());
updateApplicationTargets(m_rootProjectNode->qbsProjectData());
updateDeploymentInfo(m_rootProjectNode->qbsProject());
foreach (Target *t, targets())
t->updateDefaultRunConfigurations();
emit fileListChanged();
}
emit projectParsingDone(success);
}
@@ -361,6 +350,28 @@ void QbsProject::delayForcedParsing()
delayParsing();
}
// Qbs may change its data
void QbsProject::readQbsData()
{
QTC_ASSERT(m_rootProjectNode, return);
m_rootProjectNode->update();
qbs::Project project = m_rootProjectNode->qbsProject();
updateDocuments(project.isValid() ? project.buildSystemFiles() : QSet<QString>() << m_fileName);
qbs::ProjectData data = m_rootProjectNode->qbsProjectData();
updateCppCodeModel(data);
updateQmlJsCodeModel(data);
updateApplicationTargets(data);
updateDeploymentInfo(project);
foreach (Target *t, targets())
t->updateDefaultRunConfigurations();
emit fileListChanged();
}
void QbsProject::parseCurrentBuildConfiguration(bool force)
{
if (!m_forceParsing)

View File

@@ -108,6 +108,7 @@ public slots:
void invalidate();
void delayParsing();
void delayForcedParsing();
void readQbsData();
signals:
void projectParsingStarted();