From 6473ab730ce33f3207a8e56bcc70ae6c20f48780 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Mon, 19 Apr 2010 16:07:55 +0200
Subject: [PATCH] Add method to QtVersion to query it for issues

Reviewed-by: dt
---
 .../qt4projectmanager/qtversionmanager.cpp    | 30 +++++++++++++++++++
 .../qt4projectmanager/qtversionmanager.h      |  7 +++++
 2 files changed, 37 insertions(+)

diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index b8ed0afdb9a..455c91452c0 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -35,9 +35,11 @@
 
 #include "qt-maemo/maemomanager.h"
 #include "qt-s60/s60manager.h"
+#include "qt-s60/s60projectchecker.h"
 
 #include <projectexplorer/debugginghelper.h>
 #include <projectexplorer/projectexplorer.h>
+#include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/cesdkhandler.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/icore.h>
@@ -635,6 +637,34 @@ bool QtVersion::supportsShadowBuilds() const
     return true;
 }
 
+QList<ProjectExplorer::Task>
+QtVersion::reportIssues(const QString &proFile)
+{
+    QList<ProjectExplorer::Task> results;
+
+    if (!isValid())
+        results.append(ProjectExplorer::Task(ProjectExplorer::Task::Error,
+                                             QObject::tr("The Qt version is invalid: %1",
+                                                         "%1: Reason for being invalid").arg(invalidReason()),
+                                             QString(), -1,
+                                             QLatin1String(ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM)));
+
+    QFileInfo qmakeInfo(qmakeCommand());
+    if (!qmakeInfo.exists() ||
+        !qmakeInfo.isExecutable())
+        results.append(ProjectExplorer::Task(ProjectExplorer::Task::Error,
+                                             QObject::tr("The qmake command \"%1\" was not found or is not executable.",
+                                                         "%1: Path to qmake executable.").arg(qmakeCommand()),
+                                             QString(), -1,
+                                             QLatin1String(ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM)));
+
+    QSet<QString> targets = supportedTargetIds();
+    if (targets.contains(Constants::S60_DEVICE_TARGET_ID) ||
+        targets.contains(Constants::S60_EMULATOR_TARGET_ID))
+        results.append(S60ProjectChecker::reportIssues(proFile, this));
+    return results;
+}
+
 QString QtVersion::displayName() const
 {
     return m_displayName;
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index cc01d063356..e1a19124185 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -30,6 +30,7 @@
 #ifndef QTVERSIONMANAGER_H
 #define QTVERSIONMANAGER_H
 
+#include <projectexplorer/taskwindow.h>
 #include <projectexplorer/toolchain.h>
 #include <QSharedPointer>
 
@@ -139,6 +140,12 @@ public:
 
     bool supportsShadowBuilds() const;
 
+    /// Check a .pro-file/Qt version combination on possible issues with
+    /// its symbian setup.
+    /// @return a list of tasks, ordered on severity (errors first, then
+    ///         warnings and finally info items.
+    QList<ProjectExplorer::Task> reportIssues(const QString &proFile);
+
 private:
     QList<QSharedPointer<ProjectExplorer::ToolChain> > toolChains() const;
     static int getUniqueId();
-- 
GitLab