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