From 4c5ce80141c1660547baa550f4e31ee86dc26143 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Fri, 26 Mar 2010 10:37:05 +0100
Subject: [PATCH] Add method to retreive valid Qt versions only

---
 .../qt4projectmanager/projectloadwizard.cpp       |  7 +------
 .../qt4projectmanager/qtversionmanager.cpp        | 15 ++++++++++++++-
 src/plugins/qt4projectmanager/qtversionmanager.h  |  1 +
 3 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/src/plugins/qt4projectmanager/projectloadwizard.cpp b/src/plugins/qt4projectmanager/projectloadwizard.cpp
index d1c8e55014a..aa5ea0b4d34 100644
--- a/src/plugins/qt4projectmanager/projectloadwizard.cpp
+++ b/src/plugins/qt4projectmanager/projectloadwizard.cpp
@@ -89,12 +89,7 @@ ProjectLoadWizard::ProjectLoadWizard(Qt4Project *project, QWidget *parent, Qt::W
     // The default buildConfiguration depends on QmakeBuildConfig::DebugBuild
     // Also if the qt version is not yet in the Tools Options dialog we offer to add it there
 
-    QList<QtVersion *> validVersions;
-    foreach (QtVersion * v, vm->versions()) {
-        if (v->isValid())
-            validVersions.append(v);
-    }
-
+    QList<QtVersion *> validVersions = vm->validVersions();
     if (m_importVersion)
         setupImportPage(m_importVersion, m_importBuildConfig, m_additionalArguments);
     else if (validVersions.count() > 1)
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index ba3183fe417..5b6adc4959f 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -159,6 +159,9 @@ QtVersionManager *QtVersionManager::instance()
 void QtVersionManager::addVersion(QtVersion *version)
 {
     QTC_ASSERT(version != 0, return);
+    if (m_versions.contains(version))
+        return;
+
     m_versions.append(version);
     int uniqueId = version->uniqueId();
     m_uniqueIdToIndex.insert(uniqueId, m_versions.count() - 1);
@@ -278,11 +281,21 @@ void QtVersionManager::writeVersionsIntoSettings()
     s->endArray();
 }
 
-QList<QtVersion* > QtVersionManager::versions() const
+QList<QtVersion *> QtVersionManager::versions() const
 {
     return m_versions;
 }
 
+QList<QtVersion *> QtVersionManager::validVersions() const
+{
+    QList<QtVersion *> results;
+    foreach(QtVersion *v, m_versions) {
+        if (v->isValid())
+            results.append(v);
+    }
+    return results;
+}
+
 bool QtVersionManager::isValidId(int id) const
 {
     int pos = m_uniqueIdToIndex.value(id, -1);
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index 9cb80d3e4ac..1af75870243 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -199,6 +199,7 @@ public:
     // This will *always* return at least one (Qt in Path), even if that is
     // unconfigured.
     QList<QtVersion *> versions() const;
+    QList<QtVersion *> validVersions() const;
 
     // Note: DO NOT STORE THIS POINTER!
     //       The QtVersionManager will delete it at random times and you will
-- 
GitLab