Qt4Project: Use exact parse to decide which runconfigurations to create

Task-number: QTCREATORBUG-9549

Change-Id: Ib504073a3dfbdf8a66429b3fb6a8930d2284f76a
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Daniel Teske
2013-06-18 19:12:48 +02:00
parent f8034a353f
commit 77ddc869e0
2 changed files with 21 additions and 18 deletions

View File

@@ -466,7 +466,7 @@ bool Qt4Project::fromMap(const QVariantMap &map)
QtQuickApp qtQuickApp; QtQuickApp qtQuickApp;
const Html5App html5App; const Html5App html5App;
foreach (Qt4ProFileNode *node, applicationProFiles()) { foreach (Qt4ProFileNode *node, applicationProFiles(Qt4Project::ExactAndCumulativeParse)) {
const QString path = node->path(); const QString path = node->path();
qtQuickApp.setComponentSet(QtQuickApp::QtQuick10Components); qtQuickApp.setComponentSet(QtQuickApp::QtQuick10Components);
@@ -1074,44 +1074,46 @@ bool Qt4Project::parseInProgress(const QString &proFilePath) const
return node && node->parseInProgress(); return node && node->parseInProgress();
} }
void Qt4Project::collectAllfProFiles(QList<Qt4ProFileNode *> &list, Qt4ProFileNode *node) void Qt4Project::collectAllfProFiles(QList<Qt4ProFileNode *> &list, Qt4ProFileNode *node, Parsing parse)
{ {
list.append(node); if (parse == ExactAndCumulativeParse || node->includedInExactParse())
list.append(node);
foreach (ProjectNode *n, node->subProjectNodes()) { foreach (ProjectNode *n, node->subProjectNodes()) {
Qt4ProFileNode *qt4ProFileNode = qobject_cast<Qt4ProFileNode *>(n); Qt4ProFileNode *qt4ProFileNode = qobject_cast<Qt4ProFileNode *>(n);
if (qt4ProFileNode) if (qt4ProFileNode)
collectAllfProFiles(list, qt4ProFileNode); collectAllfProFiles(list, qt4ProFileNode, parse);
} }
} }
void Qt4Project::collectApplicationProFiles(QList<Qt4ProFileNode *> &list, Qt4ProFileNode *node) void Qt4Project::collectApplicationProFiles(QList<Qt4ProFileNode *> &list, Qt4ProFileNode *node, Parsing parse)
{ {
if (node->projectType() == ApplicationTemplate if (node->projectType() == ApplicationTemplate
|| node->projectType() == ScriptTemplate) { || node->projectType() == ScriptTemplate) {
list.append(node); if (parse == ExactAndCumulativeParse || node->includedInExactParse())
list.append(node);
} }
foreach (ProjectNode *n, node->subProjectNodes()) { foreach (ProjectNode *n, node->subProjectNodes()) {
Qt4ProFileNode *qt4ProFileNode = qobject_cast<Qt4ProFileNode *>(n); Qt4ProFileNode *qt4ProFileNode = qobject_cast<Qt4ProFileNode *>(n);
if (qt4ProFileNode) if (qt4ProFileNode)
collectApplicationProFiles(list, qt4ProFileNode); collectApplicationProFiles(list, qt4ProFileNode, parse);
} }
} }
QList<Qt4ProFileNode *> Qt4Project::allProFiles() const QList<Qt4ProFileNode *> Qt4Project::allProFiles(Parsing parse) const
{ {
QList<Qt4ProFileNode *> list; QList<Qt4ProFileNode *> list;
if (!rootProjectNode()) if (!rootProjectNode())
return list; return list;
collectAllfProFiles(list, rootQt4ProjectNode()); collectAllfProFiles(list, rootQt4ProjectNode(), parse);
return list; return list;
} }
QList<Qt4ProFileNode *> Qt4Project::applicationProFiles() const QList<Qt4ProFileNode *> Qt4Project::applicationProFiles(Parsing parse) const
{ {
QList<Qt4ProFileNode *> list; QList<Qt4ProFileNode *> list;
if (!rootProjectNode()) if (!rootProjectNode())
return list; return list;
collectApplicationProFiles(list, rootQt4ProjectNode()); collectApplicationProFiles(list, rootQt4ProjectNode(), parse);
return list; return list;
} }
@@ -1127,10 +1129,10 @@ bool Qt4Project::hasApplicationProFile(const QString &path) const
return false; return false;
} }
QStringList Qt4Project::applicationProFilePathes(const QString &prepend) const QStringList Qt4Project::applicationProFilePathes(const QString &prepend, Parsing parse) const
{ {
QStringList proFiles; QStringList proFiles;
foreach (Qt4ProFileNode *node, applicationProFiles()) foreach (Qt4ProFileNode *node, applicationProFiles(parse))
proFiles.append(prepend + node->path()); proFiles.append(prepend + node->path());
return proFiles; return proFiles;
} }

View File

@@ -93,10 +93,11 @@ public:
virtual QStringList files(FilesMode fileMode) const; virtual QStringList files(FilesMode fileMode) const;
virtual QString generatedUiHeader(const QString &formFile) const; virtual QString generatedUiHeader(const QString &formFile) const;
QList<Qt4ProFileNode *> allProFiles() const; enum Parsing {ExactParse, ExactAndCumulativeParse };
QList<Qt4ProFileNode *> applicationProFiles() const; QList<Qt4ProFileNode *> allProFiles(Parsing parse = ExactParse) const;
QList<Qt4ProFileNode *> applicationProFiles(Parsing parse = ExactParse) const;
bool hasApplicationProFile(const QString &path) const; bool hasApplicationProFile(const QString &path) const;
QStringList applicationProFilePathes(const QString &prepend = QString()) const; QStringList applicationProFilePathes(const QString &prepend = QString(), Parsing parse = ExactParse) const;
void notifyChanged(const QString &name); void notifyChanged(const QString &name);
@@ -170,8 +171,8 @@ private:
void updateCppCodeModel(); void updateCppCodeModel();
void updateQmlJSCodeModel(); void updateQmlJSCodeModel();
static void collectAllfProFiles(QList<Qt4ProFileNode *> &list, Qt4ProFileNode *node); static void collectAllfProFiles(QList<Qt4ProFileNode *> &list, Qt4ProFileNode *node, Parsing parse);
static void collectApplicationProFiles(QList<Qt4ProFileNode *> &list, Qt4ProFileNode *node); static void collectApplicationProFiles(QList<Qt4ProFileNode *> &list, Qt4ProFileNode *node, Parsing parse);
static void findProFile(const QString& fileName, Qt4ProFileNode *root, QList<Qt4ProFileNode *> &list); static void findProFile(const QString& fileName, Qt4ProFileNode *root, QList<Qt4ProFileNode *> &list);
static bool hasSubNode(Qt4PriFileNode *root, const QString &path); static bool hasSubNode(Qt4PriFileNode *root, const QString &path);