summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRadovan Zivkovic <pivonroll@gmail.com>2013-09-22 17:22:22 +0200
committerOswald Buddenhagen <oswald.buddenhagen@digia.com>2014-03-11 19:54:57 +0100
commit67e04d3803840726aa32fc80108f47bf67595b80 (patch)
treeacaf1c9891466cf42b48d44742863209a09cca27
parent1f5909153816892917d004433221c2d02794a801 (diff)
downloadqt-creator-67e04d3803840726aa32fc80108f47bf67595b80.tar.gz
Configuration class now implements IConfiguration interface.
Change-Id: Ife83dc8a501b58447249a151f752e7e98670a65a Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
-rw-r--r--src/plugins/vcprojectmanager/interfaces/iattributecontainer.h55
-rw-r--r--src/plugins/vcprojectmanager/interfaces/iattributedescriptiondataitem.h (renamed from src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/iattributedescriptiondataitem.h)0
-rw-r--r--src/plugins/vcprojectmanager/interfaces/iconfiguration.h75
-rw-r--r--src/plugins/vcprojectmanager/interfaces/iconfigurations.h55
-rw-r--r--src/plugins/vcprojectmanager/interfaces/interfaces.pri12
-rw-r--r--src/plugins/vcprojectmanager/interfaces/isectioncontainer.h57
-rw-r--r--src/plugins/vcprojectmanager/interfaces/itool.h55
-rw-r--r--src/plugins/vcprojectmanager/interfaces/itoolattribute.h (renamed from src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/itoolattribute.h)0
-rw-r--r--src/plugins/vcprojectmanager/interfaces/itooldescription.h62
-rw-r--r--src/plugins/vcprojectmanager/interfaces/itools.h57
-rw-r--r--src/plugins/vcprojectmanager/interfaces/itoolsection.h57
-rw-r--r--src/plugins/vcprojectmanager/interfaces/itoolsectiondescription.h61
-rw-r--r--src/plugins/vcprojectmanager/vcproject.cpp38
-rw-r--r--src/plugins/vcprojectmanager/vcproject.h3
-rw-r--r--src/plugins/vcprojectmanager/vcprojectbuildconfiguration.cpp12
-rw-r--r--src/plugins/vcprojectmanager/vcprojectbuildconfiguration.h4
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmanager.pro10
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/activexreference.cpp50
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/activexreference.h17
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.cpp49
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.h17
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/configuration.cpp209
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/configuration.h70
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/configurations.cpp100
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/configurations.h19
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/configurationtools.cpp113
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/configurationtools.h61
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/file.cpp53
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/file.h10
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/generalattributecontainer.cpp111
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/generalattributecontainer.h61
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/ivcprojectnodemodel.cpp4
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/ivcprojectnodemodel.h1
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/projectreference.cpp8
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/projectreference.h8
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.cpp47
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.h20
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/configurationtool.cpp91
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/configurationtool.h20
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/attributedescriptiondataitem.h2
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/booltoolattribute.h2
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/integertoolattribute.h2
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/stringlisttoolattribute.h2
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/stringtoolattribute.h2
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/tooldescription.cpp16
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/tooldescription.h13
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/toolsectioncontainer.cpp135
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/toolsectioncontainer.h61
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsection.cpp15
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsection.h13
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsectiondescription.cpp4
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsectiondescription.h6
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri11
-rw-r--r--src/plugins/vcprojectmanager/widgets/configurationswidgets.cpp136
-rw-r--r--src/plugins/vcprojectmanager/widgets/configurationswidgets.h18
-rw-r--r--src/plugins/vcprojectmanager/widgets/configurationwidgets.cpp5
-rw-r--r--src/plugins/vcprojectmanager/widgets/toolwidgets/booltoolattributesettingsitem.cpp2
-rw-r--r--src/plugins/vcprojectmanager/widgets/toolwidgets/integertoolattributesettingsitem.cpp2
-rw-r--r--src/plugins/vcprojectmanager/widgets/toolwidgets/toolsectionsettingswidget.cpp6
-rw-r--r--src/plugins/vcprojectmanager/widgets/toolwidgets/toolsectionsettingswidget.h4
-rw-r--r--src/plugins/vcprojectmanager/widgets/toolwidgets/toolsettingswidget.cpp13
-rw-r--r--src/plugins/vcprojectmanager/widgets/toolwidgets/toolsettingswidget.h2
-rw-r--r--src/plugins/vcprojectmanager/widgets/vcnodewidget.cpp4
-rw-r--r--src/plugins/vcprojectmanager/widgets/vcnodewidget.h1
64 files changed, 1599 insertions, 630 deletions
diff --git a/src/plugins/vcprojectmanager/interfaces/iattributecontainer.h b/src/plugins/vcprojectmanager/interfaces/iattributecontainer.h
new file mode 100644
index 0000000000..9be5b49f67
--- /dev/null
+++ b/src/plugins/vcprojectmanager/interfaces/iattributecontainer.h
@@ -0,0 +1,55 @@
+/**************************************************************************
+**
+** 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_IATTRIBUTEHANDLER_H
+#define VCPROJECTMANAGER_INTERNAL_IATTRIBUTEHANDLER_H
+
+#include <QString>
+#include <QDomElement>
+
+namespace VcProjectManager {
+namespace Internal {
+
+class IAttributeContainer
+{
+public:
+ virtual ~IAttributeContainer() {}
+ virtual QString attributeValue(const QString &attributeName) const = 0;
+ virtual QString getAttributeName(int index) const = 0;
+ virtual void clearAttribute(const QString &attributeName) = 0;
+ virtual void removeAttribute(const QString &attributeName) = 0;
+ virtual void setAttribute(const QString &attributeName, const QString &attributeValue) = 0;
+ virtual int getAttributeCount() const = 0;
+ virtual void appendToXMLNode(QDomElement &elementNode) const = 0;
+};
+
+} // namespace Internal
+} // namespace VcProjectManager
+
+#endif // VCPROJECTMANAGER_INTERNAL_IATTRIBUTEHANDLER_H
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/iattributedescriptiondataitem.h b/src/plugins/vcprojectmanager/interfaces/iattributedescriptiondataitem.h
index c3593653d2..c3593653d2 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/iattributedescriptiondataitem.h
+++ b/src/plugins/vcprojectmanager/interfaces/iattributedescriptiondataitem.h
diff --git a/src/plugins/vcprojectmanager/interfaces/iconfiguration.h b/src/plugins/vcprojectmanager/interfaces/iconfiguration.h
new file mode 100644
index 0000000000..0e76f19968
--- /dev/null
+++ b/src/plugins/vcprojectmanager/interfaces/iconfiguration.h
@@ -0,0 +1,75 @@
+/**************************************************************************
+**
+** 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_ICONFIGURATION_H
+#define VCPROJECTMANAGER_INTERNAL_ICONFIGURATION_H
+
+#include <QString>
+#include <QObject>
+#include "../vcprojectmodel/ivcprojectnodemodel.h"
+
+namespace VcProjectManager {
+namespace Internal {
+
+class ITools;
+class IAttributeContainer;
+
+class IConfiguration : public QObject, public IVcProjectXMLNode
+{
+ Q_OBJECT
+
+public:
+ IConfiguration(QObject *parent = 0)
+ : QObject(parent) {}
+
+ virtual ~IConfiguration() {}
+
+ virtual IAttributeContainer* attributeContainer() const = 0;
+ virtual QString fullName() const = 0;
+ virtual QString name() const = 0;
+ virtual QString platform() const = 0;
+ virtual void setFullName(const QString &fullName) = 0;
+ virtual void setName(const QString &name) = 0;
+ virtual void setPlatform(const QString &platform) = 0;
+ virtual ITools* tools() const = 0;
+
+ /*!
+ * Implement in order to support creating a clone of a IConfiguration instance.
+ * \return A pointer to newly created IConfiguration instance.
+ */
+ virtual IConfiguration* clone() const = 0;
+
+signals:
+ void nameChanged();
+};
+
+} // namespace Internal
+} // namespace VcProjectManager
+
+#endif // VCPROJECTMANAGER_INTERNAL_ICONFIGURATION_H
diff --git a/src/plugins/vcprojectmanager/interfaces/iconfigurations.h b/src/plugins/vcprojectmanager/interfaces/iconfigurations.h
new file mode 100644
index 0000000000..b6eae3b4c8
--- /dev/null
+++ b/src/plugins/vcprojectmanager/interfaces/iconfigurations.h
@@ -0,0 +1,55 @@
+/**************************************************************************
+**
+** 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_ICONFIGURATIONHANDLER_H
+#define VCPROJECTMANAGER_INTERNAL_ICONFIGURATIONHANDLER_H
+
+#include <QString>
+
+namespace VcProjectManager {
+namespace Internal {
+
+class IConfiguration;
+
+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;
+};
+
+} // namespace Internal
+} // namespace VcProjectManager
+
+#endif // VCPROJECTMANAGER_INTERNAL_ICONFIGURATIONHANDLER_H
diff --git a/src/plugins/vcprojectmanager/interfaces/interfaces.pri b/src/plugins/vcprojectmanager/interfaces/interfaces.pri
new file mode 100644
index 0000000000..af1b64e0eb
--- /dev/null
+++ b/src/plugins/vcprojectmanager/interfaces/interfaces.pri
@@ -0,0 +1,12 @@
+HEADERS += \
+ interfaces/itools.h \
+ interfaces/itool.h \
+ interfaces/iconfiguration.h \
+ interfaces/iattributecontainer.h \
+ interfaces/isectioncontainer.h \
+ interfaces/itoolsection.h \
+ interfaces/itooldescription.h \
+ interfaces/itoolsectiondescription.h \
+ interfaces/itoolattribute.h \
+ interfaces/iattributedescriptiondataitem.h \
+ interfaces/iconfigurations.h
diff --git a/src/plugins/vcprojectmanager/interfaces/isectioncontainer.h b/src/plugins/vcprojectmanager/interfaces/isectioncontainer.h
new file mode 100644
index 0000000000..1cc294b53b
--- /dev/null
+++ b/src/plugins/vcprojectmanager/interfaces/isectioncontainer.h
@@ -0,0 +1,57 @@
+/**************************************************************************
+**
+** 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_ISECTIONCONTAINER_H
+#define VCPROJECTMANAGER_INTERNAL_ISECTIONCONTAINER_H
+
+#include <QString>
+#include <QDomElement>
+
+namespace VcProjectManager {
+namespace Internal {
+
+class IToolSection;
+
+class ISectionContainer
+{
+public:
+ virtual ~ISectionContainer() {}
+ virtual ISectionContainer& operator=(ISectionContainer &toolSec) = 0;
+ virtual IToolSection* section(int index) const = 0;
+ virtual IToolSection* section(const QString &sectionName) const = 0;
+ virtual int sectionCount() const = 0;
+ virtual void appendSection(IToolSection *section) = 0;
+ virtual void removeSection(const QString &sectionName) = 0;
+ virtual void appendToXMLNode(QDomElement &elementNode) = 0;
+};
+
+} // Internal
+} // VcProjectManager
+
+#endif // VCPROJECTMANAGER_INTERNAL_ISECTIONCONTAINER_H
diff --git a/src/plugins/vcprojectmanager/interfaces/itool.h b/src/plugins/vcprojectmanager/interfaces/itool.h
new file mode 100644
index 0000000000..347f547f50
--- /dev/null
+++ b/src/plugins/vcprojectmanager/interfaces/itool.h
@@ -0,0 +1,55 @@
+/**************************************************************************
+**
+** 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_ITOOL_H
+#define VCPROJECTMANAGER_INTERNAL_ITOOL_H
+
+#include <QString>
+#include "../vcprojectmodel/ivcprojectnodemodel.h"
+
+namespace VcProjectManager {
+namespace Internal {
+
+class ISectionContainer;
+class IToolDescription;
+
+class ITool : public IVcProjectXMLNode
+{
+public:
+ virtual ~ITool() {}
+
+ virtual ISectionContainer* sectionContainer() const = 0;
+ virtual const IToolDescription* toolDescription() const = 0;
+ virtual ITool* clone() const = 0;
+};
+
+} // namespace Internal
+} // namespace VcProjectManager
+
+#endif // VCPROJECTMANAGER_INTERNAL_ITOOL_H
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/itoolattribute.h b/src/plugins/vcprojectmanager/interfaces/itoolattribute.h
index 30c8f02424..30c8f02424 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/itoolattribute.h
+++ b/src/plugins/vcprojectmanager/interfaces/itoolattribute.h
diff --git a/src/plugins/vcprojectmanager/interfaces/itooldescription.h b/src/plugins/vcprojectmanager/interfaces/itooldescription.h
new file mode 100644
index 0000000000..803101ffef
--- /dev/null
+++ b/src/plugins/vcprojectmanager/interfaces/itooldescription.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 VCPROJECTMANAGER_ITOOLDESCRIPTION_H
+#define VCPROJECTMANAGER_ITOOLDESCRIPTION_H
+
+#include <QString>
+
+namespace VcProjectManager {
+namespace Internal {
+
+class ITool;
+class IToolSectionDescription;
+
+class IToolDescription
+{
+public:
+ virtual ~IToolDescription() {}
+ virtual int sectionDescriptionCount() const = 0;
+ virtual IToolSectionDescription *sectionDescription(int index) const = 0;
+ virtual void addSectionDescription(IToolSectionDescription *sectionDescription) = 0;
+ virtual void removeSectionDescription(IToolSectionDescription *sectionDescription) = 0;
+
+ virtual QString toolKey() const = 0;
+ virtual void setToolKey(const QString &toolKey) = 0;
+
+ virtual QString toolDisplayName() const = 0;
+ virtual void setToolDisplayName(const QString &toolDisplayName) = 0;
+
+ virtual ITool* createTool() const = 0;
+};
+
+} // Internal
+} // VcProjectManager
+
+#endif // VCPROJECTMANAGER_ITOOLDESCRIPTION_H
diff --git a/src/plugins/vcprojectmanager/interfaces/itools.h b/src/plugins/vcprojectmanager/interfaces/itools.h
new file mode 100644
index 0000000000..25a7663938
--- /dev/null
+++ b/src/plugins/vcprojectmanager/interfaces/itools.h
@@ -0,0 +1,57 @@
+/**************************************************************************
+**
+** 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_ITOOLHANDLER_H
+#define VCPROJECTMANAGER_INTERNAL_ITOOLHANDLER_H
+
+#include <QString>
+#include <QDomElement>
+
+namespace VcProjectManager {
+namespace Internal {
+
+class ITool;
+
+class ITools
+{
+public:
+ virtual ~ITools() {}
+ virtual ITools& operator= (const ITools &tools) = 0;
+ virtual void addTool(ITool *tool) = 0;
+ virtual void removeTool(ITool *tool) = 0;
+ virtual ITool* tool(const QString &toolKey) const = 0;
+ virtual ITool* tool(int index) const = 0;
+ virtual int toolCount() const = 0;
+ virtual void appendToXMLNode(QDomElement &domElement, QDomDocument &domDocument) const = 0;
+};
+
+} // namespace Internal
+} // namespace VcProjectManager
+
+#endif // VCPROJECTMANAGER_INTERNAL_ITOOLHANDLER_H
diff --git a/src/plugins/vcprojectmanager/interfaces/itoolsection.h b/src/plugins/vcprojectmanager/interfaces/itoolsection.h
new file mode 100644
index 0000000000..6752456b0f
--- /dev/null
+++ b/src/plugins/vcprojectmanager/interfaces/itoolsection.h
@@ -0,0 +1,57 @@
+/**************************************************************************
+**
+** 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_ITOOLSECTION_H
+#define VCPROJECTMANAGER_ITOOLSECTION_H
+
+namespace VcProjectManager {
+namespace Internal {
+
+class IToolAttribute;
+class IToolSectionDescription;
+class VcNodeWidget;
+
+class IToolSection
+{
+public:
+ virtual ~IToolSection() {}
+ virtual IToolAttribute* toolAttribute(int index) const = 0;
+ virtual IToolAttribute* toolAttribute(const QString &attributeKey) const = 0;
+ virtual int toolAttributeCount() const = 0;
+ virtual void addToolAttribute(IToolAttribute* toolAttribute) = 0;
+ virtual void removeToolAttribute(IToolAttribute* toolAttribute) = 0;
+ virtual const IToolSectionDescription *sectionDescription() const = 0;
+ virtual VcNodeWidget* createSettingsWidget() = 0;
+ virtual IToolSection* clone() const = 0;
+};
+
+} // Internal
+} // VcProjectManager
+
+#endif // VCPROJECTMANAGER_ITOOLSECTION_H
diff --git a/src/plugins/vcprojectmanager/interfaces/itoolsectiondescription.h b/src/plugins/vcprojectmanager/interfaces/itoolsectiondescription.h
new file mode 100644
index 0000000000..b25b2a8f64
--- /dev/null
+++ b/src/plugins/vcprojectmanager/interfaces/itoolsectiondescription.h
@@ -0,0 +1,61 @@
+/**************************************************************************
+**
+** 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_ITOOLSECTIONDESCRIPTION_H
+#define VCPROJECTMANAGER_INTERNAL_ITOOLSECTIONDESCRIPTION_H
+
+#include <QString>
+
+namespace VcProjectManager {
+namespace Internal {
+
+class IToolSection;
+class IAttributeDescriptionDataItem;
+
+class IToolSectionDescription
+{
+public:
+ virtual ~IToolSectionDescription() {}
+ virtual IToolSection* createToolSection() const = 0;
+
+ virtual QString name() const = 0;
+ virtual void setName(const QString &name) = 0;
+
+ virtual IAttributeDescriptionDataItem* attributeDescription(const QString &attributeKey) const = 0;
+ virtual IAttributeDescriptionDataItem* attributeDescription(int index) const = 0;
+ virtual int attributeDescriptionCount() const = 0;
+ virtual void addAttributeDescription(IAttributeDescriptionDataItem* attributeDesc) = 0;
+ virtual void removeAttributeDescription(IAttributeDescriptionDataItem* attributeDesc) = 0;
+ virtual void removeAttributeDescription(const QString &attributeKey) = 0;
+};
+
+} // Internal
+} // VcProjectManager
+
+#endif // VCPROJECTMANAGER_INTERNAL_ITOOLSECTIONDESCRIPTION_H
diff --git a/src/plugins/vcprojectmanager/vcproject.cpp b/src/plugins/vcprojectmanager/vcproject.cpp
index de6c3e7ead..3b6fffc339 100644
--- a/src/plugins/vcprojectmanager/vcproject.cpp
+++ b/src/plugins/vcprojectmanager/vcproject.cpp
@@ -43,7 +43,9 @@
#include "vcprojectmodel/tools/configurationtool.h"
#include "vcprojectmodel/tools/toolsection.h"
#include "vcprojectmodel/tools/toolattributes/stringlisttoolattribute.h"
-#include "vcprojectmodel/tools/toolattributes/iattributedescriptiondataitem.h"
+#include "interfaces/iattributedescriptiondataitem.h"
+#include "interfaces/isectioncontainer.h"
+#include "interfaces/itools.h"
#include <coreplugin/icontext.h>
#include <coreplugin/icore.h>
@@ -216,7 +218,7 @@ void VcProject::onSettingsDialogAccepted()
foreach (ProjectExplorer::BuildConfiguration *bc, buildConfigurationList) {
VcProjectBuildConfiguration *vcBc = qobject_cast<VcProjectBuildConfiguration *>(bc);
if (vcBc) {
- Configuration::Ptr lookFor = configs->configuration(vcBc->displayName());
+ IConfiguration *lookFor = configs->configuration(vcBc->displayName());
if (!lookFor)
target->removeBuildConfiguration(vcBc);
}
@@ -227,11 +229,11 @@ void VcProject::onSettingsDialogAccepted()
// add all new build configurations
foreach (ProjectExplorer::Target *target, targetList) {
if (target) {
- QList<Configuration::Ptr > configListModel = configs->configurations();
- foreach (Configuration::Ptr configPtr, configListModel) {
- if (configPtr && !findBuildConfiguration(target, configPtr->name()))
- addBuildConfiguration(target, configPtr);
+ for (int i = 0; i < configs->configurationCount(); ++i) {
+ IConfiguration *config = configs->configuration(i);
+ if (config && !findBuildConfiguration(target, config->fullName()))
+ addBuildConfiguration(target, config);
}
}
}
@@ -254,10 +256,12 @@ bool VcProject::fromMap(const QVariantMap &map)
bool VcProject::setupTarget(ProjectExplorer::Target *t)
{
- QList<Configuration::Ptr > configsModel = m_projectFile->documentModel()->vcProjectDocument()->configurations()->configurations();
+ for (int i = 0; i < m_projectFile->documentModel()->vcProjectDocument()->configurations()->configurationCount(); ++i){
+ IConfiguration *config = m_projectFile->documentModel()->vcProjectDocument()->configurations()->configuration(i);
+ if (config)
+ addBuildConfiguration(t, config);
+ }
- foreach (const Configuration::Ptr &configModel, configsModel)
- addBuildConfiguration(t, configModel);
return true;
}
@@ -303,13 +307,13 @@ void VcProject::updateCodeModels()
QTC_ASSERT(vbc, return);
QString configName = vbc->displayName();
- Configuration::Ptr configModel = m_projectFile->documentModel()->vcProjectDocument()->configurations()->configuration(configName);
+ IConfiguration *configModel = m_projectFile->documentModel()->vcProjectDocument()->configurations()->configuration(configName);
if (configModel) {
- ConfigurationTool *configTool = configModel->configurationTool(QLatin1String(ToolConstants::strVCCLCompilerTool));
+ ITool *configTool = configModel->tools()->tool(QLatin1String(ToolConstants::strVCCLCompilerTool));
if (configTool) {
- for (int i = 0; i < configTool->sectionCount(); ++i) {
- ToolSection *toolSection = configTool->section(i);
+ for (int i = 0; i < configTool->sectionContainer()->sectionCount(); ++i) {
+ IToolSection *toolSection = configTool->sectionContainer()->section(i);
if (toolSection) {
IToolAttribute *toolAttr = toolSection->toolAttribute(QLatin1String("PreprocessorDefinitions"));
@@ -368,19 +372,19 @@ void VcProject::importBuildConfigurations()
addTarget(createTarget(kit));
}
-void VcProject::addBuildConfiguration(Target *target, QSharedPointer<Configuration> config)
+void VcProject::addBuildConfiguration(Target *target, IConfiguration *config)
{
if (target && config) {
VcProjectBuildConfigurationFactory *factory
= ExtensionSystem::PluginManager::instance()->getObject<VcProjectBuildConfigurationFactory>();
- VcProjectBuildConfiguration *bc = factory->create(target, Constants::VC_PROJECT_BC_ID, config->name());
+ VcProjectBuildConfiguration *bc = factory->create(target, Constants::VC_PROJECT_BC_ID, config->fullName());
if (!bc)
return;
bc->setConfiguration(config);
ProjectExplorer::BuildStepList *buildSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
VcMakeStep *makeStep = new VcMakeStep(buildSteps);
- QString argument(QLatin1String("/p:configuration=\"") + config->name() + QLatin1String("\""));
+ QString argument(QLatin1String("/p:configuration=\"") + config->fullName() + QLatin1String("\""));
makeStep->addBuildArgument(m_projectFile->filePath());
makeStep->addBuildArgument(argument);
buildSteps->insertStep(0, makeStep);
@@ -388,7 +392,7 @@ void VcProject::addBuildConfiguration(Target *target, QSharedPointer<Configurati
//clean step
ProjectExplorer::BuildStepList *cleanSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
makeStep = new VcMakeStep(cleanSteps);
- argument = QLatin1String("/p:configuration=\"") + config->name() + QLatin1String("\" /t:Clean");
+ argument = QLatin1String("/p:configuration=\"") + config->fullName() + QLatin1String("\" /t:Clean");
makeStep->addBuildArgument(m_projectFile->filePath());
makeStep->addBuildArgument(argument);
cleanSteps->insertStep(0, makeStep);
diff --git a/src/plugins/vcprojectmanager/vcproject.h b/src/plugins/vcprojectmanager/vcproject.h
index 657f67c0eb..ff7bd52956 100644
--- a/src/plugins/vcprojectmanager/vcproject.h
+++ b/src/plugins/vcprojectmanager/vcproject.h
@@ -53,6 +53,7 @@ class VcManager;
class VcFolderNode;
class Configuration;
class VcProjectBuildConfiguration;
+class IConfiguration;
class VcProject : public ProjectExplorer::Project
{
@@ -90,7 +91,7 @@ private:
void addCxxModelFiles(const ProjectExplorer::FolderNode *node, QStringList &sourceFiles);
void updateCodeModels();
void importBuildConfigurations();
- void addBuildConfiguration(ProjectExplorer::Target *target, QSharedPointer<Configuration> config);
+ void addBuildConfiguration(ProjectExplorer::Target *target, IConfiguration *config);
VcProjectBuildConfiguration* findBuildConfiguration(ProjectExplorer::Target *target, const QString &buildConfigurationName) const;
VcManager *m_projectManager;
diff --git a/src/plugins/vcprojectmanager/vcprojectbuildconfiguration.cpp b/src/plugins/vcprojectmanager/vcprojectbuildconfiguration.cpp
index 73f7737417..ff32703a0e 100644
--- a/src/plugins/vcprojectmanager/vcprojectbuildconfiguration.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectbuildconfiguration.cpp
@@ -82,15 +82,15 @@ ProjectExplorer::BuildConfiguration::BuildType VcProjectBuildConfiguration::buil
return Debug;
}
-void VcProjectBuildConfiguration::setConfiguration(Configuration::Ptr config)
+void VcProjectBuildConfiguration::setConfiguration(IConfiguration *config)
{
m_configuration = config;
- connect(m_configuration.data(), SIGNAL(nameChanged()), this, SLOT(reloadConfigurationName()));
+ connect(m_configuration, SIGNAL(nameChanged()), this, SLOT(reloadConfigurationName()));
}
QString VcProjectBuildConfiguration::configurationNameOnly() const
{
- QStringList splits = m_configuration->name().split(QLatin1Char('|'));
+ QStringList splits = m_configuration->fullName().split(QLatin1Char('|'));
if (splits.isEmpty())
return QString();
@@ -100,7 +100,7 @@ QString VcProjectBuildConfiguration::configurationNameOnly() const
QString VcProjectBuildConfiguration::platformNameOnly() const
{
- QStringList splits = m_configuration->name().split(QLatin1Char('|'));
+ QStringList splits = m_configuration->fullName().split(QLatin1Char('|'));
if (splits.isEmpty() || splits.size() <= 1 || splits.size() > 2)
return QString();
@@ -115,8 +115,8 @@ QVariantMap VcProjectBuildConfiguration::toMap() const
void VcProjectBuildConfiguration::reloadConfigurationName()
{
- setDisplayName(m_configuration->name());
- setDefaultDisplayName(m_configuration->name());
+ setDisplayName(m_configuration->fullName());
+ setDefaultDisplayName(m_configuration->fullName());
}
VcProjectBuildConfiguration::VcProjectBuildConfiguration(ProjectExplorer::Target *parent, VcProjectBuildConfiguration *source)
diff --git a/src/plugins/vcprojectmanager/vcprojectbuildconfiguration.h b/src/plugins/vcprojectmanager/vcprojectbuildconfiguration.h
index f33647e908..011862dfbf 100644
--- a/src/plugins/vcprojectmanager/vcprojectbuildconfiguration.h
+++ b/src/plugins/vcprojectmanager/vcprojectbuildconfiguration.h
@@ -51,7 +51,7 @@ public:
ProjectExplorer::IOutputParser *createOutputParser() const;
BuildType buildType() const;
- void setConfiguration(Configuration::Ptr config);
+ void setConfiguration(IConfiguration *config);
QString configurationNameOnly() const;
QString platformNameOnly() const;
@@ -66,7 +66,7 @@ protected:
private:
QString m_buildDirectory;
- Configuration::Ptr m_configuration;
+ IConfiguration *m_configuration;
};
class VcProjectBuildConfigurationFactory : public ProjectExplorer::IBuildConfigurationFactory
diff --git a/src/plugins/vcprojectmanager/vcprojectmanager.pro b/src/plugins/vcprojectmanager/vcprojectmanager.pro
index 67dd8ff4ae..7a3f63c242 100644
--- a/src/plugins/vcprojectmanager/vcprojectmanager.pro
+++ b/src/plugins/vcprojectmanager/vcprojectmanager.pro
@@ -1,5 +1,3 @@
-include(../../qtcreatorplugin.pri)
-
QT += xml xmlpatterns
HEADERS = vcprojectmanagerplugin.h \
@@ -33,8 +31,10 @@ SOURCES = vcprojectmanagerplugin.cpp \
OTHER_FILES += \
VcProject.mimetypes.xml
-include($$PWD/vcprojectmodel/vcprojectmodel.pri)
-include($$PWD/widgets/widgets.pri)
-
RESOURCES += \
vcproject.qrc
+
+include($$PWD/vcprojectmodel/vcprojectmodel.pri)
+include($$PWD/widgets/widgets.pri)
+include(../../qtcreatorplugin.pri)
+include(interfaces/interfaces.pri)
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.cpp
index f633101dbf..d03af533a0 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.cpp
@@ -37,7 +37,7 @@ namespace Internal {
ActiveXReference::~ActiveXReference()
{
- m_referenceConfigurations.clear();
+ qDeleteAll(m_referenceConfigurations);
}
void ActiveXReference::processNode(const QDomNode &node)
@@ -91,54 +91,50 @@ QDomNode ActiveXReference::toXMLDomNode(QDomDocument &domXMLDocument) const
activeXNode.setAttribute(QLatin1String("ControlVersion"), m_controlVersion);
activeXNode.setAttribute(QLatin1String("WrapperTool"), m_wrapperTool);
- foreach (const Configuration::Ptr &refConfig, m_referenceConfigurations)
+ foreach (const IConfiguration *refConfig, m_referenceConfigurations)
activeXNode.appendChild(refConfig->toXMLDomNode(domXMLDocument));
return activeXNode;
}
-void ActiveXReference::addReferenceConfiguration(Configuration::Ptr refConfig)
+void ActiveXReference::addReferenceConfiguration(IConfiguration *refConfig)
{
if (m_referenceConfigurations.contains(refConfig))
return;
// Don't add configuration with the same name
- foreach (const Configuration::Ptr &refConf, m_referenceConfigurations) {
- if (refConfig->name() == refConf->name())
+ foreach (const IConfiguration *refConf, m_referenceConfigurations) {
+ if (refConfig->fullName() == refConf->fullName())
return;
}
m_referenceConfigurations.append(refConfig);
}
-void ActiveXReference::removeReferenceConfiguration(Configuration::Ptr refConfig)
+void ActiveXReference::removeReferenceConfiguration(IConfiguration *refConfig)
{
m_referenceConfigurations.removeAll(refConfig);
}
void ActiveXReference::removeReferenceConfiguration(const QString &refConfigName)
{
- foreach (const Configuration::Ptr &refConfig, m_referenceConfigurations) {
- if (refConfig->name() == refConfigName) {
- removeReferenceConfiguration(refConfig);
+ foreach (IConfiguration *refConfig, m_referenceConfigurations) {
+ if (refConfig->fullName() == refConfigName) {
+ m_referenceConfigurations.removeOne(refConfig);
+ delete refConfig;
return;
}
}
}
-QList<Configuration::Ptr> ActiveXReference::referenceConfigurations() const
+IConfiguration* ActiveXReference::referenceConfiguration(const QString &refConfigName) const
{
- return m_referenceConfigurations;
-}
-
-Configuration::Ptr ActiveXReference::referenceConfiguration(const QString &refConfigName) const
-{
- foreach (const Configuration::Ptr &refConfig, m_referenceConfigurations) {
- if (refConfig->name() == refConfigName)
+ foreach (IConfiguration *refConfig, m_referenceConfigurations) {
+ if (refConfig->fullName() == refConfigName)
return refConfig;
}
- return Configuration::Ptr();
+ return 0;
}
QString ActiveXReference::controlGUID() const
@@ -181,7 +177,7 @@ ActiveXReference::ActiveXReference(const ActiveXReference &ref)
m_controlVersion = ref.m_controlVersion;
m_wrapperTool = ref.m_wrapperTool;
- foreach (const Configuration::Ptr &refConf, ref.m_referenceConfigurations)
+ foreach (const IConfiguration *refConf, ref.m_referenceConfigurations)
m_referenceConfigurations.append(refConf->clone());
}
@@ -194,7 +190,7 @@ ActiveXReference &ActiveXReference::operator =(const ActiveXReference &ref)
m_referenceConfigurations.clear();
- foreach (const Configuration::Ptr &refConf, ref.m_referenceConfigurations)
+ foreach (const IConfiguration *refConf, ref.m_referenceConfigurations)
m_referenceConfigurations.append(refConf->clone());
}
@@ -203,7 +199,7 @@ ActiveXReference &ActiveXReference::operator =(const ActiveXReference &ref)
void ActiveXReference::processReferenceConfig(const QDomNode &referenceConfig)
{
- Configuration::Ptr referenceConfiguration = createReferenceConfiguration();
+ IConfiguration *referenceConfiguration = createReferenceConfiguration();
referenceConfiguration->processNode(referenceConfig);
m_referenceConfigurations.append(referenceConfiguration);
@@ -237,9 +233,9 @@ ActiveXReference2003::ActiveXReference2003()
{
}
-Configuration::Ptr ActiveXReference2003::createReferenceConfiguration() const
+IConfiguration* ActiveXReference2003::createReferenceConfiguration() const
{
- return ConfigurationsFactory::createConfiguration(VcDocConstants::DV_MSVC_2003, QLatin1String("ReferenceConfiguration"));
+ return new Configuration2003(QLatin1String("ReferenceConfiguration"));
}
@@ -336,9 +332,9 @@ ActiveXReference2005::ActiveXReference2005()
{
}
-Configuration::Ptr ActiveXReference2005::createReferenceConfiguration() const
+IConfiguration* ActiveXReference2005::createReferenceConfiguration() const
{
- return ConfigurationsFactory::createConfiguration(VcDocConstants::DV_MSVC_2005, QLatin1String("ReferenceConfiguration"));
+ return new Configuration2005(QLatin1String("ReferenceConfiguration"));
}
@@ -443,9 +439,9 @@ ActiveXReference2008::ActiveXReference2008()
{
}
-Configuration::Ptr ActiveXReference2008::createReferenceConfiguration() const
+IConfiguration* ActiveXReference2008::createReferenceConfiguration() const
{
- return ConfigurationsFactory::createConfiguration(VcDocConstants::DV_MSVC_2008, QLatin1String("ReferenceConfiguration"));
+ return new Configuration2008(QLatin1String("ReferenceConfiguration"));
}
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.h b/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.h
index 22d53a1357..e079b58ccf 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.h
@@ -55,11 +55,10 @@ public:
*/
virtual ActiveXReference::Ptr clone() const = 0;
- void addReferenceConfiguration(Configuration::Ptr refConfig);
- void removeReferenceConfiguration(Configuration::Ptr refConfig);
+ void addReferenceConfiguration(IConfiguration *refConfig);
+ void removeReferenceConfiguration(IConfiguration *refConfig);
void removeReferenceConfiguration(const QString &refConfigName);
- QList<Configuration::Ptr> referenceConfigurations() const;
- Configuration::Ptr referenceConfiguration(const QString &refConfigName) const;
+ IConfiguration *referenceConfiguration(const QString &refConfigName) const;
QString controlGUID() const;
void setControlGUID(const QString &ctrlGUID);
@@ -79,12 +78,12 @@ protected:
* Reimplement this to create a new reference configuration.
* \return A shared pointer to a newly created reference configuration.
*/
- virtual Configuration::Ptr createReferenceConfiguration() const = 0;
+ virtual IConfiguration* createReferenceConfiguration() const = 0;
QString m_controlGUID; // required
QString m_controlVersion; // required
QString m_wrapperTool; // required
- QList<Configuration::Ptr> m_referenceConfigurations;
+ QList<IConfiguration *> m_referenceConfigurations;
};
class ActiveXReference2003 : public ActiveXReference
@@ -101,7 +100,7 @@ public:
protected:
ActiveXReference2003();
void init();
- Configuration::Ptr createReferenceConfiguration() const;
+ IConfiguration *createReferenceConfiguration() const;
};
class ActiveXReference2005 : public ActiveXReference2003
@@ -125,7 +124,7 @@ public:
protected:
ActiveXReference2005();
- Configuration::Ptr createReferenceConfiguration() const;
+ IConfiguration *createReferenceConfiguration() const;
void processNodeAttributes(const QDomElement &element);
QString m_localeID; // opt
@@ -154,7 +153,7 @@ public:
protected:
ActiveXReference2008();
- Configuration::Ptr createReferenceConfiguration() const;
+ IConfiguration* createReferenceConfiguration() const;
void processNodeAttributes(const QDomElement &element);
bool m_copyLocalDependencies; //optional default: true
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.cpp
index 83e95aa62e..2a7bf34ef8 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.cpp
@@ -38,6 +38,7 @@ namespace Internal {
AssemblyReference::~AssemblyReference()
{
+ qDeleteAll(m_referenceConfigurations);
}
void AssemblyReference::processNode(const QDomNode &node)
@@ -82,7 +83,7 @@ QDomNode AssemblyReference::toXMLDomNode(QDomDocument &domXMLDocument) const
assemblyRefNode.setAttribute(QLatin1String("RelativePath"), m_relativePath);
- foreach (const Configuration::Ptr &refConfig, m_referenceConfigurations)
+ foreach (const IConfiguration *refConfig, m_referenceConfigurations)
assemblyRefNode.appendChild(refConfig->toXMLDomNode(domXMLDocument));
return assemblyRefNode;
@@ -98,46 +99,42 @@ void AssemblyReference::setRelativePath(const QString &relativePath)
m_relativePath = relativePath;
}
-void AssemblyReference::addReferenceConfiguration(Configuration::Ptr refConfig)
+void AssemblyReference::addReferenceConfiguration(IConfiguration *refConfig)
{
if (m_referenceConfigurations.contains(refConfig))
return;
- foreach (const Configuration::Ptr &refConf, m_referenceConfigurations) {
- if (refConfig->name() == refConf->name())
+ foreach (const IConfiguration *refConf, m_referenceConfigurations) {
+ if (refConfig->fullName() == refConf->fullName())
return;
}
m_referenceConfigurations.append(refConfig);
}
-void AssemblyReference::removeReferenceConfiguration(Configuration::Ptr refConfig)
+void AssemblyReference::removeReferenceConfiguration(IConfiguration *refConfig)
{
m_referenceConfigurations.removeAll(refConfig);
}
void AssemblyReference::removeReferenceConfiguration(const QString &refConfName)
{
- foreach (const Configuration::Ptr &refConfig, m_referenceConfigurations) {
- if (refConfig->name() == refConfName) {
- removeReferenceConfiguration(refConfig);
+ foreach (IConfiguration *refConfig, m_referenceConfigurations) {
+ if (refConfig->fullName() == refConfName) {
+ m_referenceConfigurations.removeOne(refConfig);
+ delete refConfig;
return;
}
}
}
-QList<Configuration::Ptr> AssemblyReference::referenceConfigurations() const
+IConfiguration* AssemblyReference::referenceConfiguration(const QString &refConfigName) const
{
- return m_referenceConfigurations;
-}
-
-Configuration::Ptr AssemblyReference::referenceConfiguration(const QString &refConfigName) const
-{
- foreach (const Configuration::Ptr &refConfig, m_referenceConfigurations) {
- if (refConfig->name() == refConfigName)
+ foreach (IConfiguration *refConfig, m_referenceConfigurations) {
+ if (refConfig->fullName() == refConfigName)
return refConfig;
}
- return Configuration::Ptr();
+ return 0;
}
AssemblyReference::AssemblyReference()
@@ -148,7 +145,7 @@ AssemblyReference::AssemblyReference(const AssemblyReference &asmRef)
{
m_relativePath = asmRef.m_relativePath;
- foreach (const Configuration::Ptr &refConfig, asmRef.m_referenceConfigurations)
+ foreach (const IConfiguration *refConfig, asmRef.m_referenceConfigurations)
m_referenceConfigurations.append(refConfig->clone());
}
@@ -157,7 +154,7 @@ AssemblyReference &AssemblyReference::operator =(const AssemblyReference &asmRef
if (this != &asmRef) {
m_relativePath = asmRef.m_relativePath;
- foreach (const Configuration::Ptr &refConfig, asmRef.m_referenceConfigurations)
+ foreach (const IConfiguration *refConfig, asmRef.m_referenceConfigurations)
m_referenceConfigurations.append(refConfig->clone());
}
@@ -166,7 +163,7 @@ AssemblyReference &AssemblyReference::operator =(const AssemblyReference &asmRef
void AssemblyReference::processReferenceConfig(const QDomNode &referenceConfig)
{
- Configuration::Ptr referenceConfiguration = createReferenceConfiguration();
+ IConfiguration *referenceConfiguration = createReferenceConfiguration();
referenceConfiguration->processNode(referenceConfig);
m_referenceConfigurations.append(referenceConfiguration);
@@ -201,9 +198,9 @@ AssemblyReference2003::AssemblyReference2003()
{
}
-Configuration::Ptr AssemblyReference2003::createReferenceConfiguration() const
+IConfiguration* AssemblyReference2003::createReferenceConfiguration() const
{
- return ConfigurationsFactory::createConfiguration(VcDocConstants::DV_MSVC_2003, QLatin1String("ReferenceConfiguration"));
+ return new Configuration2003(QLatin1String("ReferenceConfiguration"));
}
@@ -281,9 +278,9 @@ AssemblyReference2005::AssemblyReference2005()
{
}
-Configuration::Ptr AssemblyReference2005::createReferenceConfiguration() const
+IConfiguration* AssemblyReference2005::createReferenceConfiguration() const
{
- return ConfigurationsFactory::createConfiguration(VcDocConstants::DV_MSVC_2005, QLatin1String("ReferenceConfiguration"));
+ return new Configuration2005(QLatin1String("ReferenceConfiguration"));
}
void AssemblyReference2005::processNodeAttributes(const QDomElement &element)
@@ -421,9 +418,9 @@ AssemblyReference2008::AssemblyReference2008()
{
}
-Configuration::Ptr AssemblyReference2008::createReferenceConfiguration() const
+IConfiguration* AssemblyReference2008::createReferenceConfiguration() const
{
- return ConfigurationsFactory::createConfiguration(VcDocConstants::DV_MSVC_2008, QLatin1String("ReferenceConfiguration"));
+ return new Configuration2008(QLatin1String("ReferenceConfiguration"));
}
void AssemblyReference2008::processNodeAttributes(const QDomElement &element)
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.h b/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.h
index e17308053b..234bce67e6 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.h
@@ -58,11 +58,10 @@ public:
QString relativePath() const;
void setRelativePath(const QString &relativePath);
- void addReferenceConfiguration(Configuration::Ptr refConfig);
- void removeReferenceConfiguration(Configuration::Ptr refConfig);
+ void addReferenceConfiguration(IConfiguration *refConfig);
+ void removeReferenceConfiguration(IConfiguration *refConfig);
void removeReferenceConfiguration(const QString &refConfName);
- QList<Configuration::Ptr> referenceConfigurations() const;
- Configuration::Ptr referenceConfiguration(const QString &refConfigName) const;
+ IConfiguration *referenceConfiguration(const QString &refConfigName) const;
protected:
AssemblyReference();
@@ -75,9 +74,9 @@ protected:
* Reimplement this to create a new reference configuration.
* \return A shared pointer to a newly created reference configuration.
*/
- virtual Configuration::Ptr createReferenceConfiguration() const = 0;
+ virtual IConfiguration* createReferenceConfiguration() const = 0;
- QList<Configuration::Ptr> m_referenceConfigurations;
+ QList<IConfiguration*> m_referenceConfigurations;
QString m_relativePath; // required
};
@@ -94,7 +93,7 @@ public:
protected:
AssemblyReference2003();
- Configuration::Ptr createReferenceConfiguration() const;
+ IConfiguration *createReferenceConfiguration() const;
};
class AssemblyReference2005 : public AssemblyReference2003
@@ -118,7 +117,7 @@ public:
protected:
AssemblyReference2005();
- Configuration::Ptr createReferenceConfiguration() const;
+ IConfiguration *createReferenceConfiguration() const;
void processNodeAttributes(const QDomElement &element);
QString m_assemblyName; // optional
@@ -151,7 +150,7 @@ public:
protected:
AssemblyReference2008();
- Configuration::Ptr createReferenceConfiguration() const;
+ IConfiguration *createReferenceConfiguration() const;
void processNodeAttributes(const QDomElement &element);
bool m_copyLocalDependencies; //optional default: true
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/configuration.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/configuration.cpp
index 006fae9c0d..56a5131c57 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/configuration.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/configuration.cpp
@@ -36,42 +36,47 @@
#include "tools/toolattributes/tooldescriptiondatamanager.h"
#include "tools/toolattributes/tooldescription.h"
#include "tools/configurationtool.h"
+#include "generalattributecontainer.h"
+#include "configurationtools.h"
namespace VcProjectManager {
namespace Internal {
using namespace ToolConstants;
+Configuration::Configuration(const QString &nodeName)
+ : m_nodeName(nodeName)
+{
+ m_attributeContainer = new GeneralAttributeContainer;
+ m_tools = new ConfigurationTools;
+}
+
Configuration::Configuration(const Configuration &config)
{
- m_name = config.m_name;
- m_anyAttribute = config.m_anyAttribute;
+ m_fullName = config.m_fullName;
m_nodeName = config.m_nodeName;
- qDeleteAll(m_configurationTools);
- m_configurationTools.clear();
+ m_attributeContainer = new GeneralAttributeContainer;
+ *m_attributeContainer = *config.m_attributeContainer;
- foreach (const ConfigurationTool *confTool, config.m_configurationTools)
- m_configurationTools.append(new ConfigurationTool(*confTool));
+ m_tools = new ConfigurationTools;
+ *m_tools = *config.m_tools;
}
Configuration &Configuration::operator =(const Configuration &config)
{
if (this != &config) {
- m_name = config.m_name;
- m_anyAttribute = config.m_anyAttribute;
+ m_fullName = config.m_fullName;
m_nodeName = config.m_nodeName;
- qDeleteAll(m_configurationTools);
- m_configurationTools.clear();
-
- foreach (const ConfigurationTool *confTool, m_configurationTools)
- m_configurationTools.append(new ConfigurationTool(*confTool));
+ *m_attributeContainer = *config.m_attributeContainer;
+ *m_tools = *config.m_tools;
}
return *this;
}
Configuration::~Configuration()
{
- qDeleteAll(m_configurationTools);
+ delete m_attributeContainer;
+ delete m_tools;
}
void Configuration::processNode(const QDomNode &node)
@@ -100,130 +105,68 @@ void Configuration::processNodeAttributes(const QDomElement &element)
QDomAttr domElement = domNode.toAttr();
if (domElement.name() == QLatin1String("Name")) {
- m_name = domElement.value();
+ m_fullName = domElement.value();
}
else
- m_anyAttribute.insert(domElement.name(), domElement.value());
+ m_attributeContainer->setAttribute(domElement.name(), domElement.value());
}
}
}
-QString Configuration::nodeWidgetName() const
-{
- return m_name;
-}
-
QDomNode Configuration::toXMLDomNode(QDomDocument &domXMLDocument) const
{
QDomElement configurationNode = domXMLDocument.createElement(m_nodeName);
-
- configurationNode.setAttribute(QLatin1String("Name"), m_name);
-
- QHashIterator<QString, QString> it(m_anyAttribute);
-
- while (it.hasNext()) {
- it.next();
- configurationNode.setAttribute(it.key(), it.value());
- }
-
- foreach (const ConfigurationTool *confTool, m_configurationTools)
- configurationNode.appendChild(confTool->toXMLDomNode(domXMLDocument));
-
+ configurationNode.setAttribute(QLatin1String("Name"), m_fullName);
+ m_attributeContainer->appendToXMLNode(configurationNode);
+ m_tools->appendToXMLNode(configurationNode, domXMLDocument);
return configurationNode;
}
-QString Configuration::name() const
-{
- return m_name;
-}
-
-void Configuration::setName(const QString &name)
-{
- m_name = name;
- emit nameChanged();
-}
-
-QString Configuration::attributeValue(const QString &attributeName) const
-{
- return m_anyAttribute.value(attributeName);
-}
-
-void Configuration::setAttribute(const QString &attributeName, const QString &attributeValue)
+IAttributeContainer *Configuration::attributeContainer() const
{
- m_anyAttribute.insert(attributeName, attributeValue);
+ return m_attributeContainer;
}
-void Configuration::clearAttribute(const QString &attributeName)
+QString Configuration::fullName() const
{
- if (m_anyAttribute.contains(attributeName))
- m_anyAttribute.insert(attributeName, QString());
+ return m_fullName;
}
-void Configuration::removeAttribute(const QString &attributeName)
+QString Configuration::name() const
{
- if (m_anyAttribute.contains(attributeName))
- m_anyAttribute.remove(attributeName);
+ return m_configurationName;
}
-void Configuration::addConfigurationTool(ConfigurationTool *tool)
+QString Configuration::platform() const
{
- if (!tool || m_configurationTools.contains(tool))
- return;
-
- foreach (ConfigurationTool *confTool, m_configurationTools) {
- if (confTool->toolDescription()->toolKey() == tool->toolDescription()->toolKey())
- return;
- }
-
- m_configurationTools.append(tool);
-}
-
-void Configuration::removeConfigurationTool(const QString &toolKey)
-{
- QList<ConfigurationTool *>::iterator it = m_configurationTools.begin();
-
- while (it != m_configurationTools.end()) {
- ConfigurationTool *confTool = *it;
- if (confTool && confTool->toolDescription()->toolKey() == toolKey) {
- m_configurationTools.erase(it);
- delete confTool;
- return;
- }
- ++it;
- }
+ return m_platformName;
}
-int Configuration::configurationToolCount() const
+void Configuration::setFullName(const QString &fullName)
{
- return m_configurationTools.size();
+ m_fullName = fullName;
+ emit nameChanged();
}
-ConfigurationTool *Configuration::configurationTool(int index) const
+void Configuration::setName(const QString &name)
{
- if (0 <= index && index < m_configurationTools.size())
- return m_configurationTools[index];
- return 0;
+ m_configurationName = name;
}
-ConfigurationTool *Configuration::configurationTool(const QString &toolKey) const
+void Configuration::setPlatform(const QString &platform)
{
- foreach (ConfigurationTool *confTool, m_configurationTools) {
- if (confTool && confTool->toolDescription() && confTool->toolDescription()->toolKey() == toolKey)
- return confTool;
- }
-
- return 0;
+ m_platformName = platform;
}
-Configuration::Configuration(const QString &nodeName)
- : m_nodeName(nodeName)
+ITools *Configuration::tools() const
{
+ return m_tools;
}
void Configuration::processToolNode(const QDomNode &toolNode)
{
- ConfigurationTool *toolConf = 0;
+ ITool *toolConf = 0;
QDomNamedNodeMap namedNodeMap = toolNode.toElement().attributes();
for (int i = 0; i < namedNodeMap.size(); ++i) {
@@ -242,7 +185,7 @@ void Configuration::processToolNode(const QDomNode &toolNode)
if (toolConf) {
toolConf->processNode(toolNode);
- m_configurationTools.append(toolConf);
+ m_tools->addTool(toolConf);
// process next sibling
QDomNode nextSibling = toolNode.nextSibling();
@@ -252,6 +195,11 @@ void Configuration::processToolNode(const QDomNode &toolNode)
}
+Configuration2003::Configuration2003(const QString &nodeName)
+ : Configuration(nodeName)
+{
+}
+
Configuration2003::Configuration2003(const Configuration2003 &config)
: Configuration(config)
{
@@ -266,17 +214,17 @@ VcNodeWidget *Configuration2003::createSettingsWidget()
return new Configuration2003Widget(this);
}
-Configuration::Ptr Configuration2003::clone() const
+IConfiguration *Configuration2003::clone() const
{
- return Configuration::Ptr(new Configuration2003(*this));
+ return new Configuration2003(*this);
}
-Configuration2003::Configuration2003(const QString &nodeName)
- : Configuration(nodeName)
+
+Configuration2005::Configuration2005(const QString &nodeName)
+ : Configuration2003(nodeName)
{
}
-
Configuration2005::~Configuration2005()
{
m_deploymentTools.clear();
@@ -305,7 +253,7 @@ Configuration2005 &Configuration2005::operator=(const Configuration2005 &config)
void Configuration2005::processToolNode(const QDomNode &toolNode)
{
if (toolNode.nodeName() == QLatin1String("Tool")) {
- ConfigurationTool *toolConf = 0;
+ ITool *toolConf = 0;
QDomNamedNodeMap namedNodeMap = toolNode.toElement().attributes();
for (int i = 0; i < namedNodeMap.size(); ++i) {
@@ -327,7 +275,7 @@ void Configuration2005::processToolNode(const QDomNode &toolNode)
if (toolConf) {
toolConf->processNode(toolNode);
- m_configurationTools.append(toolConf);
+ m_tools->addTool(toolConf);
}
} else {
DeploymentTool::Ptr deplTool(new DeploymentTool);
@@ -344,16 +292,10 @@ void Configuration2005::processToolNode(const QDomNode &toolNode)
QDomNode Configuration2005::toXMLDomNode(QDomDocument &domXMLDocument) const
{
QDomElement configurationNode = domXMLDocument.createElement(m_nodeName);
- configurationNode.setAttribute(QLatin1String("Name"), m_name);
- QHashIterator<QString, QString> it(m_anyAttribute);
+ configurationNode.setAttribute(QLatin1String("Name"), m_fullName);
- while (it.hasNext()) {
- it.next();
- configurationNode.setAttribute(it.key(), it.value());
- }
-
- foreach (const ConfigurationTool *tool, m_configurationTools)
- configurationNode.appendChild(tool->toXMLDomNode(domXMLDocument));
+ m_attributeContainer->appendToXMLNode(configurationNode);
+ m_tools->appendToXMLNode(configurationNode, domXMLDocument);
foreach (const DeploymentTool::Ptr &tool, m_deploymentTools)
configurationNode.appendChild(tool->toXMLDomNode(domXMLDocument));
@@ -367,9 +309,9 @@ VcNodeWidget *Configuration2005::createSettingsWidget()
return new Configuration2005Widget(this);
}
-Configuration::Ptr Configuration2005::clone() const
+IConfiguration *Configuration2005::clone() const
{
- return Configuration::Ptr(new Configuration2005(*this));
+ return new Configuration2005(*this);
}
void Configuration2005::addDeploymentTool(DeploymentTool::Ptr tool)
@@ -400,12 +342,12 @@ QList<DeploymentTool::Ptr> Configuration2005::deploymentTools(const QString &att
return deploymentTools;
}
-Configuration2005::Configuration2005(const QString &nodeName)
- : Configuration2003(nodeName)
+
+Configuration2008::Configuration2008(const QString &nodeName)
+ : Configuration2005(nodeName)
{
}
-
Configuration2008::Configuration2008(const Configuration2008 &config)
: Configuration2005(config)
{
@@ -432,7 +374,7 @@ Configuration2008::~Configuration2008()
void Configuration2008::processToolNode(const QDomNode &toolNode)
{
if (toolNode.nodeName() == QLatin1String("Tool")) {
- ConfigurationTool *toolConf = 0;
+ ITool *toolConf = 0;
QDomNamedNodeMap namedNodeMap = toolNode.toElement().attributes();
for (int i = 0; i < namedNodeMap.size(); ++i) {
@@ -457,7 +399,7 @@ void Configuration2008::processToolNode(const QDomNode &toolNode)
if (toolConf) {
toolConf->processNode(toolNode);
- m_configurationTools.append(toolConf);
+ m_tools->addTool(toolConf);
}
}
@@ -483,17 +425,11 @@ QDomNode Configuration2008::toXMLDomNode(QDomDocument &domXMLDocument) const
{
QDomElement configurationNode = domXMLDocument.createElement(m_nodeName);
- configurationNode.setAttribute(QLatin1String("Name"), m_name);
+ configurationNode.setAttribute(QLatin1String("Name"), m_fullName);
- QHashIterator<QString, QString> it(m_anyAttribute);
+ m_attributeContainer->appendToXMLNode(configurationNode);
- while (it.hasNext()) {
- it.next();
- configurationNode.setAttribute(it.key(), it.value());
- }
-
- foreach (const ConfigurationTool *tool, m_configurationTools)
- configurationNode.appendChild(tool->toXMLDomNode(domXMLDocument));
+ m_tools->appendToXMLNode(configurationNode, domXMLDocument);
foreach (const DeploymentTool::Ptr &tool, m_deploymentTools)
configurationNode.appendChild(tool->toXMLDomNode(domXMLDocument));
@@ -509,9 +445,9 @@ VcNodeWidget *Configuration2008::createSettingsWidget()
return new Configuration2008Widget(this);
}
-Configuration::Ptr Configuration2008::clone() const
+IConfiguration *Configuration2008::clone() const
{
- return Configuration::Ptr(new Configuration2008(*this));
+ return new Configuration2008(*this);
}
void Configuration2008::addDebuggerTool(DebuggerTool::Ptr tool)
@@ -542,10 +478,5 @@ QList<DebuggerTool::Ptr> Configuration2008::debuggerTools(const QString &attribu
return debuggerTools;
}
-Configuration2008::Configuration2008(const QString &nodeName)
- : Configuration2005(nodeName)
-{
-}
-
} // namespace Internal
} // namespace VcProjectManager
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/configuration.h b/src/plugins/vcprojectmanager/vcprojectmodel/configuration.h
index 11f3d4acd2..ed67ac277b 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/configuration.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/configuration.h
@@ -34,82 +34,63 @@
#include "deploymenttool.h"
#include "debuggertool.h"
+#include "../interfaces/iconfiguration.h"
namespace VcProjectManager {
namespace Internal {
class ConfigurationTool;
+class GeneralAttributeContainer;
-class Configuration : public QObject, public IVcProjectXMLNode
+class Configuration : public IConfiguration
{
- Q_OBJECT
-
- friend class ConfigurationsFactory;
-
public:
typedef QSharedPointer<Configuration> Ptr;
+ Configuration(const QString &nodeName);
Configuration(const Configuration &config);
Configuration& operator=(const Configuration &config);
~Configuration();
void processNode(const QDomNode &node);
- virtual QString nodeWidgetName() const;
QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
- /*!
- * Implement in order to support creating a clone of a Configuration instance.
- * \return A shared pointer to newly created Configuration instance.
- */
- virtual Configuration::Ptr clone() const = 0;
-
+ // IConfiguration interface
+ IAttributeContainer *attributeContainer() const;
+ QString fullName() const;
QString name() const;
+ QString platform() const;
+ void setFullName(const QString &fullName);
void setName(const QString &name);
-
- QString attributeValue(const QString &attributeName) const;
- void setAttribute(const QString &attributeName, const QString &attributeValue);
- void clearAttribute(const QString &attributeName);
- void removeAttribute(const QString &attributeName);
-
- void addConfigurationTool(ConfigurationTool *tool);
- void removeConfigurationTool(const QString &toolKey);
- int configurationToolCount() const;
- ConfigurationTool* configurationTool(int index) const;
- ConfigurationTool* configurationTool(const QString &toolKey) const;
-
-signals:
- void nameChanged();
+ void setPlatform(const QString &platform);
+ ITools *tools() const;
protected:
- Configuration(const QString &nodeName);
virtual void processToolNode(const QDomNode &toolNode);
void processNodeAttributes(const QDomElement &element);
- QString m_name;
+ QString m_fullName;
+ QString m_platformName;
+ QString m_configurationName;
QString m_nodeName;
- QHash<QString, QString> m_anyAttribute;
- QList<ConfigurationTool *> m_configurationTools;
+ GeneralAttributeContainer *m_attributeContainer;
+ ITools *m_tools;
};
class Configuration2003 : public Configuration
{
- friend class ConfigurationsFactory;
-
public:
+ Configuration2003(const QString &nodeName);
Configuration2003(const Configuration2003 &config);
~Configuration2003();
VcNodeWidget *createSettingsWidget();
- Configuration::Ptr clone() const;
-
-protected:
- Configuration2003(const QString &nodeName);
+ IConfiguration *clone() const;
};
class Configuration2005 : public Configuration2003
{
- friend class ConfigurationsFactory;
-
public:
+ Configuration2005(const QString &nodeName);
Configuration2005(const Configuration2005 &config);
Configuration2005& operator=(const Configuration2005 &config);
~Configuration2005();
@@ -117,24 +98,20 @@ public:
QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
VcNodeWidget* createSettingsWidget();
- Configuration::Ptr clone() const;
+ IConfiguration* clone() const;
void addDeploymentTool(DeploymentTool::Ptr tool);
void removeDeploymentTool(DeploymentTool::Ptr tool);
QList<DeploymentTool::Ptr> deploymentTools() const;
QList<DeploymentTool::Ptr> deploymentTools(const QString &attributeName, const QString &attributeValue) const;
-protected:
- Configuration2005(const QString &nodeName);
-
QList<DeploymentTool::Ptr> m_deploymentTools;
};
class Configuration2008 : public Configuration2005
{
- friend class ConfigurationsFactory;
-
public:
+ Configuration2008(const QString &nodeName);
Configuration2008(const Configuration2008 &config);
Configuration2008& operator=(const Configuration2008 &config);
~Configuration2008();
@@ -142,16 +119,13 @@ public:
void processToolNode(const QDomNode &toolNode);
QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
VcNodeWidget* createSettingsWidget();
- Configuration::Ptr clone() const;
+ IConfiguration* clone() const;
void addDebuggerTool(DebuggerTool::Ptr tool);
void removeDebuggerTool(DebuggerTool::Ptr tool);
QList<DebuggerTool::Ptr> debuggerTools() const;
QList<DebuggerTool::Ptr> debuggerTools(const QString &attributeName, const QString &attributeValue) const;
-private:
- Configuration2008(const QString &nodeName);
-
QList<DebuggerTool::Ptr> m_debuggerTools;
};
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/configurations.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/configurations.cpp
index 40c9672fa5..1d2a3c30f8 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/configurations.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/configurations.cpp
@@ -32,6 +32,7 @@
#include "configurationsfactory.h"
#include "vcprojectdocument.h"
#include "../widgets/configurationswidgets.h"
+#include "../interfaces/iconfiguration.h"
namespace VcProjectManager {
namespace Internal {
@@ -47,18 +48,18 @@ Configurations::Configurations(const Configurations &configs)
{
m_vcProjDoc = configs.m_vcProjDoc;
- foreach (const Configuration::Ptr &config, configs.m_configurations)
- m_configurations.append(config->clone());
+ 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_configurations.clear();
+ m_configs.clear();
- foreach (const Configuration::Ptr &config, configs.m_configurations)
- m_configurations.append(config->clone());
+ foreach (const IConfiguration *config, configs.m_configs)
+ m_configs.append(config->clone());
}
return *this;
@@ -66,6 +67,7 @@ Configurations &Configurations::operator =(const Configurations &configs)
Configurations::~Configurations()
{
+ qDeleteAll(m_configs);
}
void Configurations::processNode(const QDomNode &node)
@@ -90,78 +92,78 @@ QDomNode Configurations::toXMLDomNode(QDomDocument &domXMLDocument) const
{
QDomElement configsNode = domXMLDocument.createElement(QLatin1String("Configurations"));
- foreach (const Configuration::Ptr &config, m_configurations)
+ foreach (const IConfiguration *config, m_configs)
configsNode.appendChild(config->toXMLDomNode(domXMLDocument));
return configsNode;
}
-bool Configurations::isEmpty() const
+void Configurations::addConfiguration(IConfiguration *config)
{
- return m_configurations.isEmpty();
-}
-
-bool Configurations::appendConfiguration(Configuration::Ptr config)
-{
- if (m_configurations.contains(config))
- return false;
+ if (m_configs.contains(config))
+ return;
// if there is already a configuration with the same name
- foreach (const Configuration::Ptr &conf, m_configurations) {
- if (config->name() == conf->name())
- return false;
+ foreach (const IConfiguration *conf, m_configs) {
+ if (config->fullName() == conf->fullName())
+ return;
}
- m_configurations.append(config);
- return true;
+ m_configs.append(config);
}
-void Configurations::removeConfiguration(Configuration::Ptr config)
+IConfiguration *Configurations::configuration(const QString &fullName) const
{
- m_configurations.removeAll(config);
-}
-
-Configuration::Ptr Configurations::configuration(const QString &configName)
-{
- foreach (const Configuration::Ptr &config, m_configurations) {
- if (config->name() == configName)
+ foreach (IConfiguration *config, m_configs) {
+ if (config->fullName() == fullName)
return config;
}
- return Configuration::Ptr();
+ return 0;
}
-Configuration::Ptr Configurations::cloneConfiguration(const QString &newConfigName, const QString &configToClone)
+IConfiguration *Configurations::configuration(int index) const
{
- // don't add new configuration if some Configuration already has a name equal to newConfigName
- if (configuration(newConfigName))
- return Configuration::Ptr();
-
- foreach (const Configuration::Ptr &config, m_configurations) {
- if (config->name() == configToClone) {
- Configuration::Ptr clonedConfig = config->clone();
- clonedConfig->setName(newConfigName);
- m_configurations.append(clonedConfig);
- return clonedConfig;
- }
- }
+ if (0 <= index && index < m_configs.size())
+ return m_configs[index];
+ return 0;
+}
- return Configuration::Ptr();
+int Configurations::configurationCount() const
+{
+ return m_configs.size();
}
-Configuration::Ptr Configurations::cloneConfiguration(const QString &newConfigName, Configuration::Ptr config)
+void Configurations::removeConfiguration(const QString &fullName)
{
- return cloneConfiguration(newConfigName, config->name());
+ // 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;
+ }
+ }
}
-QList<Configuration::Ptr> Configurations::configurations() const
+bool Configurations::isEmpty() const
{
- return m_configurations;
+ return m_configs.isEmpty();
}
void Configurations::processConfiguration(const QDomNode &configurationNode)
{
- Configuration::Ptr configuration = ConfigurationsFactory::createConfiguration(m_vcProjDoc->documentVersion(), QLatin1String("Configuration"));
- configuration->processNode(configurationNode);
- m_configurations.append(configuration);
+ IConfiguration *config = 0;
+
+ if (m_vcProjDoc->documentVersion() == VcDocConstants::DV_MSVC_2003)
+ config = new Configuration2003(QLatin1String("Configuration"));
+ else if (m_vcProjDoc->documentVersion() == VcDocConstants::DV_MSVC_2005)
+ config = new Configuration2005(QLatin1String("Configuration"));
+ else if (m_vcProjDoc->documentVersion() == VcDocConstants::DV_MSVC_2008)
+ config = new Configuration2008(QLatin1String("Configuration"));
+
+ if (config) {
+ config->processNode(configurationNode);
+ m_configs.append(config);
+ }
// process next sibling
QDomNode nextSibling = configurationNode.nextSibling();
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/configurations.h b/src/plugins/vcprojectmanager/vcprojectmodel/configurations.h
index 06f83f4788..6fb1fb5bd7 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/configurations.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/configurations.h
@@ -34,13 +34,14 @@
#include "configuration.h"
#include "vcprojectdocument_constants.h"
+#include "../interfaces/iconfigurations.h"
namespace VcProjectManager {
namespace Internal {
class VcProjectDocument;
-class Configurations : public IVcProjectXMLNode
+class Configurations : public IVcProjectXMLNode, public IConfigurations
{
public:
typedef QSharedPointer<Configurations> Ptr;
@@ -54,20 +55,20 @@ public:
VcNodeWidget* createSettingsWidget();
QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
- bool isEmpty() const;
+ // IConfigurations interface
+ void addConfiguration(IConfiguration *config);
+ IConfiguration *configuration(const QString &fullName) const;
+ IConfiguration *configuration(int index) const;
+ int configurationCount() const;
+ void removeConfiguration(const QString &fullName);
- bool appendConfiguration(Configuration::Ptr config);
- void removeConfiguration(Configuration::Ptr config);
- Configuration::Ptr configuration(const QString &configName);
- Configuration::Ptr cloneConfiguration(const QString &newConfigName, const QString &configToClone);
- Configuration::Ptr cloneConfiguration(const QString &newConfigName, Configuration::Ptr config);
- QList<Configuration::Ptr> configurations() const;
+ bool isEmpty() const;
private:
void processConfiguration(const QDomNode &configurationNode);
- QList<Configuration::Ptr> m_configurations;
VcProjectDocument *m_vcProjDoc;
+ QList<IConfiguration *> m_configs;
};
} // namespace Internal
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/configurationtools.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/configurationtools.cpp
new file mode 100644
index 0000000000..c98a6c91ec
--- /dev/null
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/configurationtools.cpp
@@ -0,0 +1,113 @@
+/**************************************************************************
+**
+** 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 "configurationtools.h"
+#include "../interfaces/itool.h"
+#include "../interfaces/itooldescription.h"
+
+namespace VcProjectManager {
+namespace Internal {
+
+ConfigurationTools::ConfigurationTools()
+{
+}
+
+ITools &ConfigurationTools::operator =(const ITools &tools)
+{
+ if (this != &tools) {
+ qDeleteAll(m_tools);
+ m_tools.clear();
+
+ for (int i = 0; i < tools.toolCount(); ++i) {
+ ITool *tool = tools.tool(i);
+
+ if (tool)
+ m_tools.append(tool->clone());
+ }
+ }
+
+ return *this;
+}
+
+void ConfigurationTools::addTool(ITool *tool)
+{
+ if (!tool || m_tools.contains(tool))
+ return;
+
+ foreach (ITool *toolPtr, m_tools) {
+ if (toolPtr->toolDescription()->toolKey() == tool->toolDescription()->toolKey())
+ return;
+ }
+
+ m_tools.append(tool);
+}
+
+void ConfigurationTools::removeTool(ITool *tool)
+{
+ foreach (ITool *toolPtr, m_tools) {
+ if (toolPtr->toolDescription()->toolKey() == tool->toolDescription()->toolKey()) {
+ m_tools.removeOne(toolPtr);
+ delete toolPtr;
+ return;
+ }
+ }
+}
+
+ITool *ConfigurationTools::tool(const QString &toolKey) const
+{
+ foreach (ITool *toolPtr, m_tools) {
+ if (toolPtr->toolDescription()->toolKey() == toolKey) {
+ return toolPtr;
+ }
+ }
+
+ return 0;
+}
+
+ITool *ConfigurationTools::tool(int index) const
+{
+ if (0 <= index && index < m_tools.size())
+ return m_tools[index];
+
+ return 0;
+}
+
+int ConfigurationTools::toolCount() const
+{
+ return m_tools.size();
+}
+
+void ConfigurationTools::appendToXMLNode(QDomElement &domElement, QDomDocument &domDocument) const
+{
+ foreach (const ITool *confTool, m_tools)
+ domElement.appendChild(confTool->toXMLDomNode(domDocument));
+}
+
+} // namespace Internal
+} // namespace VcProjectManager
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/configurationtools.h b/src/plugins/vcprojectmanager/vcprojectmodel/configurationtools.h
new file mode 100644
index 0000000000..59ccb4ee96
--- /dev/null
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/configurationtools.h
@@ -0,0 +1,61 @@
+/**************************************************************************
+**
+** 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_CONFIGURATIONTOOLS_H
+#define VCPROJECTMANAGER_INTERNAL_CONFIGURATIONTOOLS_H
+
+#include "../interfaces/itools.h"
+
+#include <QList>
+
+namespace VcProjectManager {
+namespace Internal {
+
+class ConfigurationTools : public ITools
+{
+public:
+ ConfigurationTools();
+
+ // ITools interface
+ ITools &operator =(const ITools &tools);
+ void addTool(ITool *tool);
+ void removeTool(ITool *tool);
+ ITool *tool(const QString &toolKey) const;
+ ITool *tool(int index) const;
+ int toolCount() const;
+ void appendToXMLNode(QDomElement &domElement, QDomDocument &domDocument) const;
+
+private:
+ QList<ITool *> m_tools;
+};
+
+} // namespace Internal
+} // namespace VcProjectManager
+
+#endif // VCPROJECTMANAGER_INTERNAL_CONFIGURATIONTOOLS_H
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/file.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/file.cpp
index 89ab7364fa..97f7f80552 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/file.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/file.cpp
@@ -52,7 +52,7 @@ File::File(const File &file)
foreach (const File::Ptr &f, file.m_files)
m_files.append(File::Ptr(new File(*f)));
- foreach (const Configuration::Ptr &fileConfig, m_fileConfigurations)
+ foreach (const IConfiguration *fileConfig, m_fileConfigurations)
m_fileConfigurations.append(fileConfig->clone());
}
@@ -68,7 +68,7 @@ File &File::operator =(const File &file)
foreach (const File::Ptr &f, file.m_files)
m_files.append(File::Ptr(new File(*f)));
- foreach (const Configuration::Ptr &fileConfig, m_fileConfigurations)
+ foreach (const IConfiguration *fileConfig, m_fileConfigurations)
m_fileConfigurations.append(fileConfig->clone());
}
return *this;
@@ -77,7 +77,7 @@ File &File::operator =(const File &file)
File::~File()
{
m_files.clear();
- m_fileConfigurations.clear();
+ qDeleteAll(m_fileConfigurations);
}
void File::processNode(const QDomNode &node)
@@ -120,7 +120,7 @@ QDomNode File::toXMLDomNode(QDomDocument &domXMLDocument) const
foreach (const File::Ptr &file, m_files)
fileNode.appendChild(file->toXMLDomNode(domXMLDocument));
- foreach (const Configuration::Ptr &fileConfig, m_fileConfigurations)
+ foreach (const IConfiguration *fileConfig, m_fileConfigurations)
fileNode.appendChild(fileConfig->toXMLDomNode(domXMLDocument));
return fileNode;
@@ -139,30 +139,40 @@ void File::removeFile(File::Ptr file)
m_files.removeAll(file);
}
-void File::addFileConfiguration(Configuration::Ptr fileConfig)
+void File::addFileConfiguration(IConfiguration *fileConfig)
{
- if (m_fileConfigurations.contains(fileConfig))
+ if (!fileConfig)
return;
+
+ foreach (const IConfiguration *configPtr, m_fileConfigurations) {
+ if (configPtr->fullName() == fileConfig->fullName())
+ return;
+ }
m_fileConfigurations.append(fileConfig);
}
-void File::removeFileConfiguration(Configuration::Ptr fileConfig)
+void File::removeFileConfiguration(IConfiguration *fileConfig)
{
- if (m_fileConfigurations.contains(fileConfig))
- m_fileConfigurations.removeAll(fileConfig);
+ foreach (IConfiguration *configPtr, m_fileConfigurations) {
+ if (configPtr->fullName() == fileConfig->fullName()) {
+ m_fileConfigurations.removeOne(configPtr);
+ delete configPtr;
+ return;
+ }
+ }
}
-Configuration::Ptr File::fileConfiguration(const QString &name) const
+IConfiguration* File::fileConfiguration(const QString &name) const
{
- foreach (const Configuration::Ptr configPtr, m_fileConfigurations) {
- if (configPtr->name() == name)
+ foreach (IConfiguration *configPtr, m_fileConfigurations) {
+ if (configPtr->fullName() == name)
return configPtr;
}
- return Configuration::Ptr();
+ return 0;
}
-QList<Configuration::Ptr> File::fileConfigurations() const
+QList<IConfiguration *> File::fileConfigurations() const
{
return m_fileConfigurations;
}
@@ -233,9 +243,18 @@ QString File::canonicalPath() const
void File::processFileConfiguration(const QDomNode &fileConfigNode)
{
- Configuration::Ptr fileConfig = ConfigurationsFactory::createConfiguration(m_parentProjectDoc->documentVersion(), QLatin1String("FileConfiguration"));
- fileConfig->processNode(fileConfigNode);
- m_fileConfigurations.append(fileConfig);
+ IConfiguration *fileConfig = 0;
+ if (m_parentProjectDoc->documentVersion() == VcDocConstants::DV_MSVC_2003)
+ fileConfig = new Configuration2003(QLatin1String("FileConfiguration"));
+ else if (m_parentProjectDoc->documentVersion() == VcDocConstants::DV_MSVC_2005)
+ fileConfig = new Configuration2005(QLatin1String("FileConfiguration"));
+ else if (m_parentProjectDoc->documentVersion() == VcDocConstants::DV_MSVC_2008)
+ fileConfig = new Configuration2008(QLatin1String("FileConfiguration"));
+
+ if (fileConfig) {
+ fileConfig->processNode(fileConfigNode);
+ m_fileConfigurations.append(fileConfig);
+ }
// process next sibling
QDomNode nextSibling = fileConfigNode.nextSibling();
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/file.h b/src/plugins/vcprojectmanager/vcprojectmodel/file.h
index a812d29327..8c6ddea35d 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/file.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/file.h
@@ -57,10 +57,10 @@ public:
void addFile(File::Ptr file);
void removeFile(File::Ptr file);
- void addFileConfiguration(Configuration::Ptr fileConfig);
- void removeFileConfiguration(Configuration::Ptr fileConfig);
- Configuration::Ptr fileConfiguration(const QString &name) const;
- QList<Configuration::Ptr> fileConfigurations() const;
+ 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,7 +79,7 @@ private:
QString m_relativePath; // required
QList<QSharedPointer<File> > m_files;
- QList<Configuration::Ptr> m_fileConfigurations;
+ QList<IConfiguration*> m_fileConfigurations;
QHash<QString, QString> m_anyAttribute;
VcProjectDocument *m_parentProjectDoc;
};
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/generalattributecontainer.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/generalattributecontainer.cpp
new file mode 100644
index 0000000000..c0ccc50342
--- /dev/null
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/generalattributecontainer.cpp
@@ -0,0 +1,111 @@
+/**************************************************************************
+**
+** 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 "generalattributecontainer.h"
+
+namespace VcProjectManager {
+namespace Internal {
+
+GeneralAttributeContainer::GeneralAttributeContainer()
+{
+}
+
+GeneralAttributeContainer::GeneralAttributeContainer(const GeneralAttributeContainer &attrCont)
+{
+ m_anyAttribute = attrCont.m_anyAttribute;
+}
+
+GeneralAttributeContainer &GeneralAttributeContainer::operator=(const GeneralAttributeContainer &attrCont)
+{
+ if (this != &attrCont) {
+ m_anyAttribute.clear();
+ for (int i = 0; i < attrCont.getAttributeCount(); ++i) {
+ QString attrName = attrCont.getAttributeName(i);
+ m_anyAttribute.insert(attrName, attrCont.attributeValue(attrName));
+ }
+ }
+
+ return *this;
+}
+
+QString GeneralAttributeContainer::attributeValue(const QString &attributeName) const
+{
+ return m_anyAttribute.value(attributeName);
+}
+
+void GeneralAttributeContainer::clearAttribute(const QString &attributeName)
+{
+ if (m_anyAttribute.contains(attributeName))
+ m_anyAttribute.insert(attributeName, QString());
+}
+
+void GeneralAttributeContainer::removeAttribute(const QString &attributeName)
+{
+ m_anyAttribute.remove(attributeName);
+}
+
+void GeneralAttributeContainer::setAttribute(const QString &attributeName, const QString &attributeValue)
+{
+ m_anyAttribute.insert(attributeName, attributeValue);
+}
+
+QString GeneralAttributeContainer::getAttributeName(int index) const
+{
+ QHashIterator<QString, QString> it(m_anyAttribute);
+
+ index++;
+
+ while (it.hasNext() && index) {
+ it.next();
+ --index;
+ }
+
+ if (!index)
+ return it.key();
+
+ return QString();
+}
+
+int GeneralAttributeContainer::getAttributeCount() const
+{
+ return m_anyAttribute.size();
+}
+
+void GeneralAttributeContainer::appendToXMLNode(QDomElement &elementNode) const
+{
+ QHashIterator<QString, QString> it(m_anyAttribute);
+
+ while (it.hasNext()) {
+ it.next();
+ elementNode.setAttribute(it.key(), it.value());
+ }
+}
+
+} // namespace Internal
+} // namespace VcProjectManager
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/generalattributecontainer.h b/src/plugins/vcprojectmanager/vcprojectmodel/generalattributecontainer.h
new file mode 100644
index 0000000000..b718a3f0d4
--- /dev/null
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/generalattributecontainer.h
@@ -0,0 +1,61 @@
+/**************************************************************************
+**
+** 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_GENERALATTRIBUTEHANDLER_H
+#define VCPROJECTMANAGER_INTERNAL_GENERALATTRIBUTEHANDLER_H
+
+#include "../interfaces/iattributecontainer.h"
+
+#include <QHash>
+
+namespace VcProjectManager {
+namespace Internal {
+
+class GeneralAttributeContainer : public IAttributeContainer
+{
+public:
+ GeneralAttributeContainer();
+ GeneralAttributeContainer(const GeneralAttributeContainer &attrCont);
+ GeneralAttributeContainer& operator=(const GeneralAttributeContainer &attrCont);
+ QString attributeValue(const QString &attributeName) const;
+ void clearAttribute(const QString &attributeName);
+ void removeAttribute(const QString &attributeName);
+ void setAttribute(const QString &attributeName, const QString &attributeValue);
+ QString getAttributeName(int index) const;
+ int getAttributeCount() const;
+ void appendToXMLNode(QDomElement &elementNode) const;
+
+private:
+ QHash<QString, QString> m_anyAttribute;
+};
+
+} // namespace Internal
+} // namespace VcProjectManager
+
+#endif // VCPROJECTMANAGER_INTERNAL_GENERALATTRIBUTEHANDLER_H
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/ivcprojectnodemodel.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/ivcprojectnodemodel.cpp
index 6875bfb2c2..523354ce13 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/ivcprojectnodemodel.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/ivcprojectnodemodel.cpp
@@ -32,10 +32,6 @@
namespace VcProjectManager {
namespace Internal {
-IVcProjectXMLNode::IVcProjectXMLNode()
-{
-}
-
IVcProjectXMLNode::~IVcProjectXMLNode()
{
}
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/ivcprojectnodemodel.h b/src/plugins/vcprojectmanager/vcprojectmodel/ivcprojectnodemodel.h
index 52a3a37a24..91ccca37d4 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/ivcprojectnodemodel.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/ivcprojectnodemodel.h
@@ -40,7 +40,6 @@ class VcNodeWidget;
class IVcProjectXMLNode
{
public:
- IVcProjectXMLNode();
virtual ~IVcProjectXMLNode();
/*!
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.cpp
index ee228f6672..b25f0c5aaa 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.cpp
@@ -72,12 +72,12 @@ void ProjectReference::setReferencedProjectIdentifier(const QString &referencedP
m_private->setReferencedProjectIdentifier(referencedProjectIdentifier);
}
-void ProjectReference::addReferenceConfiguration(Configuration::Ptr refConfig)
+void ProjectReference::addReferenceConfiguration(IConfiguration *refConfig)
{
m_private->addReferenceConfiguration(refConfig);
}
-void ProjectReference::removeReferenceConfiguration(Configuration::Ptr refConfig)
+void ProjectReference::removeReferenceConfiguration(IConfiguration *refConfig)
{
m_private->removeReferenceConfiguration(refConfig);
}
@@ -87,12 +87,12 @@ void ProjectReference::removeReferenceConfiguration(const QString &refConfigName
m_private->removeReferenceConfiguration(refConfigName);
}
-QList<Configuration::Ptr> ProjectReference::referenceConfigurations() const
+QList<IConfiguration*> ProjectReference::referenceConfigurations() const
{
return m_private->referenceConfigurations();
}
-Configuration::Ptr ProjectReference::referenceConfiguration(const QString &refConfigName) const
+IConfiguration* ProjectReference::referenceConfiguration(const QString &refConfigName) const
{
return m_private->referenceConfiguration(refConfigName);
}
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.h b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.h
index 08ada5a5b1..433ff777fa 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.h
@@ -60,11 +60,11 @@ public:
void setName(const QString &name);
QString referencedProjectIdentifier() const;
void setReferencedProjectIdentifier(const QString &referencedProjectIdentifier);
- void addReferenceConfiguration(Configuration::Ptr refConfig);
- void removeReferenceConfiguration(Configuration::Ptr refConfig);
+ void addReferenceConfiguration(IConfiguration *refConfig);
+ void removeReferenceConfiguration(IConfiguration *refConfig);
void removeReferenceConfiguration(const QString &refConfigName);
- QList<Configuration::Ptr> referenceConfigurations() const;
- Configuration::Ptr referenceConfiguration(const QString &refConfigName) const;
+ QList<IConfiguration *> referenceConfigurations() const;
+ IConfiguration *referenceConfiguration(const QString &refConfigName) const;
protected:
ProjectReference();
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.cpp
index d2be4d259d..1b365da45d 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.cpp
@@ -38,7 +38,7 @@ namespace Internal {
ProjectReference_Private::~ProjectReference_Private()
{
- m_referenceConfigurations.clear();
+ qDeleteAll(m_referenceConfigurations);
}
void ProjectReference_Private::processNode(const QDomNode &node)
@@ -63,7 +63,7 @@ QDomNode ProjectReference_Private::toXMLDomNode(QDomDocument &domXMLDocument) co
projRefNode.setAttribute(QLatin1String("Name"), m_name);
projRefNode.setAttribute(QLatin1String("ReferencedProjectIdentifier"), m_referencedProjectIdentifier);
- foreach (const Configuration::Ptr &refConfig, m_referenceConfigurations)
+ foreach (const IConfiguration *refConfig, m_referenceConfigurations)
projRefNode.appendChild(refConfig->toXMLDomNode(domXMLDocument));
return projRefNode;
@@ -89,46 +89,47 @@ void ProjectReference_Private::setReferencedProjectIdentifier(const QString &ref
m_referencedProjectIdentifier = referencedProjectIdentifier;
}
-void ProjectReference_Private::addReferenceConfiguration(Configuration::Ptr refConfig)
+void ProjectReference_Private::addReferenceConfiguration(IConfiguration *refConfig)
{
if (m_referenceConfigurations.contains(refConfig))
return;
// Don't add configuration with the same name
- foreach (const Configuration::Ptr &refConf, m_referenceConfigurations) {
- if (refConfig->name() == refConf->name())
+ foreach (const IConfiguration *refConf, m_referenceConfigurations) {
+ if (refConfig->fullName() == refConf->fullName())
return;
}
m_referenceConfigurations.append(refConfig);
}
-void ProjectReference_Private::removeReferenceConfiguration(Configuration::Ptr refConfig)
+void ProjectReference_Private::removeReferenceConfiguration(IConfiguration *refConfig)
{
m_referenceConfigurations.removeAll(refConfig);
}
void ProjectReference_Private::removeReferenceConfiguration(const QString &refConfigName)
{
- foreach (const Configuration::Ptr &refConfig, m_referenceConfigurations) {
- if (refConfig->name() == refConfigName) {
- removeReferenceConfiguration(refConfig);
+ foreach (IConfiguration *refConfig, m_referenceConfigurations) {
+ if (refConfig->fullName() == refConfigName) {
+ m_referenceConfigurations.removeOne(refConfig);
+ delete refConfig;
return;
}
}
}
-QList<Configuration::Ptr> ProjectReference_Private::referenceConfigurations() const
+QList<IConfiguration*> ProjectReference_Private::referenceConfigurations() const
{
return m_referenceConfigurations;
}
-Configuration::Ptr ProjectReference_Private::referenceConfiguration(const QString &refConfigName) const
+IConfiguration* ProjectReference_Private::referenceConfiguration(const QString &refConfigName) const
{
- foreach (const Configuration::Ptr &refConfig, m_referenceConfigurations) {
- if (refConfig->name() == refConfigName)
+ foreach (IConfiguration *refConfig, m_referenceConfigurations) {
+ if (refConfig->fullName() == refConfigName)
return refConfig;
}
- return Configuration::Ptr();
+ return 0;
}
ProjectReference_Private::ProjectReference_Private()
@@ -140,7 +141,7 @@ ProjectReference_Private::ProjectReference_Private(const ProjectReference_Privat
m_referencedProjectIdentifier = projRef_p.m_referencedProjectIdentifier;
m_name = projRef_p.m_name;
- foreach (const Configuration::Ptr &refConfig, projRef_p.m_referenceConfigurations)
+ foreach (const IConfiguration *refConfig, projRef_p.m_referenceConfigurations)
m_referenceConfigurations.append(refConfig->clone());
}
@@ -151,7 +152,7 @@ ProjectReference_Private &ProjectReference_Private::operator =(const ProjectRefe
m_name = projRef_p.m_name;
m_referenceConfigurations.clear();
- foreach (const Configuration::Ptr &refConfig, projRef_p.m_referenceConfigurations)
+ foreach (const IConfiguration *refConfig, projRef_p.m_referenceConfigurations)
m_referenceConfigurations.append(refConfig->clone());
}
return *this;
@@ -159,7 +160,7 @@ ProjectReference_Private &ProjectReference_Private::operator =(const ProjectRefe
void ProjectReference_Private::processReferenceConfig(const QDomNode &referenceConfig)
{
- Configuration::Ptr referenceConfiguration = createReferenceConfiguration();
+ IConfiguration *referenceConfiguration = createReferenceConfiguration();
referenceConfiguration->processNode(referenceConfig);
m_referenceConfigurations.append(referenceConfiguration);
@@ -213,9 +214,9 @@ ProjectReference2003_Private &ProjectReference2003_Private::operator =(const Pro
return *this;
}
-Configuration::Ptr ProjectReference2003_Private::createReferenceConfiguration() const
+IConfiguration *ProjectReference2003_Private::createReferenceConfiguration() const
{
- return ConfigurationsFactory::createConfiguration(VcDocConstants::DV_MSVC_2003, QLatin1String("ReferenceConfiguration"));
+ return new Configuration2003(QLatin1String("ReferenceConfiguration"));
}
@@ -312,9 +313,9 @@ void ProjectReference2005_Private::processNodeAttributes(const QDomElement &elem
}
}
-Configuration::Ptr ProjectReference2005_Private::createReferenceConfiguration() const
+IConfiguration *ProjectReference2005_Private::createReferenceConfiguration() const
{
- return ConfigurationsFactory::createConfiguration(VcDocConstants::DV_MSVC_2005, QLatin1String("ReferenceConfiguration"));
+ return new Configuration2005(QLatin1String("ReferenceConfiguration"));
}
@@ -433,9 +434,9 @@ void ProjectReference2008_Private::processNodeAttributes(const QDomElement &elem
}
}
-Configuration::Ptr ProjectReference2008_Private::createReferenceConfiguration() const
+IConfiguration *ProjectReference2008_Private::createReferenceConfiguration() const
{
- return ConfigurationsFactory::createConfiguration(VcDocConstants::DV_MSVC_2008, QLatin1String("ReferenceConfiguration"));
+ return new Configuration2008(QLatin1String("ReferenceConfiguration"));
}
} // namespace Internal
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.h b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.h
index 925f067d44..44056de2a0 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.h
@@ -57,11 +57,11 @@ public:
void setName(const QString &name);
QString referencedProjectIdentifier() const;
void setReferencedProjectIdentifier(const QString &referencedProjectIdentifier);
- void addReferenceConfiguration(Configuration::Ptr refConfig);
- void removeReferenceConfiguration(Configuration::Ptr refConfig);
+ void addReferenceConfiguration(IConfiguration *refConfig);
+ void removeReferenceConfiguration(IConfiguration *refConfig);
void removeReferenceConfiguration(const QString &refConfigName);
- QList<Configuration::Ptr> referenceConfigurations() const;
- Configuration::Ptr referenceConfiguration(const QString &refConfigName) const;
+ QList<IConfiguration *> referenceConfigurations() const;
+ IConfiguration *referenceConfiguration(const QString &refConfigName) const;
protected:
ProjectReference_Private();
@@ -72,11 +72,11 @@ protected:
/*!
* Reimplement this to create a new reference configuration.
- * \return A shared pointer to a newly created reference configuration.
+ * \return A pointer to a newly created reference configuration.
*/
- virtual Configuration::Ptr createReferenceConfiguration() const = 0;
+ virtual IConfiguration* createReferenceConfiguration() const = 0;
- QList<Configuration::Ptr> m_referenceConfigurations;
+ QList<IConfiguration *> m_referenceConfigurations;
QString m_referencedProjectIdentifier; // required
QString m_name; // optional
};
@@ -93,7 +93,7 @@ protected:
ProjectReference2003_Private();
ProjectReference2003_Private(const ProjectReference2003_Private &projRef_p);
ProjectReference2003_Private& operator=(const ProjectReference2003_Private &projRef_p);
- Configuration::Ptr createReferenceConfiguration() const;
+ IConfiguration* createReferenceConfiguration() const;
};
class ProjectReference2005_Private : public ProjectReference2003_Private
@@ -118,7 +118,7 @@ protected:
ProjectReference2005_Private(const ProjectReference2005_Private &projRef_p);
ProjectReference2005_Private& operator=(const ProjectReference2005_Private &projRef_p);
void processNodeAttributes(const QDomElement &element);
- Configuration::Ptr createReferenceConfiguration() const;
+ IConfiguration* createReferenceConfiguration() const;
QString m_copyLocal; // optional
bool m_useInBuild; // optional
@@ -149,7 +149,7 @@ protected:
ProjectReference2008_Private(const ProjectReference2008_Private &projRef_p);
ProjectReference2008_Private& operator=(const ProjectReference2008_Private &projRef_p);
void processNodeAttributes(const QDomElement &element);
- Configuration::Ptr createReferenceConfiguration() const;
+ IConfiguration* createReferenceConfiguration() const;
QString m_relativePathToProject; // optional
bool m_useDependenciesInBuild; //optional default: true
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/configurationtool.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/tools/configurationtool.cpp
index 878a5ce12c..bb29466ceb 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/configurationtool.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/configurationtool.cpp
@@ -28,38 +28,37 @@
**
****************************************************************************/
#include "configurationtool.h"
-#include "toolattributes/itoolattribute.h"
-#include "toolattributes/iattributedescriptiondataitem.h"
+#include "../../interfaces/itoolattribute.h"
+#include "../../interfaces/iattributedescriptiondataitem.h"
#include "toolattributes/tooldescriptiondatamanager.h"
#include "toolattributes/tooldescription.h"
#include "toolsectiondescription.h"
#include "toolsection.h"
+#include "toolattributes/toolsectioncontainer.h"
namespace VcProjectManager {
namespace Internal {
-ConfigurationTool::ConfigurationTool(ToolDescription *toolDesc)
+ConfigurationTool::ConfigurationTool(const IToolDescription *toolDesc)
: m_toolDesc(toolDesc)
{
+ m_sectionContainer = new ToolSectionContainer;
for (int i = 0; i < toolDesc->sectionDescriptionCount(); ++i) {
if (toolDesc->sectionDescription(i))
- m_toolSections.append(toolDesc->sectionDescription(i)->createToolSection());
+ m_sectionContainer->appendSection(toolDesc->sectionDescription(i)->createToolSection());
}
}
ConfigurationTool::ConfigurationTool(const ConfigurationTool &tool)
{
- qDeleteAll(m_toolSections);
- m_toolSections.clear();
-
m_toolDesc = tool.m_toolDesc;
- foreach (ToolSection *toolSec, tool.m_toolSections)
- m_toolSections.append(new ToolSection(*toolSec));
+ m_sectionContainer = new ToolSectionContainer;
+ *m_sectionContainer = *(tool.m_sectionContainer);
}
ConfigurationTool::~ConfigurationTool()
{
- qDeleteAll(m_toolSections);
+ delete m_sectionContainer;
}
void ConfigurationTool::processNode(const QDomNode &node)
@@ -75,71 +74,26 @@ QDomNode ConfigurationTool::toXMLDomNode(QDomDocument &domXMLDocument) const
{
QDomElement toolNode = domXMLDocument.createElement(QLatin1String("Tool"));
toolNode.setAttribute(QLatin1String("Name"), m_toolDesc->toolKey());
-
- foreach (ToolSection *toolSection, m_toolSections) {
- if (toolSection) {
- for (int i = 0; i < toolSection->toolAttributeCount(); ++i) {
- IToolAttribute *toolAttr = toolSection->toolAttribute(i);
-
- if (toolAttr && toolAttr->isUsed())
- toolNode.setAttribute(toolAttr->descriptionDataItem()->key(), toolAttr->value());
- }
- }
- }
-
+ m_sectionContainer->appendToXMLNode(toolNode);
return toolNode;
}
-ToolDescription *ConfigurationTool::toolDescription() const
+const IToolDescription *ConfigurationTool::toolDescription() const
{
return m_toolDesc;
}
-ToolSection *ConfigurationTool::section(int index) const
-{
- if (0 <= index && index < m_toolSections.size())
- return m_toolSections[index];
- return 0;
-}
-
-int ConfigurationTool::sectionCount() const
-{
- return m_toolSections.size();
-}
-
-void ConfigurationTool::appendSection(ToolSection *section)
-{
- if (!section)
- return;
-
- foreach (ToolSection *sec, m_toolSections) {
- if (sec && sec->sectionDescription()->name() == section->sectionDescription()->name())
- return;
- }
- m_toolSections.append(section);
-}
-
-void ConfigurationTool::removeSection(const QString &sectionName)
+VcNodeWidget *ConfigurationTool::createSettingsWidget()
{
- QList<ToolSection *>::iterator it = m_toolSections.begin();
-
- while (it != m_toolSections.end()) {
- ToolSection *sec = *it;
- if (sec && sec->sectionDescription()->name() == sectionName) {
- m_toolSections.erase(it);
- delete sec;
- return;
- }
- ++it;
- }
+ return new ToolSettingsWidget(this);
}
-VcNodeWidget *ConfigurationTool::createSettingsWidget()
+ISectionContainer *ConfigurationTool::sectionContainer() const
{
- return new ToolSettingsWidget(this);
+ return m_sectionContainer;
}
-ConfigurationTool *ConfigurationTool::clone()
+ITool *ConfigurationTool::clone() const
{
return new ConfigurationTool(*this);
}
@@ -155,11 +109,14 @@ void ConfigurationTool::processNodeAttributes(const QDomElement &domElement)
QDomAttr domElement = domNode.toAttr();
if (domElement.name() != QLatin1String("Name")) {
- foreach (ToolSection *toolSection, m_toolSections) {
- IToolAttribute *toolAttr = toolSection->toolAttribute(domElement.name());
-
- if (toolAttr)
- toolAttr->setValue(domElement.value());
+ for (int i = 0; i < m_sectionContainer->sectionCount(); ++i) {
+ IToolSection *toolSection = m_sectionContainer->section(i);
+ if (toolSection) {
+ IToolAttribute *toolAttr = toolSection->toolAttribute(domElement.name());
+
+ if (toolAttr)
+ toolAttr->setValue(domElement.value());
+ }
}
}
}
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/configurationtool.h b/src/plugins/vcprojectmanager/vcprojectmodel/tools/configurationtool.h
index 2a30d98b53..c9411a7139 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/configurationtool.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/configurationtool.h
@@ -32,6 +32,7 @@
#include "../ivcprojectnodemodel.h"
#include "../../widgets/toolwidgets/toolsettingswidget.h"
+#include "../../interfaces/itool.h"
#include <QList>
#include <QString>
@@ -43,10 +44,10 @@ class IToolAttribute;
class ToolDescription;
class ToolSection;
-class ConfigurationTool : public IVcProjectXMLNode
+class ConfigurationTool : public ITool
{
public:
- ConfigurationTool(ToolDescription* toolDesc);
+ ConfigurationTool(const IToolDescription* toolDesc);
ConfigurationTool(const ConfigurationTool &tool);
virtual ~ConfigurationTool();
@@ -54,22 +55,17 @@ public:
void processNode(const QDomNode &node);
QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
- ToolDescription* toolDescription() const;
-
- ToolSection* section(int index) const;
- int sectionCount() const;
- void appendSection(ToolSection *section);
- void removeSection(const QString &sectionName);
-
+ const IToolDescription *toolDescription() const;
VcNodeWidget* createSettingsWidget();
- ConfigurationTool *clone();
+ ISectionContainer *sectionContainer() const;
+ ITool *clone() const;
private:
void processNodeAttributes(const QDomElement &domElement);
- QList<ToolSection *> m_toolSections;
- ToolDescription *m_toolDesc;
+ const IToolDescription *m_toolDesc;
+ ISectionContainer *m_sectionContainer;
};
} // namespace Internal
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/attributedescriptiondataitem.h b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/attributedescriptiondataitem.h
index cbbd11b245..f6a40b25a8 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/attributedescriptiondataitem.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/attributedescriptiondataitem.h
@@ -32,7 +32,7 @@
#include <QHash>
-#include "iattributedescriptiondataitem.h"
+#include "../../../interfaces/iattributedescriptiondataitem.h"
namespace VcProjectManager {
namespace Internal {
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/booltoolattribute.h b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/booltoolattribute.h
index e906b30ee9..d2c340bfd4 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/booltoolattribute.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/booltoolattribute.h
@@ -30,7 +30,7 @@
#ifndef VCPROJECTMANAGER_INTERNAL_BOOLTOOLATTRIBUTE_H
#define VCPROJECTMANAGER_INTERNAL_BOOLTOOLATTRIBUTE_H
-#include "itoolattribute.h"
+#include "../../../interfaces/itoolattribute.h"
namespace VcProjectManager {
namespace Internal {
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/integertoolattribute.h b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/integertoolattribute.h
index a6689c8c81..58d693eccf 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/integertoolattribute.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/integertoolattribute.h
@@ -30,7 +30,7 @@
#ifndef VCPROJECTMANAGER_INTERNAL_INTEGERTOOLATTRIBUTE_H
#define VCPROJECTMANAGER_INTERNAL_INTEGERTOOLATTRIBUTE_H
-#include "itoolattribute.h"
+#include "../../../interfaces/itoolattribute.h"
namespace VcProjectManager {
namespace Internal {
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/stringlisttoolattribute.h b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/stringlisttoolattribute.h
index 9333fec010..db597f384b 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/stringlisttoolattribute.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/stringlisttoolattribute.h
@@ -30,7 +30,7 @@
#ifndef VCPROJECTMANAGER_INTERNAL_STRINGLISTTOOLATTRIBUTE_H
#define VCPROJECTMANAGER_INTERNAL_STRINGLISTTOOLATTRIBUTE_H
-#include "itoolattribute.h"
+#include "../../../interfaces/itoolattribute.h"
namespace VcProjectManager {
namespace Internal {
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/stringtoolattribute.h b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/stringtoolattribute.h
index c072a7acfe..376b893810 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/stringtoolattribute.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/stringtoolattribute.h
@@ -30,7 +30,7 @@
#ifndef VCPROJECTMANAGER_INTERNAL_STRINGTOOLATTRIBUTE_H
#define VCPROJECTMANAGER_INTERNAL_STRINGTOOLATTRIBUTE_H
-#include "itoolattribute.h"
+#include "../../../interfaces/itoolattribute.h"
namespace VcProjectManager {
namespace Internal {
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/tooldescription.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/tooldescription.cpp
index 721efad564..bc8a2a3880 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/tooldescription.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/tooldescription.cpp
@@ -28,8 +28,8 @@
**
****************************************************************************/
#include "tooldescription.h"
-#include "itoolattribute.h"
-#include "iattributedescriptiondataitem.h"
+#include "../../../interfaces/itoolattribute.h"
+#include "../../../interfaces/iattributedescriptiondataitem.h"
#include "../configurationtool.h"
#include "../toolsectiondescription.h"
@@ -44,7 +44,7 @@ ToolDescription::~ToolDescription()
{
}
-ToolSectionDescription *ToolDescription::sectionDescription(int index) const
+IToolSectionDescription *ToolDescription::sectionDescription(int index) const
{
if (0 <= index && index < m_sectionDescriptions.size())
return m_sectionDescriptions[index];
@@ -57,7 +57,7 @@ int ToolDescription::sectionDescriptionCount() const
return m_sectionDescriptions.size();
}
-void ToolDescription::removeSectionDescription(ToolSectionDescription *sectionDescription)
+void ToolDescription::removeSectionDescription(IToolSectionDescription *sectionDescription)
{
if (!sectionDescription)
return;
@@ -68,7 +68,7 @@ void ToolDescription::removeSectionDescription(ToolSectionDescription *sectionDe
return;
}
- foreach (ToolSectionDescription* toolSectionDesc, m_sectionDescriptions) {
+ foreach (IToolSectionDescription* toolSectionDesc, m_sectionDescriptions) {
if (toolSectionDesc->name() == sectionDescription->name()) {
m_sectionDescriptions.removeOne(sectionDescription);
delete sectionDescription;
@@ -77,9 +77,9 @@ void ToolDescription::removeSectionDescription(ToolSectionDescription *sectionDe
}
}
-void ToolDescription::addSectionDescription(ToolSectionDescription *sectionDescription)
+void ToolDescription::addSectionDescription(IToolSectionDescription *sectionDescription)
{
- foreach (ToolSectionDescription* toolSectionDesc, m_sectionDescriptions) {
+ foreach (IToolSectionDescription* toolSectionDesc, m_sectionDescriptions) {
if (toolSectionDesc->name() == sectionDescription->name())
return;
}
@@ -107,7 +107,7 @@ void ToolDescription::setToolDisplayName(const QString &toolName)
m_displayName = toolName;
}
-ConfigurationTool *ToolDescription::createTool()
+ITool *ToolDescription::createTool() const
{
return new ConfigurationTool(this);
}
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/tooldescription.h b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/tooldescription.h
index 1613a0baa0..557cc8a8f5 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/tooldescription.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/tooldescription.h
@@ -31,6 +31,7 @@
#define VCPROJECTMANAGER_INTERNAL_TOOLDESCRIPTION_H
#include <QString>
+#include "../../../interfaces/itooldescription.h"
namespace VcProjectManager {
namespace Internal {
@@ -39,16 +40,16 @@ class IAttributeDescriptionDataItem;
class ConfigurationTool;
class ToolSectionDescription;
-class ToolDescription
+class ToolDescription : public IToolDescription
{
public:
ToolDescription();
~ToolDescription();
int sectionDescriptionCount() const;
- ToolSectionDescription *sectionDescription(int index) const;
- void addSectionDescription(ToolSectionDescription *sectionDescription);
- void removeSectionDescription(ToolSectionDescription *sectionDescription);
+ IToolSectionDescription *sectionDescription(int index) const;
+ void addSectionDescription(IToolSectionDescription *sectionDescription);
+ void removeSectionDescription(IToolSectionDescription *sectionDescription);
QString toolKey() const;
void setToolKey(const QString &toolKey);
@@ -56,13 +57,13 @@ public:
QString toolDisplayName() const;
void setToolDisplayName(const QString &toolDisplayName);
- ConfigurationTool* createTool();
+ ITool* createTool() const;
private:
QString m_displayName;
QString m_toolKey;
QList<IAttributeDescriptionDataItem *> m_attributes;
- QList<ToolSectionDescription *> m_sectionDescriptions;
+ QList<IToolSectionDescription *> m_sectionDescriptions;
};
} // namespace Internal
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/toolsectioncontainer.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/toolsectioncontainer.cpp
new file mode 100644
index 0000000000..bb83932644
--- /dev/null
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/toolsectioncontainer.cpp
@@ -0,0 +1,135 @@
+/**************************************************************************
+**
+** 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 "toolsectioncontainer.h"
+#include "../../../interfaces/itoolsection.h"
+#include "../../../interfaces/itoolsectiondescription.h"
+#include "../../../interfaces/itoolattribute.h"
+#include "../../../interfaces/iattributedescriptiondataitem.h"
+
+namespace VcProjectManager {
+namespace Internal {
+
+ToolSectionContainer::ToolSectionContainer()
+{
+}
+
+ToolSectionContainer::ToolSectionContainer(const ToolSectionContainer &toolSec)
+{
+ qDeleteAll(m_toolSections);
+ m_toolSections.clear();
+
+ foreach (IToolSection *sec, toolSec.m_toolSections) {
+ if (sec)
+ m_toolSections.append(sec->clone());
+ }
+}
+
+ISectionContainer &ToolSectionContainer::operator =(ISectionContainer &toolSec)
+{
+ if (this != &toolSec) {
+ qDeleteAll(m_toolSections);
+ m_toolSections.clear();
+
+ for (int i = 0; i < toolSec.sectionCount(); ++i) {
+ IToolSection *sec = toolSec.section(i);
+ if (sec)
+ m_toolSections.append(sec->clone());
+ }
+ }
+
+ return *this;
+}
+
+ToolSectionContainer::~ToolSectionContainer()
+{
+ qDeleteAll(m_toolSections);
+}
+
+IToolSection *ToolSectionContainer::section(int index) const
+{
+ if (0 <= index && index < m_toolSections.size())
+ return m_toolSections[index];
+ return 0;
+}
+
+IToolSection *ToolSectionContainer::section(const QString &sectionName) const
+{
+ foreach (IToolSection *sec, m_toolSections) {
+ if (sec && sec->sectionDescription()->name() == sectionName) {
+ return sec;
+ }
+ }
+ return 0;
+}
+
+int ToolSectionContainer::sectionCount() const
+{
+ return m_toolSections.size();
+}
+
+void ToolSectionContainer::appendSection(IToolSection *section)
+{
+ if (!section)
+ return;
+
+ foreach (IToolSection *sec, m_toolSections) {
+ if (sec && sec->sectionDescription()->name() == section->sectionDescription()->name())
+ return;
+ }
+ m_toolSections.append(section);
+}
+
+void ToolSectionContainer::removeSection(const QString &sectionName)
+{
+ foreach (IToolSection *sec, m_toolSections) {
+ if (sec && sec->sectionDescription()->name() == sectionName) {
+ m_toolSections.removeOne(sec);
+ delete sec;
+ return;
+ }
+ }
+}
+
+void ToolSectionContainer::appendToXMLNode(QDomElement &elementNode)
+{
+ foreach (IToolSection *toolSection, m_toolSections) {
+ if (toolSection) {
+ for (int i = 0; i < toolSection->toolAttributeCount(); ++i) {
+ IToolAttribute *toolAttr = toolSection->toolAttribute(i);
+
+ if (toolAttr && toolAttr->isUsed())
+ elementNode.setAttribute(toolAttr->descriptionDataItem()->key(), toolAttr->value());
+ }
+ }
+ }
+}
+
+} // namespace Internal
+} // namespace VcProjectManager
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/toolsectioncontainer.h b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/toolsectioncontainer.h
new file mode 100644
index 0000000000..854a4e9e6a
--- /dev/null
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolattributes/toolsectioncontainer.h
@@ -0,0 +1,61 @@
+/**************************************************************************
+**
+** 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_TOOLSECTIONCONTAINER_H
+#define VCPROJECTMANAGER_INTERNAL_TOOLSECTIONCONTAINER_H
+
+#include "../../../interfaces/isectioncontainer.h"
+#include <QList>
+
+namespace VcProjectManager {
+namespace Internal {
+
+class ToolSectionContainer : public ISectionContainer
+{
+public:
+ ToolSectionContainer();
+ ToolSectionContainer(const ToolSectionContainer &toolSec);
+ ISectionContainer &operator =(ISectionContainer &toolSec);
+ ~ToolSectionContainer();
+
+ IToolSection *section(int index) const;
+ IToolSection *section(const QString &sectionName) const;
+ int sectionCount() const;
+ void appendSection(IToolSection *section);
+ void removeSection(const QString &sectionName);
+ void appendToXMLNode(QDomElement &elementNode);
+
+private:
+ QList<IToolSection *> m_toolSections;
+};
+
+} // namespace Internal
+} // namespace VcProjectManager
+
+#endif // VCPROJECTMANAGER_INTERNAL_TOOLSECTIONCONTAINER_H
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsection.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsection.cpp
index 15a4e8d3bb..717cb78c94 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsection.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsection.cpp
@@ -28,15 +28,15 @@
**
****************************************************************************/
#include "toolsection.h"
-#include "toolattributes/itoolattribute.h"
-#include "toolattributes/iattributedescriptiondataitem.h"
+#include "../../interfaces/itoolattribute.h"
+#include "../../interfaces/iattributedescriptiondataitem.h"
#include "../../widgets/toolwidgets/toolsectionsettingswidget.h"
#include "toolsectiondescription.h"
namespace VcProjectManager {
namespace Internal {
-ToolSection::ToolSection(ToolSectionDescription *toolSectionDesc)
+ToolSection::ToolSection(const ToolSectionDescription *toolSectionDesc)
: m_toolDesc(toolSectionDesc)
{
for (int i = 0; i < toolSectionDesc->attributeDescriptionCount(); ++i) {
@@ -110,15 +110,20 @@ void ToolSection::removeToolAttribute(IToolAttribute *toolAttribute)
}
}
-ToolSectionDescription *ToolSection::sectionDescription() const
+const IToolSectionDescription *ToolSection::sectionDescription() const
{
return m_toolDesc;
}
-ToolSectionSettingsWidget *ToolSection::createSettingsWidget()
+VcNodeWidget *ToolSection::createSettingsWidget()
{
return new ToolSectionSettingsWidget(this);
}
+IToolSection *ToolSection::clone() const
+{
+ return new ToolSection(*this);
+}
+
} // namespace Internal
} // namespace VcProjectManager
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsection.h b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsection.h
index 9f1d8ee3ac..750697f110 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsection.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsection.h
@@ -31,6 +31,7 @@
#define VCPROJECTMANAGER_INTERNAL_TOOLSECTION_H
#include <QList>
+#include "../../interfaces/itoolsection.h"
class QWidget;
@@ -41,10 +42,10 @@ class ToolSectionDescription;
class IToolAttribute;
class ToolSectionSettingsWidget;
-class ToolSection
+class ToolSection : public IToolSection
{
public:
- ToolSection(ToolSectionDescription *toolSectionDesc);
+ ToolSection(const ToolSectionDescription *toolSectionDesc);
ToolSection(const ToolSection &toolSec);
~ToolSection();
@@ -54,12 +55,14 @@ public:
void addToolAttribute(IToolAttribute* toolAttribute);
void removeToolAttribute(IToolAttribute* toolAttribute);
- ToolSectionDescription *sectionDescription() const;
+ const IToolSectionDescription *sectionDescription() const;
- ToolSectionSettingsWidget* createSettingsWidget();
+ VcNodeWidget* createSettingsWidget();
+
+ IToolSection* clone() const;
private:
- ToolSectionDescription * m_toolDesc;
+ const ToolSectionDescription * m_toolDesc;
QList<IToolAttribute *> m_toolAttributes;
};
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsectiondescription.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsectiondescription.cpp
index fe93efed64..4e5bd8fee8 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsectiondescription.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsectiondescription.cpp
@@ -28,7 +28,7 @@
**
****************************************************************************/
#include "toolsectiondescription.h"
-#include "toolattributes/iattributedescriptiondataitem.h"
+#include "../../interfaces/iattributedescriptiondataitem.h"
#include "toolsection.h"
namespace VcProjectManager {
@@ -38,7 +38,7 @@ ToolSectionDescription::ToolSectionDescription()
{
}
-ToolSection *ToolSectionDescription::createToolSection()
+IToolSection *ToolSectionDescription::createToolSection() const
{
return new ToolSection(this);
}
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsectiondescription.h b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsectiondescription.h
index 843c269413..f2e4e3cea5 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsectiondescription.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/tools/toolsectiondescription.h
@@ -33,18 +33,20 @@
#include <QString>
#include <QList>
+#include "../../interfaces/itoolsectiondescription.h"
+
namespace VcProjectManager {
namespace Internal {
class IAttributeDescriptionDataItem;
class ToolSection;
-class ToolSectionDescription
+class ToolSectionDescription : public IToolSectionDescription
{
public:
ToolSectionDescription();
- ToolSection* createToolSection();
+ IToolSection* createToolSection() const;
QString name() const;
void setName(const QString &name);
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri b/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri
index c85a55bbef..5f2766ed1c 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri
@@ -29,7 +29,6 @@ HEADERS += \
vcprojectmodel/vcdocumentmodel.h \
vcprojectmodel/ivcprojectnodemodel.h \
vcprojectmodel/vcdocprojectnodes.h \
- vcprojectmodel/tools/toolattributes/itoolattribute.h \
vcprojectmodel/tools/toolattributes/booltoolattribute.h \
vcprojectmodel/tools/toolattributes/stringtoolattribute.h \
vcprojectmodel/tools/toolattributes/stringlisttoolattribute.h \
@@ -41,7 +40,10 @@ HEADERS += \
vcprojectmodel/tools/toolsectiondescription.h \
vcprojectmodel/tools/toolsection.h \
vcprojectmodel/tools/toolattributes/toolattributeoption.h \
- vcprojectmodel/tools/toolattributes/attributedescriptiondataitem.h
+ vcprojectmodel/tools/toolattributes/attributedescriptiondataitem.h \
+ vcprojectmodel/generalattributecontainer.h \
+ vcprojectmodel/configurationtools.h \
+ vcprojectmodel/tools/toolattributes/toolsectioncontainer.h
SOURCES += \
vcprojectmodel/vcprojectdocument.cpp \
@@ -81,7 +83,10 @@ SOURCES += \
vcprojectmodel/tools/toolsectiondescription.cpp \
vcprojectmodel/tools/toolsection.cpp \
vcprojectmodel/tools/toolattributes/toolattributeoption.cpp \
- vcprojectmodel/tools/toolattributes/attributedescriptiondataitem.cpp
+ vcprojectmodel/tools/toolattributes/attributedescriptiondataitem.cpp \
+ vcprojectmodel/tools/toolattributes/toolsectioncontainer.cpp \
+ vcprojectmodel/generalattributecontainer.cpp \
+ vcprojectmodel/configurationtools.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 ec19339b2c..10bf8cf840 100644
--- a/src/plugins/vcprojectmanager/widgets/configurationswidgets.cpp
+++ b/src/plugins/vcprojectmanager/widgets/configurationswidgets.cpp
@@ -41,6 +41,8 @@
#include "configurationwidgets.h"
#include "../vcprojectmodel/files.h"
#include "../vcprojectmodel/file.h"
+#include "../interfaces/iattributecontainer.h"
+#include "../interfaces/itools.h"
namespace VcProjectManager {
namespace Internal {
@@ -52,10 +54,11 @@ ConfigurationsBaseWidget::ConfigurationsBaseWidget(Configurations *configs, VcPr
m_configsWidget = new ConfigurationsWidget;
if (m_configs) {
- QList<Configuration::Ptr> configs = m_configs->configurations();
-
- foreach (const Configuration::Ptr &config, configs)
- addConfiguration(config.data());
+ for (int i = 0; i < m_configs->configurationCount(); ++i) {
+ IConfiguration *config = m_configs->configuration(i);
+ if (config)
+ addConfiguration(config);
+ }
}
QVBoxLayout *layout = new QVBoxLayout;
@@ -76,25 +79,25 @@ void ConfigurationsBaseWidget::saveData()
{
// remove deleted configurations
foreach (const QString &removeConfigName, m_removedConfigurations) {
- Configuration::Ptr foundConfig = m_configs->configuration(removeConfigName);
+ IConfiguration *foundConfig = m_configs->configuration(removeConfigName);
if (foundConfig)
- m_configs->removeConfiguration(foundConfig);
+ m_configs->removeConfiguration(foundConfig->fullName());
}
// rename configurations that were renamed
- QMapIterator<Configuration::Ptr, QString> it(m_renamedConfigurations);
+ QMapIterator<IConfiguration*, QString> it(m_renamedConfigurations);
while (it.hasNext()) {
it.next();
- Configuration::Ptr config = it.key();
- config->setName(it.value());
+ IConfiguration *config = it.key();
+ config->setFullName(it.value());
}
// add new configurations
- foreach (const Configuration::Ptr &newConfig, m_newConfigurations)
- m_configs->appendConfiguration(newConfig);
+ foreach (IConfiguration *newConfig, m_newConfigurations)
+ m_configs->addConfiguration(newConfig);
- QHashIterator<QSharedPointer<File>, Configuration::Ptr> fileConfigIt(m_newFilesConfigurations);
+ QHashIterator<QSharedPointer<File>, IConfiguration*> fileConfigIt(m_newFilesConfigurations);
while (fileConfigIt.hasNext()) {
fileConfigIt.next();
@@ -109,21 +112,6 @@ void ConfigurationsBaseWidget::saveData()
}
}
-QList<Configuration::Ptr> ConfigurationsBaseWidget::newConfigurations() const
-{
- return m_newConfigurations;
-}
-
-QList<QString> ConfigurationsBaseWidget::removedConfigurations() const
-{
- return m_removedConfigurations;
-}
-
-QMap<Configuration::Ptr, QString> ConfigurationsBaseWidget::renamedConfigurations() const
-{
- return m_renamedConfigurations;
-}
-
void ConfigurationsBaseWidget::onAddNewConfig(QString newConfigName, QString copyFrom)
{
Platforms::Ptr platforms = m_vcProjDoc->platforms();
@@ -132,29 +120,29 @@ void ConfigurationsBaseWidget::onAddNewConfig(QString newConfigName, QString cop
if (copyFrom.isEmpty()) {
QList<Platform::Ptr> platformList = platforms->platforms();
foreach (const Platform::Ptr &platform, platformList) {
- Configuration::Ptr newConfig = createConfiguration(newConfigName + QLatin1Char('|') + platform->name());
+ IConfiguration *newConfig = createConfiguration(newConfigName + QLatin1Char('|') + platform->name());
if (newConfig) {
- newConfig->setAttribute(QLatin1String("OutputDirectory"), QLatin1String("$(SolutionDir)$(ConfigurationName)"));
- newConfig->setAttribute(QLatin1String("IntermediateDirectory"), QLatin1String("$(ConfigurationName)"));
- newConfig->setAttribute(QLatin1String("ConfigurationType"), QLatin1String("1"));
+ newConfig->attributeContainer()->setAttribute(QLatin1String("OutputDirectory"), QLatin1String("$(SolutionDir)$(ConfigurationName)"));
+ newConfig->attributeContainer()->setAttribute(QLatin1String("IntermediateDirectory"), QLatin1String("$(ConfigurationName)"));
+ newConfig->attributeContainer()->setAttribute(QLatin1String("ConfigurationType"), QLatin1String("1"));
m_newConfigurations.append(newConfig);
- addConfiguration(newConfig.data());
+ addConfiguration(newConfig);
}
}
} else {
- Configuration::Ptr config = m_configs->configuration(copyFrom);
+ IConfiguration *config = m_configs->configuration(copyFrom);
if (config) {
QList<Platform::Ptr> platformList = platforms->platforms();
foreach (const Platform::Ptr &platform, platformList) {
- Configuration::Ptr newConfig = config->clone();
+ IConfiguration* newConfig = config->clone();
if (newConfig) {
- newConfig->setName(newConfigName + QLatin1Char('|') + platform->name());
+ newConfig->setFullName(newConfigName + QLatin1Char('|') + platform->name());
m_newConfigurations.append(newConfig);
- addConfiguration(newConfig.data());
+ addConfiguration(newConfig);
}
addConfigurationToFiles(copyFrom, newConfigName + QLatin1Char('|') + platform->name());
@@ -180,21 +168,21 @@ void ConfigurationsBaseWidget::onRenameConfig(QString newConfigName, QString old
foreach (const Platform::Ptr &platform, platformList) {
QString targetConfigName = splits[0] + QLatin1Char('|') + platform->name();
QString newName = newConfigName + QLatin1Char('|') + platform->name();
- Configuration::Ptr configInNew = configInNewConfigurations(targetConfigName);
+ IConfiguration *configInNew = configInNewConfigurations(targetConfigName);
// if we are renaming newly added config
if (configInNew) {
- configInNew->setName(newName);
+ configInNew->setFullName(newName);
} else {
// we are renaming a config that is already in the model
bool targetAlreadyExists = false;
- QMapIterator<Configuration::Ptr, QString> it(m_renamedConfigurations);
+ QMapIterator<IConfiguration*, QString> it(m_renamedConfigurations);
while (it.hasNext()) {
it.next();
if (it.value() == targetConfigName) {
- Configuration::Ptr key = m_renamedConfigurations.key(targetConfigName);
+ IConfiguration* key = m_renamedConfigurations.key(targetConfigName);
if (key) {
m_renamedConfigurations.insert(key, newName);
@@ -205,7 +193,7 @@ void ConfigurationsBaseWidget::onRenameConfig(QString newConfigName, QString old
}
if (!targetAlreadyExists) {
- Configuration::Ptr config = m_configs->configuration(targetConfigName);
+ IConfiguration *config = m_configs->configuration(targetConfigName);
if (config)
m_renamedConfigurations.insert(config, newName);
}
@@ -230,17 +218,17 @@ void ConfigurationsBaseWidget::onRemoveConfig(QString configNameWithPlatform)
QList<Platform::Ptr> platformList = platforms->platforms();
foreach (const Platform::Ptr &platform, platformList) {
QString targetConfigName = splits[0] + QLatin1Char('|') + platform->name();
- Configuration::Ptr config = m_configs->configuration(targetConfigName);
+ IConfiguration *config = m_configs->configuration(targetConfigName);
// if config exists in the document model, add it to remove list
if (config) {
- removeConfiguration(config.data());
- m_removedConfigurations.append(config->name());
+ removeConfiguration(config);
+ m_removedConfigurations.append(config->fullName());
} else {
// else remove it from the list of newly added configurations
- foreach (const Configuration::Ptr &configPtr, m_newConfigurations) {
- if (configPtr && configPtr->name() == targetConfigName) {
- removeConfiguration(configPtr.data());
+ foreach (IConfiguration *configPtr, m_newConfigurations) {
+ if (configPtr && configPtr->fullName() == targetConfigName) {
+ removeConfiguration(configPtr);
m_newConfigurations.removeAll(configPtr);
break;
}
@@ -249,34 +237,44 @@ void ConfigurationsBaseWidget::onRemoveConfig(QString configNameWithPlatform)
}
}
-void ConfigurationsBaseWidget::addConfiguration(Configuration *config)
+void ConfigurationsBaseWidget::addConfiguration(IConfiguration *config)
{
if (config)
- m_configsWidget->addConfiguration(config->nodeWidgetName(), config->createSettingsWidget());
+ m_configsWidget->addConfiguration(config->fullName(), config->createSettingsWidget());
}
-void ConfigurationsBaseWidget::removeConfiguration(Configuration *config)
+void ConfigurationsBaseWidget::removeConfiguration(IConfiguration *config)
{
if (config)
- m_configsWidget->removeConfiguration(config->name());
+ m_configsWidget->removeConfiguration(config->fullName());
}
-Configuration::Ptr ConfigurationsBaseWidget::createConfiguration(const QString &configNameWithPlatform) const
+IConfiguration *ConfigurationsBaseWidget::createConfiguration(const QString &configNameWithPlatform) const
{
- Configuration::Ptr config = ConfigurationsFactory::createConfiguration(m_vcProjDoc->documentVersion(), QLatin1String("Configuration"));
- config->setName(configNameWithPlatform);
+ IConfiguration *config = 0;
- ToolDescriptionDataManager *tDDM = ToolDescriptionDataManager::instance();
+ if (m_vcProjDoc->documentVersion() == VcDocConstants::DV_MSVC_2003)
+ config = new Configuration2003(QLatin1String("Configuration"));
+ else if (m_vcProjDoc->documentVersion() == VcDocConstants::DV_MSVC_2005)
+ config = new Configuration2005(QLatin1String("Configuration"));
+ else if (m_vcProjDoc->documentVersion() == VcDocConstants::DV_MSVC_2008)
+ config = new Configuration2008(QLatin1String("Configuration"));
- if (tDDM) {
- for (int i = 0; i < tDDM->toolDescriptionCount(); ++i) {
- ToolDescription *toolDesc = tDDM->toolDescription(i);
+ if (config) {
+ config->setFullName(configNameWithPlatform);
- if (toolDesc) {
- ConfigurationTool *configTool = toolDesc->createTool();
+ ToolDescriptionDataManager *tDDM = ToolDescriptionDataManager::instance();
- if (configTool)
- config->addConfigurationTool(configTool);
+ if (tDDM) {
+ for (int i = 0; i < tDDM->toolDescriptionCount(); ++i) {
+ ToolDescription *toolDesc = tDDM->toolDescription(i);
+
+ if (toolDesc) {
+ ITool *configTool = toolDesc->createTool();
+
+ if (configTool)
+ config->tools()->addTool(configTool);
+ }
}
}
}
@@ -284,14 +282,14 @@ Configuration::Ptr ConfigurationsBaseWidget::createConfiguration(const QString &
return config;
}
-Configuration::Ptr ConfigurationsBaseWidget::configInNewConfigurations(const QString &configNameWithPlatform) const
+IConfiguration *ConfigurationsBaseWidget::configInNewConfigurations(const QString &configNameWithPlatform) const
{
- foreach (const Configuration::Ptr &config, m_newConfigurations) {
- if (config && config->name() == configNameWithPlatform)
+ foreach (IConfiguration *config, m_newConfigurations) {
+ if (config && config->fullName() == configNameWithPlatform)
return config;
}
- return Configuration::Ptr();
+ return 0;
}
void ConfigurationsBaseWidget::addConfigurationToFiles(const QString &copyFromConfig, const QString &targetConfigName)
@@ -352,11 +350,11 @@ void ConfigurationsBaseWidget::addConfigurationToFilesInFolder(QSharedPointer<Fo
void ConfigurationsBaseWidget::addConfigurationToFile(QSharedPointer<File> filePtr, const QString &copyFromConfig, const QString &targetConfigName)
{
- Configuration::Ptr configPtr = filePtr->fileConfiguration(copyFromConfig);
+ IConfiguration *configPtr = filePtr->fileConfiguration(copyFromConfig);
if (configPtr) {
- Configuration::Ptr newConfig = configPtr->clone();
- newConfig->setName(targetConfigName);
+ IConfiguration *newConfig = configPtr->clone();
+ newConfig->setFullName(targetConfigName);
m_newFilesConfigurations[filePtr] = newConfig;
}
}
diff --git a/src/plugins/vcprojectmanager/widgets/configurationswidgets.h b/src/plugins/vcprojectmanager/widgets/configurationswidgets.h
index e259f7c6bf..c842bd6af6 100644
--- a/src/plugins/vcprojectmanager/widgets/configurationswidgets.h
+++ b/src/plugins/vcprojectmanager/widgets/configurationswidgets.h
@@ -56,20 +56,16 @@ public:
~ConfigurationsBaseWidget();
void saveData();
- QList<Configuration::Ptr> newConfigurations() const;
- QList<QString> removedConfigurations() const;
- QMap<Configuration::Ptr, QString> renamedConfigurations() const;
-
private slots:
void onAddNewConfig(QString newConfigName, QString copyFrom);
void onRenameConfig(QString newConfigName, QString oldConfigNameWithPlatform);
void onRemoveConfig(QString configNameWithPlatform);
protected:
- void addConfiguration(Configuration *config);
- void removeConfiguration(Configuration *config);
- Configuration::Ptr createConfiguration(const QString &configNameWithPlatform) const;
- Configuration::Ptr configInNewConfigurations(const QString &configNameWithPlatform) const;
+ void addConfiguration(IConfiguration *config);
+ void removeConfiguration(IConfiguration *config);
+ IConfiguration* createConfiguration(const QString &configNameWithPlatform) const;
+ IConfiguration* configInNewConfigurations(const QString &configNameWithPlatform) const;
void addConfigurationToFiles(const QString &copyFromConfig, const QString &targetConfigName);
void addConfigurationToFilesInFilter(QSharedPointer<Filter> filterPtr, const QString &copyFromConfig, const QString &targetConfigName);
void addConfigurationToFilesInFolder(QSharedPointer<Folder> folderPtr, const QString &copyFromConfig, const QString &targetConfigName);
@@ -79,11 +75,11 @@ protected:
VcProjectDocument *m_vcProjDoc;
ConfigurationsWidget *m_configsWidget;
- QList<QSharedPointer<Configuration> > m_newConfigurations;
+ QList<IConfiguration *> m_newConfigurations;
QList<QString> m_removedConfigurations;
- QMap<Configuration::Ptr, QString> m_renamedConfigurations; // <oldName, newName>
+ QMap<IConfiguration*, QString> m_renamedConfigurations; // <oldName, newName>
- QHash<QSharedPointer<File>, Configuration::Ptr> m_newFilesConfigurations;
+ QHash<QSharedPointer<File>, IConfiguration*> m_newFilesConfigurations;
};
class Configurations2003Widget : public ConfigurationsBaseWidget
diff --git a/src/plugins/vcprojectmanager/widgets/configurationwidgets.cpp b/src/plugins/vcprojectmanager/widgets/configurationwidgets.cpp
index 85992afd02..724c503f20 100644
--- a/src/plugins/vcprojectmanager/widgets/configurationwidgets.cpp
+++ b/src/plugins/vcprojectmanager/widgets/configurationwidgets.cpp
@@ -37,6 +37,7 @@
#include "../vcprojectmodel/tools/tool_constants.h"
#include "../vcprojectmodel/tools/configurationtool.h"
#include "../vcprojectmodel/tools/toolattributes/tooldescription.h"
+#include "../interfaces/itools.h"
namespace VcProjectManager {
namespace Internal {
@@ -65,8 +66,8 @@ ConfigurationBaseWidget::ConfigurationBaseWidget(Configuration *config)
mainWidgetSplitter->setStretchFactor(1, 5);
// add tool items
- for (int i = 0; i < m_config->configurationToolCount(); ++i) {
- ConfigurationTool *configTool = m_config->configurationTool(i);
+ for (int i = 0; i < m_config->tools()->toolCount(); ++i) {
+ ITool *configTool = m_config->tools()->tool(i);
if (configTool) {
VcNodeWidget *toolWidget = configTool->createSettingsWidget();
diff --git a/src/plugins/vcprojectmanager/widgets/toolwidgets/booltoolattributesettingsitem.cpp b/src/plugins/vcprojectmanager/widgets/toolwidgets/booltoolattributesettingsitem.cpp
index 6bad0ad4a7..6ba901f628 100644
--- a/src/plugins/vcprojectmanager/widgets/toolwidgets/booltoolattributesettingsitem.cpp
+++ b/src/plugins/vcprojectmanager/widgets/toolwidgets/booltoolattributesettingsitem.cpp
@@ -33,8 +33,8 @@
#include <QVBoxLayout>
#include "../../vcprojectmodel/tools/toolattributes/booltoolattribute.h"
-#include "../../vcprojectmodel/tools/toolattributes/iattributedescriptiondataitem.h"
#include "../../vcprojectmodel/tools/toolattributes/toolattributeoption.h"
+#include "interfaces/iattributedescriptiondataitem.h"
namespace VcProjectManager {
namespace Internal {
diff --git a/src/plugins/vcprojectmanager/widgets/toolwidgets/integertoolattributesettingsitem.cpp b/src/plugins/vcprojectmanager/widgets/toolwidgets/integertoolattributesettingsitem.cpp
index 4829687367..5811cdc504 100644
--- a/src/plugins/vcprojectmanager/widgets/toolwidgets/integertoolattributesettingsitem.cpp
+++ b/src/plugins/vcprojectmanager/widgets/toolwidgets/integertoolattributesettingsitem.cpp
@@ -30,7 +30,7 @@
#include "integertoolattributesettingsitem.h"
#include "../../vcprojectmodel/tools/toolattributes/integertoolattribute.h"
#include "../../vcprojectmodel/tools/toolattributes/toolattributeoption.h"
-#include "../../vcprojectmodel/tools/toolattributes/iattributedescriptiondataitem.h"
+#include "interfaces/iattributedescriptiondataitem.h"
#include <QComboBox>
#include <QVBoxLayout>
diff --git a/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsectionsettingswidget.cpp b/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsectionsettingswidget.cpp
index 723f9d7afc..99240f1609 100644
--- a/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsectionsettingswidget.cpp
+++ b/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsectionsettingswidget.cpp
@@ -30,8 +30,8 @@
#include "toolsectionsettingswidget.h"
#include "itoolattributesettingswidget.h"
#include "../../vcprojectmodel/tools/toolsection.h"
-#include "../../vcprojectmodel/tools/toolattributes/itoolattribute.h"
-#include "../../vcprojectmodel/tools/toolattributes/iattributedescriptiondataitem.h"
+#include "../../interfaces/itoolattribute.h"
+#include "../../interfaces/iattributedescriptiondataitem.h"
#include "../basicconfigurationwidget.h"
#include <QVBoxLayout>
@@ -40,7 +40,7 @@ namespace VcProjectManager {
namespace Internal {
ToolSectionSettingsWidget::ToolSectionSettingsWidget(ToolSection *toolSection, QWidget *parent)
- : QWidget(parent)
+ : VcNodeWidget(parent)
{
BasicConfigurationWidget *basicWidget = new BasicConfigurationWidget(this);
diff --git a/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsectionsettingswidget.h b/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsectionsettingswidget.h
index aa525436f4..34bd5e3ff2 100644
--- a/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsectionsettingswidget.h
+++ b/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsectionsettingswidget.h
@@ -33,6 +33,8 @@
#include <QList>
#include <QWidget>
+#include "../vcnodewidget.h"
+
namespace VcProjectManager {
namespace Internal {
@@ -41,7 +43,7 @@ class BasicConfigurationWidget;
class IToolAttribute;
class IToolAttributeSettingsWidget;
-class ToolSectionSettingsWidget : public QWidget
+class ToolSectionSettingsWidget : public VcNodeWidget
{
public:
ToolSectionSettingsWidget(ToolSection *toolSection, QWidget *parent = 0);
diff --git a/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsettingswidget.cpp b/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsettingswidget.cpp
index 8e9b2c57e7..0843d78f9e 100644
--- a/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsettingswidget.cpp
+++ b/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsettingswidget.cpp
@@ -30,8 +30,9 @@
#include "toolsettingswidget.h"
#include "../../vcprojectmodel/tools/configurationtool.h"
-#include "../../vcprojectmodel/tools/toolsection.h"
#include "../../vcprojectmodel/tools/toolsectiondescription.h"
+#include "../../interfaces/itoolsection.h"
+#include "../../interfaces/isectioncontainer.h"
#include "toolsectionsettingswidget.h"
#include <QTableWidget>
@@ -51,12 +52,12 @@ ToolSettingsWidget::ToolSettingsWidget(ConfigurationTool *tool, QWidget *parent)
setLayout(layout);
if (m_tool) {
- for (int i = 0; i < m_tool->sectionCount(); ++i) {
- ToolSection *toolSection = m_tool->section(i);
+ for (int i = 0; i < m_tool->sectionContainer()->sectionCount(); ++i) {
+ IToolSection *toolSection = m_tool->sectionContainer()->section(i);
if (toolSection) {
- ToolSectionSettingsWidget *toolSectionWidget = toolSection->createSettingsWidget();
- mainTabWidget->addTab(toolSection->createSettingsWidget(), toolSection->sectionDescription()->name());
+ VcNodeWidget *toolSectionWidget = toolSection->createSettingsWidget();
+ mainTabWidget->addTab(toolSectionWidget, toolSection->sectionDescription()->name());
m_sections.append(toolSectionWidget);
}
}
@@ -65,7 +66,7 @@ ToolSettingsWidget::ToolSettingsWidget(ConfigurationTool *tool, QWidget *parent)
void ToolSettingsWidget::saveData()
{
- foreach (ToolSectionSettingsWidget *toolSectionWidget, m_sections)
+ foreach (VcNodeWidget *toolSectionWidget, m_sections)
toolSectionWidget->saveData();
}
diff --git a/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsettingswidget.h b/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsettingswidget.h
index 5010fa1815..12c1243284 100644
--- a/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsettingswidget.h
+++ b/src/plugins/vcprojectmanager/widgets/toolwidgets/toolsettingswidget.h
@@ -47,7 +47,7 @@ public:
private:
ConfigurationTool *m_tool;
- QList<ToolSectionSettingsWidget *> m_sections;
+ QList<VcNodeWidget *> m_sections;
};
} // namespace Internal
diff --git a/src/plugins/vcprojectmanager/widgets/vcnodewidget.cpp b/src/plugins/vcprojectmanager/widgets/vcnodewidget.cpp
index 8b21520c9e..9129ffd2d6 100644
--- a/src/plugins/vcprojectmanager/widgets/vcnodewidget.cpp
+++ b/src/plugins/vcprojectmanager/widgets/vcnodewidget.cpp
@@ -37,9 +37,5 @@ VcNodeWidget::VcNodeWidget(QWidget *parent) :
{
}
-VcNodeWidget::~VcNodeWidget()
-{
-}
-
} // namespace Internal
} // namespace VcProjectManager
diff --git a/src/plugins/vcprojectmanager/widgets/vcnodewidget.h b/src/plugins/vcprojectmanager/widgets/vcnodewidget.h
index ebb0722782..75b84c3612 100644
--- a/src/plugins/vcprojectmanager/widgets/vcnodewidget.h
+++ b/src/plugins/vcprojectmanager/widgets/vcnodewidget.h
@@ -40,7 +40,6 @@ class VcNodeWidget : public QWidget
Q_OBJECT
public:
explicit VcNodeWidget(QWidget *parent = 0);
- ~VcNodeWidget();
virtual void saveData() = 0;
};