OSDN Git Service

Fix available QtVersion::availableToolchains
authordt <qtc-committer@nokia.com>
Tue, 12 Apr 2011 17:05:32 +0000 (19:05 +0200)
committerdt <qtc-committer@nokia.com>
Wed, 13 Apr 2011 11:15:55 +0000 (13:15 +0200)
Do really disable the symbian emulator if there's no toolchain
supporting it.

Reviewed-By: hunger
src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp
src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.cpp
src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
src/plugins/qt4projectmanager/qtversionmanager.cpp
src/plugins/qt4projectmanager/qtversionmanager.h

index 7d6ebaf..e64be07 100644 (file)
@@ -135,7 +135,7 @@ QList<BuildConfigurationInfo> Qt4DesktopTargetFactory::availableBuildConfigurati
     QList<QtVersion *> knownVersions = QtVersionManager::instance()->versionsForTargetId(id, minimumQtVersion);
 
     foreach (QtVersion *version, knownVersions) {
-        if (!version->isValid() || !version->toolChainAvailable())
+        if (!version->isValid() || !version->toolChainAvailable(id))
             continue;
         QtVersion::QmakeBuildConfigs config = version->defaultBuildConfig();
 
index bbada95..8138666 100644 (file)
@@ -135,7 +135,7 @@ QList<BuildConfigurationInfo> Qt4SimulatorTargetFactory::availableBuildConfigura
     QList<QtVersion *> knownVersions = QtVersionManager::instance()->versionsForTargetId(id, minimumQtVersion);
 
     foreach (QtVersion *version, knownVersions) {
-        if (!version->isValid() || !version->toolChainAvailable())
+        if (!version->isValid() || !version->toolChainAvailable(id))
             continue;
         QtVersion::QmakeBuildConfigs config = version->defaultBuildConfig();
         QString dir = defaultShadowBuildDirectory(Qt4Project::defaultTopLevelBuildDirectory(proFilePath), id);
index 28448a9..c8e12dc 100644 (file)
@@ -155,7 +155,7 @@ QList<BuildConfigurationInfo> Qt4MaemoTargetFactory::availableBuildConfiguration
     QList<QtVersion *> knownVersions = QtVersionManager::instance()->versionsForTargetId(id, minimumQtVersion);
 
     foreach (QtVersion *version, knownVersions) {
-        if (!version->isValid() || !version->toolChainAvailable())
+        if (!version->isValid() || !version->toolChainAvailable(id))
             continue;
         QtVersion::QmakeBuildConfigs config = version->defaultBuildConfig();
 #ifdef Q_OS_WIN
index ed68299..e979767 100644 (file)
@@ -78,6 +78,7 @@ QStringList Qt4SymbianTargetFactory::supportedTargetIds(ProjectExplorer::Project
         return QStringList();
 
     QStringList ids;
+    // The QtVersionManager will just check whether theres
     if (QtVersionManager::instance()->supportsTargetId(Constants::S60_DEVICE_TARGET_ID))
         ids << QLatin1String(Constants::S60_DEVICE_TARGET_ID);
     if (QtVersionManager::instance()->supportsTargetId(Constants::S60_EMULATOR_TARGET_ID))
@@ -168,7 +169,7 @@ QList<BuildConfigurationInfo> Qt4SymbianTargetFactory::availableBuildConfigurati
     QList<QtVersion *> knownVersions = QtVersionManager::instance()->versionsForTargetId(id, minimumQtVersion);
 
     foreach (QtVersion *version, knownVersions) {
-        if (!version->isValid() || !version->toolChainAvailable())
+        if (!version->isValid() || !version->toolChainAvailable(id))
             continue;
 
         bool buildAll = version->defaultBuildConfig() & QtVersion::BuildAll;
index b70a53d..2d032b9 100644 (file)
@@ -247,7 +247,7 @@ bool QtVersionManager::supportsTargetId(const QString &id) const
 {
     QList<QtVersion *> versions = QtVersionManager::instance()->versionsForTargetId(id);
     foreach (QtVersion *v, versions)
-        if (v->isValid() && v->toolChainAvailable())
+        if (v->isValid() && v->toolChainAvailable(id))
             return true;
     return false;
 }
@@ -1815,10 +1815,29 @@ bool QtVersion::isValid() const
             && m_validSystemRoot;
 }
 
-bool QtVersion::toolChainAvailable() const
+bool QtVersion::toolChainAvailable(const QString &id) const
 {
     if (!isValid())
         return false;
+
+    if (id == QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) {
+        QList<ProjectExplorer::ToolChain *> tcList =
+                ProjectExplorer::ToolChainManager::instance()->toolChains();
+        foreach (ProjectExplorer::ToolChain *tc, tcList) {
+            if (tc->id().startsWith(QLatin1String(Constants::WINSCW_TOOLCHAIN_ID)))
+                return true;
+        }
+        return false;
+    } else if (id == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) {
+        QList<ProjectExplorer::ToolChain *> tcList =
+                ProjectExplorer::ToolChainManager::instance()->toolChains();
+        foreach (ProjectExplorer::ToolChain *tc, tcList) {
+            if (!tc->id().startsWith(Qt4ProjectManager::Constants::WINSCW_TOOLCHAIN_ID))
+                return true;
+        }
+        return false;
+    }
+
     foreach (const ProjectExplorer::Abi &abi, qtAbis())
         if (!ProjectExplorer::ToolChainManager::instance()->findToolChains(abi).isEmpty())
             return true;
index 7574adb..901b7cb 100644 (file)
@@ -96,7 +96,7 @@ public:
     ~QtVersion();
 
     bool isValid() const;
-    bool toolChainAvailable() const;
+    bool toolChainAvailable(const QString &id) const;
 
     QString invalidReason() const;
     QString description() const;