From 772c838aa339cc1192fd76463f68861613cd8e9c Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Mon, 12 Apr 2010 19:16:49 +0200
Subject: [PATCH] Add a method to find pro-files used to create a Makefile

Reviewed-by: dt
---
 .../qt4projectmanager/qtversionmanager.cpp    | 24 ++++++++++++++++---
 .../qt4projectmanager/qtversionmanager.h      |  3 ++-
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index ddf32911888..b91966a0466 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -778,6 +778,24 @@ void dumpQMakeAssignments(const QList<QMakeAssignment> &list)
     }
 }
 
+bool QtVersionManager::makefileIsFor(const QString &directory, const QString &proFile)
+{
+    if (proFile.isEmpty())
+        return true;
+
+    QString line = findQMakeLine(directory, QLatin1String("# Project:")).trimmed();
+    if (line.isEmpty())
+        return false;
+
+
+    line = line.mid(line.indexOf(QChar(':')) + 1);
+    line = line.trimmed();
+
+    QFileInfo srcFileInfo(QDir(directory), line);
+    QFileInfo proFileInfo(proFile);
+    return srcFileInfo == proFileInfo;
+}
+
 QPair<QtVersion::QmakeBuildConfigs, QStringList> QtVersionManager::scanMakeFile(const QString &directory, QtVersion::QmakeBuildConfigs defaultBuildConfig)
 {
     if (debug)
@@ -785,7 +803,7 @@ QPair<QtVersion::QmakeBuildConfigs, QStringList> QtVersionManager::scanMakeFile(
     QtVersion::QmakeBuildConfigs result = defaultBuildConfig;
     QStringList result2;
 
-    QString line = findQMakeLine(directory);
+    QString line = findQMakeLine(directory, QLatin1String("# Command:"));
     if (!line.isEmpty()) {
         if (debug)
             qDebug()<<"Found line"<<line;
@@ -835,14 +853,14 @@ QPair<QtVersion::QmakeBuildConfigs, QStringList> QtVersionManager::scanMakeFile(
     return qMakePair(result, result2);
 }
 
-QString QtVersionManager::findQMakeLine(const QString &directory)
+QString QtVersionManager::findQMakeLine(const QString &directory, const QString &key)
 {
     QFile makefile(directory + QLatin1String("/Makefile" ));
     if (makefile.exists() && makefile.open(QFile::ReadOnly)) {
         QTextStream ts(&makefile);
         while (!ts.atEnd()) {
             const QString line = ts.readLine();
-            if (line.startsWith(QLatin1String("# Command:")))
+            if (line.startsWith(key))
                 return line;
         }
     }
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index 02d2d5bcea5..cc01d063356 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -225,6 +225,7 @@ public:
     QSet<QString> supportedTargetIds() const;
 
     // Static Methods
+    static bool makefileIsFor(const QString &directory, const QString &proFile);
     static QPair<QtVersion::QmakeBuildConfigs, QStringList> scanMakeFile(const QString &directory,
                                                                          QtVersion::QmakeBuildConfigs defaultBuildConfig);
     static QString findQMakeBinaryFromMakefile(const QString &directory);
@@ -239,7 +240,7 @@ private slots:
 private:
     // This function is really simplistic...
     static bool equals(QtVersion *a, QtVersion *b);
-    static QString findQMakeLine(const QString &directory);
+    static QString findQMakeLine(const QString &directory, const QString &key);
     static QString trimLine(const QString line);
     static QStringList splitLine(const QString &line);
     static void parseParts(const QStringList &parts,
-- 
GitLab