diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 66c32661c35cc99ba000f36c578f7818962de15e..985b60aba73426dffe40671d9b1bb967f80b7903 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -48,6 +48,8 @@ #include <cpptools/cppmodelmanagerinterface.h> #include <cplusplus/CppDocument.h> #include <extensionsystem/pluginmanager.h> +#include <projectexplorer/projectexplorer.h> +#include <projectexplorer/buildmanager.h> #include <utils/qtcassert.h> @@ -498,8 +500,16 @@ QStringList Qt4PriFileNode::varNames(FileType type) return vars; } -#include <projectexplorer/projectexplorer.h> -#include <projectexplorer/buildmanager.h> +Qt4PriFileNode *Qt4PriFileNode::findProFileFor(const QString &fileName) +{ + if (fileName == path()) + return this; + foreach (ProjectNode *pn, subProjectNodes()) + if (Qt4PriFileNode *qt4PriFileNode = qobject_cast<Qt4PriFileNode *>(pn)) + if (Qt4PriFileNode *result = qt4PriFileNode->findProFileFor(fileName)) + return result; + return 0; +} /*! \class Qt4ProFileNode diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h index 6da10fd9f478173702de0b7c7d4753eb9a7683d3..d527725071ffc1ccbb9e64052904cb1d036641ba 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.h +++ b/src/plugins/qt4projectmanager/qt4nodes.h @@ -123,6 +123,11 @@ public: bool renameFile(const FileType fileType, const QString &filePath, const QString &newFilePath); + Qt4PriFileNode *findProFileFor(const QString &string); + + //internal + ProFileReader *createProFileReader() const; + protected: void clear(); static QStringList varNames(FileType type); @@ -142,7 +147,6 @@ protected: ChangeType change); QString buildDir() const; - ProFileReader *createProFileReader() const; private slots: void scheduleUpdate(); @@ -198,8 +202,6 @@ private: QStringList subDirsPaths(ProFileReader *reader) const; QStringList qBuildSubDirsPaths(const QString &scanDir) const; - - void invalidate(); Qt4ProjectType m_projectType; diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index ae6a76ecbc1dd833e75255204eedb2ffebb2e1f4..0f08672ebe19d4c644951f80392336d05b184b68 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -584,18 +584,6 @@ void Qt4Project::update() //updateCodeModel(); } -ProFileReader *Qt4Project::createProFileReader() const -{ - ProFileReader *reader = new ProFileReader(); - connect(reader, SIGNAL(errorFound(const QString&)), - this, SLOT(proFileParseError(const QString&))); - QtVersion *version = qtVersion(activeBuildConfiguration()); - if (version->isValid()) { - reader->setQtVersion(version); - } - return reader; -} - /*! Returns whether the project is an application, or has an application as a subproject. */ diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h index 6801fd0f40abdf50b090146cabe69e4e513f2312..fc1feac3f2970440d932110603ba7aee837bf5ef 100644 --- a/src/plugins/qt4projectmanager/qt4project.h +++ b/src/plugins/qt4projectmanager/qt4project.h @@ -164,7 +164,6 @@ public: virtual void newBuildConfiguration(const QString &buildConfiguration); QList<Internal::Qt4ProFileNode *> applicationProFiles() const; - Internal::ProFileReader *createProFileReader() const; // Those functions arein a few places. // The drawback is that we shouldn't actually depend on them beeing always there diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index abcd410b4d1c9ef6175680334414864e0898b0d7..a76543e725373af7a8732332be7b89e51c93583b 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -331,7 +331,8 @@ void Qt4RunConfiguration::updateTarget() return; //qDebug()<<"updateTarget"; Qt4Project *pro = static_cast<Qt4Project *>(project()); - ProFileReader *reader = pro->createProFileReader(); + Qt4PriFileNode * priFileNode = static_cast<Qt4Project *>(project())->rootProjectNode()->findProFileFor(m_proFilePath); + ProFileReader *reader = priFileNode->createProFileReader(); reader->setCumulative(false); reader->setQtVersion(pro->qtVersion(pro->activeBuildConfiguration())); diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.h b/src/plugins/qt4projectmanager/qt4runconfiguration.h index 3b59b65732c18ea72b1a30f1d11ef898f312e8c2..d86f00227fcbefe3d97a323837f3efcffe37af2d 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.h @@ -47,9 +47,7 @@ class Qt4Project; namespace Internal { -class Qt4ProFileNode; - - +class Qt4PriFileNode; class Qt4RunConfiguration : public ProjectExplorer::ApplicationRunConfiguration { @@ -103,7 +101,6 @@ private slots: private: void updateTarget(); QStringList m_commandLineArguments; - Qt4ProFileNode *m_proFileNode; QString m_proFilePath; // Full path to the Application Pro File // Cached startup sub project information