Display error message when adding an existing configuration.

Change-Id: I44ce937ab9bab65c3680c11304e1ba5a6c366e1e
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
This commit is contained in:
Radovan Zivkovic
2014-03-30 20:36:57 +02:00
parent 7f034a768d
commit c3827299ac
2 changed files with 70 additions and 17 deletions

View File

@@ -28,6 +28,7 @@
** **
****************************************************************************/ ****************************************************************************/
#include "configurationseditwidget.h" #include "configurationseditwidget.h"
#include "configurationswidget.h" #include "configurationswidget.h"
#include "../interfaces/iattributecontainer.h" #include "../interfaces/iattributecontainer.h"
#include "../interfaces/iconfiguration.h" #include "../interfaces/iconfiguration.h"
@@ -48,6 +49,7 @@
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <QMessageBox>
#include <QVBoxLayout> #include <QVBoxLayout>
namespace VcProjectManager { namespace VcProjectManager {
@@ -115,6 +117,8 @@ void ConfigurationsEditWidget::onAddNewConfig(QString newConfigName, QString cop
IPlatforms *platforms = m_vsProject->platforms(); IPlatforms *platforms = m_vsProject->platforms();
QString copyFromConfigName = copyFrom.split(QLatin1Char('|')).at(0); QString copyFromConfigName = copyFrom.split(QLatin1Char('|')).at(0);
QStringList errorMessages;
for (int i = 0; i < platforms->platformCount(); ++i) { for (int i = 0; i < platforms->platformCount(); ++i) {
IPlatform *platform = platforms->platform(i); IPlatform *platform = platforms->platform(i);
@@ -122,13 +126,35 @@ void ConfigurationsEditWidget::onAddNewConfig(QString newConfigName, QString cop
QString newFullConfigName = newConfigName + QLatin1Char('|') + platform->displayName(); QString newFullConfigName = newConfigName + QLatin1Char('|') + platform->displayName();
QString copyFromFullConfigName; QString copyFromFullConfigName;
if (!copyFromConfigName.isEmpty()) // if configuration with the same name already exists show error message
copyFromFullConfigName = copyFromConfigName + QLatin1Char('|') + platform->displayName(); if (m_vsProject->configurations()->configurationContainer()->configuration(newFullConfigName)) {
QString message = tr("Configuration %1 already exists.");
message = message.arg(newFullConfigName);
errorMessages.append(message);
} else {
if (!copyFromConfigName.isEmpty())
copyFromFullConfigName = copyFromConfigName + QLatin1Char('|') + platform->displayName();
addConfigToProjectBuild(newFullConfigName, copyFromFullConfigName); addConfigToProjectBuild(newFullConfigName, copyFromFullConfigName);
addConfigToFiles(newFullConfigName, copyFromFullConfigName); addConfigToFiles(newFullConfigName, copyFromFullConfigName);
}
} }
} }
if (errorMessages.size()) {
QString message = errorMessages.join(QLatin1Char('\n'));
QMessageBox msg(this);
msg.setStandardButtons(QMessageBox::Ok);
msg.setDefaultButton(QMessageBox::Ok);
if (errorMessages.size() == 1)
msg.setWindowTitle(tr("An Error Occurred While Adding a Configuration"));
else
msg.setWindowTitle(tr("Cannot Add Configurations"));
msg.setText(message);
msg.exec();
}
} }
void ConfigurationsEditWidget::onNewConfigAdded(IConfiguration *config) void ConfigurationsEditWidget::onNewConfigAdded(IConfiguration *config)
@@ -264,16 +290,17 @@ void ConfigurationsEditWidget::addConfigToFiles(const QString &newConfigName, co
it.next(); it.next();
ConfigurationContainer *container = it.value(); ConfigurationContainer *container = it.value();
if (container) { if (!container)
IConfiguration *config = container->configuration(copyFrom); continue;
IConfiguration *config = container->configuration(copyFrom);
if (config) { if (!config)
IConfiguration *newConfig = config->clone(); continue;
if (newConfig) {
newConfig->setFullName(newConfigName); IConfiguration *newConfig = config->clone();
container->addConfiguration(newConfig); if (newConfig) {
} newConfig->setFullName(newConfigName);
} container->addConfiguration(newConfig);
} }
} }
} }

View File

@@ -30,6 +30,7 @@
#include "configurationbasewidget.h" #include "configurationbasewidget.h"
#include "configurationswidget.h" #include "configurationswidget.h"
#include "fileconfigurationseditwidget.h" #include "fileconfigurationseditwidget.h"
#include "../interfaces/iattributecontainer.h" #include "../interfaces/iattributecontainer.h"
#include "../interfaces/iattributedescriptiondataitem.h" #include "../interfaces/iattributedescriptiondataitem.h"
#include "../interfaces/iconfiguration.h" #include "../interfaces/iconfiguration.h"
@@ -54,6 +55,7 @@
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <QMessageBox>
#include <QVBoxLayout> #include <QVBoxLayout>
namespace VcProjectManager { namespace VcProjectManager {
@@ -124,6 +126,8 @@ void FileConfigurationsEditWidget::onAddNewConfig(QString newConfigName, QString
IPlatforms *platforms = m_vsProject->platforms(); IPlatforms *platforms = m_vsProject->platforms();
QString copyFromConfigName = copyFrom.split(QLatin1Char('|')).at(0); QString copyFromConfigName = copyFrom.split(QLatin1Char('|')).at(0);
QStringList errorMessages;
for (int i = 0; i < platforms->platformCount(); ++i) { for (int i = 0; i < platforms->platformCount(); ++i) {
IPlatform *platform = platforms->platform(i); IPlatform *platform = platforms->platform(i);
@@ -131,13 +135,35 @@ void FileConfigurationsEditWidget::onAddNewConfig(QString newConfigName, QString
QString newFullConfigName = newConfigName + QLatin1Char('|') + platform->displayName(); QString newFullConfigName = newConfigName + QLatin1Char('|') + platform->displayName();
QString copyFromFullConfigName; QString copyFromFullConfigName;
if (!copyFromConfigName.isEmpty()) if (m_vsProject->configurations()->configurationContainer()->configuration(newFullConfigName)) {
copyFromFullConfigName = copyFromConfigName + QLatin1Char('|') + platform->displayName(); QString message = tr("Configuration %1 already exists.");
message = message.arg(newFullConfigName);
errorMessages.append(message);
}
else {
if (!copyFromConfigName.isEmpty())
copyFromFullConfigName = copyFromConfigName + QLatin1Char('|') + platform->displayName();
addConfigToProjectBuild(newFullConfigName, copyFromFullConfigName); addConfigToProjectBuild(newFullConfigName, copyFromFullConfigName);
addConfigToFiles(newFullConfigName, copyFromFullConfigName); addConfigToFiles(newFullConfigName, copyFromFullConfigName);
}
} }
} }
if (errorMessages.size()) {
QString message = errorMessages.join(QLatin1Char('\n'));
QMessageBox msg(this);
msg.setStandardButtons(QMessageBox::Ok);
msg.setDefaultButton(QMessageBox::Ok);
if (errorMessages.size() == 1)
msg.setWindowTitle(tr("Cannot Add Configuration"));
else
msg.setWindowTitle(tr("Cannot Add Configurations"));
msg.setText(message);
msg.exec();
}
} }
void FileConfigurationsEditWidget::onNewConfigAdded(IConfiguration *config) void FileConfigurationsEditWidget::onNewConfigAdded(IConfiguration *config)