From 553249261d57b8eb90dfd622b5436cbae760b334 Mon Sep 17 00:00:00 2001
From: Daniel Teske <daniel.teske@nokia.com>
Date: Wed, 11 Jan 2012 12:59:50 +0100
Subject: [PATCH] Show a message box on importing the same build twice

Task-number: QTCREATORBUG-6788

Change-Id: I65f40c440fb5dd8927d4a1ec8cf4f352ac2eb4be
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
---
 .../buildconfigurationinfo.h                  | 10 ++++++++
 src/plugins/qt4projectmanager/qt4target.cpp   | 23 +++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/src/plugins/qt4projectmanager/buildconfigurationinfo.h b/src/plugins/qt4projectmanager/buildconfigurationinfo.h
index 7adb66ac98f..6cf166c98b8 100644
--- a/src/plugins/qt4projectmanager/buildconfigurationinfo.h
+++ b/src/plugins/qt4projectmanager/buildconfigurationinfo.h
@@ -52,6 +52,16 @@ struct QT4PROJECTMANAGER_EXPORT BuildConfigurationInfo {
         return version != 0;
     }
 
+    bool operator ==(const BuildConfigurationInfo &other) const
+    {
+        return version == other.version
+                && buildConfig == other.buildConfig
+                && additionalArguments == other.additionalArguments
+                && directory == other.directory
+                && importing == other.importing
+                && temporaryQtVersion == other.temporaryQtVersion;
+    }
+
     QtSupport::BaseQtVersion *version;
     QtSupport::BaseQtVersion::QmakeBuildConfigs buildConfig;
     QString additionalArguments;
diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp
index 6d55bb50f58..12888dd60f0 100644
--- a/src/plugins/qt4projectmanager/qt4target.cpp
+++ b/src/plugins/qt4projectmanager/qt4target.cpp
@@ -777,6 +777,7 @@ void Qt4DefaultTargetSetupWidget::addImportClicked()
         m_importLineLayout->invalidate();
         return;
     }
+
     QList<BuildConfigurationInfo> infos = BuildConfigurationInfo::checkForBuild(m_importLinePath->path(), m_proFilePath);
     if (infos.isEmpty()) {
         QMessageBox::critical(this,
@@ -804,6 +805,28 @@ void Qt4DefaultTargetSetupWidget::addImportClicked()
         // show something if we found incompatible builds?
     }
 
+    // Filter out already imported builds
+    infos = filterdInfos;
+    filterdInfos.clear();
+    foreach (const BuildConfigurationInfo &info, infos) {
+        bool alreadyImported = false;
+        foreach (const BuildConfigurationInfo &existingImport, m_importInfos) {
+            if (info == existingImport) {
+                alreadyImported = true;
+                break;
+            }
+        }
+        if (!alreadyImported)
+            filterdInfos << info;
+    }
+
+    if (filterdInfos.isEmpty() && !infos.isEmpty()) {
+        QMessageBox::critical(this,
+                              tr("Already imported build"),
+                              tr("The build found in %1 is already imported").arg(m_importLinePath->path()));
+        return;
+    }
+
     // We switch from to "NONE" on importing if the user has not changed it
     if (m_buildConfigurationTemplateUnchanged)
         setBuildConfigurationTemplate(NONE);
-- 
GitLab