diff options
author | Radovan Zivkovic <pivonroll@gmail.com> | 2013-09-22 21:59:29 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2014-03-11 19:54:57 +0100 |
commit | 82130c9c3f4f1335e861e1f06b6542ddb8c02046 (patch) | |
tree | a2b83b596cce2d67740da9ccef53ac4569dcb973 | |
parent | 67e04d3803840726aa32fc80108f47bf67595b80 (diff) | |
download | qt-creator-82130c9c3f4f1335e861e1f06b6542ddb8c02046.tar.gz |
Added ConfigurationContainer class.
Change-Id: Id564204974baa72b73672e1dbbf2970f82fed570
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
12 files changed, 292 insertions, 111 deletions
diff --git a/src/plugins/vcprojectmanager/interfaces/iconfigurations.h b/src/plugins/vcprojectmanager/interfaces/iconfigurations.h index b6eae3b4c8..7f4bafc44c 100644 --- a/src/plugins/vcprojectmanager/interfaces/iconfigurations.h +++ b/src/plugins/vcprojectmanager/interfaces/iconfigurations.h @@ -35,18 +35,14 @@ namespace VcProjectManager { namespace Internal { -class IConfiguration; +class ConfigurationContainer; class IConfigurations { public: virtual ~IConfigurations() {} - virtual void addConfiguration(IConfiguration *config) = 0; - virtual IConfiguration* configuration(const QString &name) const = 0; - virtual IConfiguration* configuration(int index) const = 0; - virtual int configurationCount() const = 0; - virtual void removeConfiguration(const QString &fullName) = 0; + virtual ConfigurationContainer* configurationContainer() const = 0; }; } // namespace Internal diff --git a/src/plugins/vcprojectmanager/interfaces/ifile.h b/src/plugins/vcprojectmanager/interfaces/ifile.h new file mode 100644 index 0000000000..c3923a8e22 --- /dev/null +++ b/src/plugins/vcprojectmanager/interfaces/ifile.h @@ -0,0 +1,56 @@ +/************************************************************************** +** +** Copyright (c) 2013 Bojan Petrovic +** Copyright (c) 2013 Radovan Zivkovic +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ +#ifndef VCPROJECTMANAGER_INTERNAL_IFILE_H +#define VCPROJECTMANAGER_INTERNAL_IFILE_H + +#include <QString> + +#include "../vcprojectmodel/ivcprojectnodemodel.h" + +namespace VcProjectManager { +namespace Internal { + +class IConfiguration; +class ConfigurationContainer; + +class IFile : public IVcProjectXMLNode +{ +public: + virtual ~IFile() {} + + virtual QString relativePath() const = 0; + virtual void setRelativePath(const QString &path) = 0; + virtual ConfigurationContainer* configurationContainer() const = 0; +}; + +} // namespace Internal +} // namespace VcProjectManager + +#endif // VCPROJECTMANAGER_INTERNAL_IFILE_H diff --git a/src/plugins/vcprojectmanager/interfaces/interfaces.pri b/src/plugins/vcprojectmanager/interfaces/interfaces.pri index af1b64e0eb..14c2940c27 100644 --- a/src/plugins/vcprojectmanager/interfaces/interfaces.pri +++ b/src/plugins/vcprojectmanager/interfaces/interfaces.pri @@ -9,4 +9,6 @@ HEADERS += \ interfaces/itoolsectiondescription.h \ interfaces/itoolattribute.h \ interfaces/iattributedescriptiondataitem.h \ - interfaces/iconfigurations.h + interfaces/iconfigurations.h \ + interfaces/ifile.h \ + interfaces/ifile.h diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/configurationcontainer.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/configurationcontainer.cpp new file mode 100644 index 0000000000..ae9b583a7e --- /dev/null +++ b/src/plugins/vcprojectmanager/vcprojectmodel/configurationcontainer.cpp @@ -0,0 +1,116 @@ +/************************************************************************** +** +** Copyright (c) 2013 Bojan Petrovic +** Copyright (c) 2013 Radovan Zivkovic +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ +#include "configurationcontainer.h" +#include "../interfaces/iconfiguration.h" + +namespace VcProjectManager { +namespace Internal { + +ConfigurationContainer::ConfigurationContainer() +{ +} + +ConfigurationContainer::ConfigurationContainer(const ConfigurationContainer &configCont) +{ + foreach (const IConfiguration *config, configCont.m_configs) + m_configs.append(config->clone()); +} + +ConfigurationContainer &ConfigurationContainer::operator=(const ConfigurationContainer &configCont) +{ + if (this != &configCont) { + m_configs.clear(); + + foreach (const IConfiguration *config, configCont.m_configs) + m_configs.append(config->clone()); + } + + return *this; +} + +ConfigurationContainer::~ConfigurationContainer() +{ + qDeleteAll(m_configs); +} + +void ConfigurationContainer::addConfiguration(IConfiguration *config) +{ + if (m_configs.contains(config)) + return; + + // if there is already a configuration with the same name + foreach (const IConfiguration *conf, m_configs) { + if (config->fullName() == conf->fullName()) + return; + } + m_configs.append(config); +} + +IConfiguration *ConfigurationContainer::configuration(const QString &fullName) const +{ + foreach (IConfiguration *config, m_configs) { + if (config->fullName() == fullName) + return config; + } + return 0; +} + +IConfiguration *ConfigurationContainer::configuration(int index) const +{ + if (0 <= index && index < m_configs.size()) + return m_configs[index]; + return 0; +} + +int ConfigurationContainer::configurationCount() const +{ + return m_configs.size(); +} + +void ConfigurationContainer::removeConfiguration(const QString &fullName) +{ + // if there is already a configuration with the same name + foreach (IConfiguration *conf, m_configs) { + if (conf->fullName() == fullName) { + m_configs.removeOne(conf); + delete conf; + return; + } + } +} + +void ConfigurationContainer::appendToXMLNode(QDomElement &domElement, QDomDocument &domXMLDocument) +{ + foreach (const IConfiguration *config, m_configs) + domElement.appendChild(config->toXMLDomNode(domXMLDocument)); +} + +} // Internal +} // VcProjectManager diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/configurationcontainer.h b/src/plugins/vcprojectmanager/vcprojectmodel/configurationcontainer.h new file mode 100644 index 0000000000..6fbb37c1a7 --- /dev/null +++ b/src/plugins/vcprojectmanager/vcprojectmodel/configurationcontainer.h @@ -0,0 +1,62 @@ +/************************************************************************** +** +** Copyright (c) 2013 Bojan Petrovic +** Copyright (c) 2013 Radovan Zivkovic +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ +#ifndef ICONFIGURATIONCONTAINER_H +#define ICONFIGURATIONCONTAINER_H + +#include <QList> +#include <QDomElement> + +namespace VcProjectManager { +namespace Internal { + +class IConfiguration; + +class ConfigurationContainer +{ +public: + ConfigurationContainer(); + ConfigurationContainer(const ConfigurationContainer &configCont); + ConfigurationContainer& operator=(const ConfigurationContainer &configCont); + ~ConfigurationContainer(); + + void addConfiguration(IConfiguration *config); + IConfiguration* configuration(const QString &fullName) const; + IConfiguration* configuration(int index) const; + int configurationCount() const; + void removeConfiguration(const QString &fullName); + void appendToXMLNode(QDomElement &domElement, QDomDocument &domXMLDocument); + +private: + QList<IConfiguration *> m_configs; +}; + +} // Internal +} // VcProjectManager +#endif // ICONFIGURATIONCONTAINER_H diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/configurations.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/configurations.cpp index 1d2a3c30f8..4e4e05785c 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/configurations.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/configurations.cpp @@ -33,6 +33,7 @@ #include "vcprojectdocument.h" #include "../widgets/configurationswidgets.h" #include "../interfaces/iconfiguration.h" +#include "configurationcontainer.h" namespace VcProjectManager { namespace Internal { @@ -42,24 +43,21 @@ class ConfigurationsBaseWidget; Configurations::Configurations(VcProjectDocument *vcProjDoc) : m_vcProjDoc(vcProjDoc) { + m_configurationContainer = new ConfigurationContainer; } Configurations::Configurations(const Configurations &configs) { + m_configurationContainer = new ConfigurationContainer; + *m_configurationContainer = *(configs.m_configurationContainer); m_vcProjDoc = configs.m_vcProjDoc; - - foreach (const IConfiguration *config, configs.m_configs) - m_configs.append(config->clone()); } Configurations &Configurations::operator =(const Configurations &configs) { if (this != &configs) { m_vcProjDoc = configs.m_vcProjDoc; - m_configs.clear(); - - foreach (const IConfiguration *config, configs.m_configs) - m_configs.append(config->clone()); + *m_configurationContainer = *(configs.m_configurationContainer); } return *this; @@ -67,7 +65,7 @@ Configurations &Configurations::operator =(const Configurations &configs) Configurations::~Configurations() { - qDeleteAll(m_configs); + delete m_configurationContainer; } void Configurations::processNode(const QDomNode &node) @@ -91,62 +89,43 @@ VcNodeWidget *Configurations::createSettingsWidget() QDomNode Configurations::toXMLDomNode(QDomDocument &domXMLDocument) const { QDomElement configsNode = domXMLDocument.createElement(QLatin1String("Configurations")); - - foreach (const IConfiguration *config, m_configs) - configsNode.appendChild(config->toXMLDomNode(domXMLDocument)); - + m_configurationContainer->appendToXMLNode(configsNode, domXMLDocument); return configsNode; } -void Configurations::addConfiguration(IConfiguration *config) +ConfigurationContainer *Configurations::configurationContainer() const { - if (m_configs.contains(config)) - return; + return m_configurationContainer; +} - // if there is already a configuration with the same name - foreach (const IConfiguration *conf, m_configs) { - if (config->fullName() == conf->fullName()) - return; - } - m_configs.append(config); +void Configurations::addConfiguration(IConfiguration *config) +{ + m_configurationContainer->addConfiguration(config); } IConfiguration *Configurations::configuration(const QString &fullName) const { - foreach (IConfiguration *config, m_configs) { - if (config->fullName() == fullName) - return config; - } - return 0; + return m_configurationContainer->configuration(fullName); } IConfiguration *Configurations::configuration(int index) const { - if (0 <= index && index < m_configs.size()) - return m_configs[index]; - return 0; + return m_configurationContainer->configuration(index); } int Configurations::configurationCount() const { - return m_configs.size(); + return m_configurationContainer->configurationCount(); } void Configurations::removeConfiguration(const QString &fullName) { - // if there is already a configuration with the same name - foreach (IConfiguration *conf, m_configs) { - if (conf->fullName() == fullName) { - m_configs.removeOne(conf); - delete conf; - return; - } - } + m_configurationContainer->removeConfiguration(fullName); } bool Configurations::isEmpty() const { - return m_configs.isEmpty(); + return m_configurationContainer->configurationCount() == 0; } void Configurations::processConfiguration(const QDomNode &configurationNode) @@ -162,7 +141,7 @@ void Configurations::processConfiguration(const QDomNode &configurationNode) if (config) { config->processNode(configurationNode); - m_configs.append(config); + addConfiguration(config); } // process next sibling diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/configurations.h b/src/plugins/vcprojectmanager/vcprojectmodel/configurations.h index 6fb1fb5bd7..c611740789 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/configurations.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/configurations.h @@ -55,6 +55,8 @@ public: VcNodeWidget* createSettingsWidget(); QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const; + ConfigurationContainer* configurationContainer() const; + // IConfigurations interface void addConfiguration(IConfiguration *config); IConfiguration *configuration(const QString &fullName) const; @@ -68,7 +70,7 @@ private: void processConfiguration(const QDomNode &configurationNode); VcProjectDocument *m_vcProjDoc; - QList<IConfiguration *> m_configs; + ConfigurationContainer* m_configurationContainer; }; } // namespace Internal diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/file.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/file.cpp index 97f7f80552..5b61bc76ef 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/file.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/file.cpp @@ -31,6 +31,7 @@ #include "configurationsfactory.h" #include "vcprojectdocument.h" +#include "configurationcontainer.h" #include <projectexplorer/projectexplorerconstants.h> #include <coreplugin/mimedatabase.h> @@ -42,18 +43,18 @@ namespace Internal { File::File(VcProjectDocument *parentProjectDoc) : m_parentProjectDoc(parentProjectDoc) { + m_configurationContainer = new ConfigurationContainer; } File::File(const File &file) { m_parentProjectDoc = file.m_parentProjectDoc; m_relativePath = file.m_relativePath; + m_configurationContainer = new ConfigurationContainer; + *m_configurationContainer = *(file.m_configurationContainer); foreach (const File::Ptr &f, file.m_files) m_files.append(File::Ptr(new File(*f))); - - foreach (const IConfiguration *fileConfig, m_fileConfigurations) - m_fileConfigurations.append(fileConfig->clone()); } File &File::operator =(const File &file) @@ -61,15 +62,12 @@ File &File::operator =(const File &file) if (this != &file) { m_parentProjectDoc = file.m_parentProjectDoc; m_relativePath = file.m_relativePath; + *m_configurationContainer = *(file.m_configurationContainer); m_files.clear(); - m_fileConfigurations.clear(); foreach (const File::Ptr &f, file.m_files) m_files.append(File::Ptr(new File(*f))); - - foreach (const IConfiguration *fileConfig, m_fileConfigurations) - m_fileConfigurations.append(fileConfig->clone()); } return *this; } @@ -77,7 +75,7 @@ File &File::operator =(const File &file) File::~File() { m_files.clear(); - qDeleteAll(m_fileConfigurations); + delete m_configurationContainer; } void File::processNode(const QDomNode &node) @@ -120,12 +118,16 @@ QDomNode File::toXMLDomNode(QDomDocument &domXMLDocument) const foreach (const File::Ptr &file, m_files) fileNode.appendChild(file->toXMLDomNode(domXMLDocument)); - foreach (const IConfiguration *fileConfig, m_fileConfigurations) - fileNode.appendChild(fileConfig->toXMLDomNode(domXMLDocument)); + m_configurationContainer->appendToXMLNode(fileNode, domXMLDocument); return fileNode; } +ConfigurationContainer *File::configurationContainer() const +{ + return m_configurationContainer; +} + void File::addFile(File::Ptr file) { if (m_files.contains(file)) @@ -139,44 +141,6 @@ void File::removeFile(File::Ptr file) m_files.removeAll(file); } -void File::addFileConfiguration(IConfiguration *fileConfig) -{ - if (!fileConfig) - return; - - foreach (const IConfiguration *configPtr, m_fileConfigurations) { - if (configPtr->fullName() == fileConfig->fullName()) - return; - } - m_fileConfigurations.append(fileConfig); -} - -void File::removeFileConfiguration(IConfiguration *fileConfig) -{ - foreach (IConfiguration *configPtr, m_fileConfigurations) { - if (configPtr->fullName() == fileConfig->fullName()) { - m_fileConfigurations.removeOne(configPtr); - delete configPtr; - return; - } - } -} - -IConfiguration* File::fileConfiguration(const QString &name) const -{ - foreach (IConfiguration *configPtr, m_fileConfigurations) { - if (configPtr->fullName() == name) - return configPtr; - } - - return 0; -} - -QList<IConfiguration *> File::fileConfigurations() const -{ - return m_fileConfigurations; -} - QString File::attributeValue(const QString &attributeName) const { return m_anyAttribute.value(attributeName); @@ -253,7 +217,7 @@ void File::processFileConfiguration(const QDomNode &fileConfigNode) if (fileConfig) { fileConfig->processNode(fileConfigNode); - m_fileConfigurations.append(fileConfig); + m_configurationContainer->addConfiguration(fileConfig); } // process next sibling diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/file.h b/src/plugins/vcprojectmanager/vcprojectmodel/file.h index 8c6ddea35d..fe6ef894ea 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/file.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/file.h @@ -32,6 +32,7 @@ #include "ivcprojectnodemodel.h" #include "configuration.h" +#include "../interfaces/ifile.h" #include <projectexplorer/projectnodes.h> @@ -40,7 +41,7 @@ namespace Internal { class VcProjectDocument; -class File : public IVcProjectXMLNode +class File : public IFile { friend class FileFactory; @@ -55,12 +56,10 @@ public: VcNodeWidget* createSettingsWidget(); QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const; + ConfigurationContainer *configurationContainer() const; + void addFile(File::Ptr file); void removeFile(File::Ptr file); - void addFileConfiguration(IConfiguration *fileConfig); - void removeFileConfiguration(IConfiguration *fileConfig); - IConfiguration *fileConfiguration(const QString &name) const; - QList<IConfiguration*> fileConfigurations() const; QString attributeValue(const QString &attributeName) const; void setAttribute(const QString &attributeName, const QString &attributeValue); @@ -79,9 +78,9 @@ private: QString m_relativePath; // required QList<QSharedPointer<File> > m_files; - QList<IConfiguration*> m_fileConfigurations; QHash<QString, QString> m_anyAttribute; VcProjectDocument *m_parentProjectDoc; + ConfigurationContainer *m_configurationContainer; }; } // namespace Internal diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri b/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri index 5f2766ed1c..34946caef5 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri +++ b/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri @@ -43,7 +43,8 @@ HEADERS += \ vcprojectmodel/tools/toolattributes/attributedescriptiondataitem.h \ vcprojectmodel/generalattributecontainer.h \ vcprojectmodel/configurationtools.h \ - vcprojectmodel/tools/toolattributes/toolsectioncontainer.h + vcprojectmodel/tools/toolattributes/toolsectioncontainer.h \ + vcprojectmodel/configurationcontainer.h SOURCES += \ vcprojectmodel/vcprojectdocument.cpp \ @@ -84,9 +85,10 @@ SOURCES += \ vcprojectmodel/tools/toolsection.cpp \ vcprojectmodel/tools/toolattributes/toolattributeoption.cpp \ vcprojectmodel/tools/toolattributes/attributedescriptiondataitem.cpp \ - vcprojectmodel/tools/toolattributes/toolsectioncontainer.cpp \ vcprojectmodel/generalattributecontainer.cpp \ - vcprojectmodel/configurationtools.cpp + vcprojectmodel/configurationtools.cpp \ + vcprojectmodel/tools/toolattributes/toolsectioncontainer.cpp \ + vcprojectmodel/configurationcontainer.cpp OTHER_FILES += \ vcprojectmodel/tools/xml_definitions/VCXMLDataGeneratorTool.xml \ diff --git a/src/plugins/vcprojectmanager/widgets/configurationswidgets.cpp b/src/plugins/vcprojectmanager/widgets/configurationswidgets.cpp index 10bf8cf840..261757d9e0 100644 --- a/src/plugins/vcprojectmanager/widgets/configurationswidgets.cpp +++ b/src/plugins/vcprojectmanager/widgets/configurationswidgets.cpp @@ -43,6 +43,7 @@ #include "../vcprojectmodel/file.h" #include "../interfaces/iattributecontainer.h" #include "../interfaces/itools.h" +#include "../vcprojectmodel/configurationcontainer.h" namespace VcProjectManager { namespace Internal { @@ -97,11 +98,13 @@ void ConfigurationsBaseWidget::saveData() foreach (IConfiguration *newConfig, m_newConfigurations) m_configs->addConfiguration(newConfig); - QHashIterator<QSharedPointer<File>, IConfiguration*> fileConfigIt(m_newFilesConfigurations); + QHashIterator<QSharedPointer<File>, QList<IConfiguration*> > fileConfigIt(m_newFilesConfigurations); while (fileConfigIt.hasNext()) { fileConfigIt.next(); - fileConfigIt.key()->addFileConfiguration(fileConfigIt.value()); + + foreach (IConfiguration *newFileConfig, fileConfigIt.value()) + fileConfigIt.key()->configurationContainer()->addConfiguration(newFileConfig); } // save data for every configuration @@ -350,12 +353,12 @@ void ConfigurationsBaseWidget::addConfigurationToFilesInFolder(QSharedPointer<Fo void ConfigurationsBaseWidget::addConfigurationToFile(QSharedPointer<File> filePtr, const QString ©FromConfig, const QString &targetConfigName) { - IConfiguration *configPtr = filePtr->fileConfiguration(copyFromConfig); + IConfiguration *configPtr = filePtr->configurationContainer()->configuration(copyFromConfig); if (configPtr) { IConfiguration *newConfig = configPtr->clone(); newConfig->setFullName(targetConfigName); - m_newFilesConfigurations[filePtr] = newConfig; + m_newFilesConfigurations[filePtr].append(newConfig); } } diff --git a/src/plugins/vcprojectmanager/widgets/configurationswidgets.h b/src/plugins/vcprojectmanager/widgets/configurationswidgets.h index c842bd6af6..c53587b71a 100644 --- a/src/plugins/vcprojectmanager/widgets/configurationswidgets.h +++ b/src/plugins/vcprojectmanager/widgets/configurationswidgets.h @@ -79,7 +79,7 @@ protected: QList<QString> m_removedConfigurations; QMap<IConfiguration*, QString> m_renamedConfigurations; // <oldName, newName> - QHash<QSharedPointer<File>, IConfiguration*> m_newFilesConfigurations; + QHash<QSharedPointer<File>, QList<IConfiguration*> > m_newFilesConfigurations; }; class Configurations2003Widget : public ConfigurationsBaseWidget |