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; 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; 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) void QbsProjectNode::update(const qbs::ProjectData &prjData)
{ {
QList<ProjectExplorer::ProjectNode *> toAdd; QList<ProjectExplorer::ProjectNode *> toAdd;
@@ -808,8 +815,6 @@ void QbsProjectNode::update(const qbs::ProjectData &prjData)
removeProjectNodes(toRemove); removeProjectNodes(toRemove);
addProjectNodes(toAdd); addProjectNodes(toAdd);
m_qbsProjectData = prjData;
} }
QbsProject *QbsProjectNode::project() const QbsProject *QbsProjectNode::project() const
@@ -829,7 +834,7 @@ const qbs::Project QbsProjectNode::qbsProject() const
const qbs::ProjectData QbsProjectNode::qbsProjectData() const const qbs::ProjectData QbsProjectNode::qbsProjectData() const
{ {
return m_qbsProjectData; return m_qbsProject.projectData();
} }
bool QbsProjectNode::showInSimpleTree() const bool QbsProjectNode::showInSimpleTree() const

View File

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

View File

@@ -291,22 +291,11 @@ void QbsProject::handleQbsParsingDone(bool success)
m_qbsUpdateFutureInterface = 0; m_qbsUpdateFutureInterface = 0;
} }
if (project.isValid()) { if (project.isValid())
// Do not throw away data when parsing errors were introduced. That frightens users:-) m_rootProjectNode->setProject(project);
m_rootProjectNode->update(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); emit projectParsingDone(success);
} }
@@ -361,6 +350,28 @@ void QbsProject::delayForcedParsing()
delayParsing(); 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) void QbsProject::parseCurrentBuildConfiguration(bool force)
{ {
if (!m_forceParsing) if (!m_forceParsing)

View File

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