summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRadovan Zivkovic <pivonroll@gmail.com>2013-10-10 20:46:26 +0200
committerOswald Buddenhagen <oswald.buddenhagen@digia.com>2014-03-11 19:54:59 +0100
commit77722fe95569aa3a2089d86ab9cedf18e1cf340e (patch)
treedb6a684ab621b5c3f1507571f7f9e8fe62603614
parentf1d99c010a9c4008f3d4cb7eb2ea8f1a984865cb (diff)
downloadqt-creator-77722fe95569aa3a2089d86ab9cedf18e1cf340e.tar.gz
ProjectReference implements IReference interface.
Change-Id: Iee3ec9508ea16f274ad22ae02045142282bd2e23 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/projectreference.cpp303
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/projectreference.h116
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.cpp443
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.h163
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/references.cpp9
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h17
-rw-r--r--src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri2
7 files changed, 101 insertions, 952 deletions
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.cpp
index 6aa470fafa..2255f2d5ef 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.cpp
@@ -28,294 +28,123 @@
**
****************************************************************************/
#include "projectreference.h"
+#include "configurationcontainer.h"
+#include "generalattributecontainer.h"
+#include "vcprojectdocument_constants.h"
+#include "configuration.h"
namespace VcProjectManager {
namespace Internal {
-ProjectReference::~ProjectReference()
-{
-}
-
-void ProjectReference::processNode(const QDomNode &node)
-{
- m_private->processNode(node);
-}
-
-VcNodeWidget *ProjectReference::createSettingsWidget()
-{
- // TODO(Radovan): Finish implementation
- return 0;
-}
-
-QDomNode ProjectReference::toXMLDomNode(QDomDocument &domXMLDocument) const
-{
- return m_private->toXMLDomNode(domXMLDocument);
-}
-
-QString ProjectReference::name() const
-{
- return m_private->name();
-}
-
-void ProjectReference::setName(const QString &name)
-{
- m_private->setName(name);
-}
-
-QString ProjectReference::referencedProjectIdentifier() const
-{
- return m_private->referencedProjectIdentifier();
-}
-
-void ProjectReference::setReferencedProjectIdentifier(const QString &referencedProjectIdentifier)
-{
- m_private->setReferencedProjectIdentifier(referencedProjectIdentifier);
-}
-
-void ProjectReference::addReferenceConfiguration(IConfiguration *refConfig)
-{
- m_private->addReferenceConfiguration(refConfig);
-}
-
-void ProjectReference::removeReferenceConfiguration(IConfiguration *refConfig)
-{
- m_private->removeReferenceConfiguration(refConfig);
-}
-
-void ProjectReference::removeReferenceConfiguration(const QString &refConfigName)
-{
- m_private->removeReferenceConfiguration(refConfigName);
-}
-
-QList<IConfiguration*> ProjectReference::referenceConfigurations() const
-{
- return m_private->referenceConfigurations();
-}
-
-IConfiguration* ProjectReference::referenceConfiguration(const QString &refConfigName) const
-{
- return m_private->referenceConfiguration(refConfigName);
-}
-
ProjectReference::ProjectReference()
{
+ m_configurations = new ConfigurationContainer;
+ m_attributeContainer = new GeneralAttributeContainer;
}
ProjectReference::ProjectReference(const ProjectReference &projRef)
{
- m_private = projRef.m_private->clone();
-}
-
-ProjectReference &ProjectReference::operator =(const ProjectReference &projRef)
-{
- if (this != &projRef)
- m_private = projRef.m_private->clone();
- return *this;
-}
-
-
-ProjectReference2003::ProjectReference2003(const ProjectReference2003 &projRef)
- : ProjectReference(projRef)
-{
-}
-
-ProjectReference2003 &ProjectReference2003::operator =(const ProjectReference2003 &projRef)
-{
- ProjectReference::operator =(projRef);
- return *this;
-}
-
-ProjectReference2003::~ProjectReference2003()
-{
-}
-
-ProjectReference::Ptr ProjectReference2003::clone() const
-{
- return ProjectReference::Ptr(new ProjectReference2003(*this));
-}
+ m_configurations = new ConfigurationContainer;
+ m_attributeContainer = new GeneralAttributeContainer;
-ProjectReference2003::ProjectReference2003()
-{
+ *m_attributeContainer = *projRef.m_attributeContainer;
+ *m_configurations = *projRef.m_configurations;
}
-void ProjectReference2003::init()
-{
- m_private = ProjectReference_Private::Ptr(new ProjectReference2003_Private);
-}
-
-
-ProjectReference2005::ProjectReference2005(const ProjectReference2005 &projRef)
- : ProjectReference2003(projRef)
-{
-}
-
-ProjectReference2005 &ProjectReference2005::operator =(const ProjectReference2005 &projRef)
+ProjectReference &ProjectReference::operator =(const ProjectReference &projRef)
{
- ProjectReference2003::operator =(projRef);
+ if (this != &projRef) {
+ *m_attributeContainer = *projRef.m_attributeContainer;
+ *m_configurations = *projRef.m_configurations;
+ }
return *this;
}
-ProjectReference2005::~ProjectReference2005()
-{
-}
-
-ProjectReference::Ptr ProjectReference2005::clone() const
-{
- return ProjectReference::Ptr(new ProjectReference2005(*this));
-}
-
-QString ProjectReference2005::copyLocal() const
-{
- QSharedPointer<ProjectReference2005_Private> ref = m_private.staticCast<ProjectReference2005_Private>();
- return ref->copyLocal();
-}
-
-void ProjectReference2005::setCopyLocal(const QString &copyLocal)
-{
- QSharedPointer<ProjectReference2005_Private> ref = m_private.staticCast<ProjectReference2005_Private>();
- ref->setCopyLocal(copyLocal);
-}
-
-bool ProjectReference2005::useInBuild() const
-{
- QSharedPointer<ProjectReference2005_Private> ref = m_private.staticCast<ProjectReference2005_Private>();
- return ref->useInBuild();
-}
-
-void ProjectReference2005::setUseInBuild(bool useInBuild)
-{
- QSharedPointer<ProjectReference2005_Private> ref = m_private.staticCast<ProjectReference2005_Private>();
- ref->setUseInBuild(useInBuild);
-}
-
-QString ProjectReference2005::relativePathFromSolution() const
-{
- QSharedPointer<ProjectReference2005_Private> ref = m_private.staticCast<ProjectReference2005_Private>();
- return ref->relativePathFromSolution();
-}
-
-void ProjectReference2005::setRelativePathFromSolution(const QString &relativePathFromSolution)
-{
- QSharedPointer<ProjectReference2005_Private> ref = m_private.staticCast<ProjectReference2005_Private>();
- ref->setRelativePathFromSolution(relativePathFromSolution);
-}
-
-ProjectReference2005::ProjectReference2005()
-{
-}
-
-void ProjectReference2005::init()
-{
- m_private = ProjectReference_Private::Ptr(new ProjectReference2005_Private);
-}
-
-
-ProjectReference2008::ProjectReference2008(const ProjectReference2008 &projRef)
- : ProjectReference2005(projRef)
+ProjectReference::~ProjectReference()
{
+ delete m_attributeContainer;
+ delete m_configurations;
}
-ProjectReference2008 &ProjectReference2008::operator =(const ProjectReference2008 &projRef)
+void ProjectReference::processNode(const QDomNode &node)
{
- ProjectReference2005::operator =(projRef);
- return *this;
-}
+ if (node.isNull())
+ return;
-ProjectReference2008::~ProjectReference2008()
-{
-}
+ if (node.nodeType() == QDomNode::ElementNode)
+ processNodeAttributes(node.toElement());
-ProjectReference::Ptr ProjectReference2008::clone() const
-{
- return ProjectReference::Ptr(new ProjectReference2008(*this));
+ if (node.hasChildNodes()) {
+ QDomNode firstChild = node.firstChild();
+ if (!firstChild.isNull())
+ processReferenceConfig(firstChild);
+ }
}
-QString ProjectReference2008::relativePathToProject() const
+VcNodeWidget *ProjectReference::createSettingsWidget()
{
- QSharedPointer<ProjectReference2008_Private> ref = m_private.staticCast<ProjectReference2008_Private>();
- return ref->relativePathToProject();
+ return 0;
}
-void ProjectReference2008::setRelativePathToProject(const QString &relativePathToProject)
+QDomNode ProjectReference::toXMLDomNode(QDomDocument &domXMLDocument) const
{
- QSharedPointer<ProjectReference2008_Private> ref = m_private.staticCast<ProjectReference2008_Private>();
- ref->setRelativePathToProject(relativePathToProject);
-}
+ QDomElement projRefNode = domXMLDocument.createElement(QLatin1String("ProjectReference"));
-bool ProjectReference2008::useDependenciesInBuild() const
-{
- QSharedPointer<ProjectReference2008_Private> ref = m_private.staticCast<ProjectReference2008_Private>();
- return ref->useDependenciesInBuild();
-}
+ m_attributeContainer->appendToXMLNode(projRefNode);
+ m_configurations->appendToXMLNode(projRefNode, domXMLDocument);
-void ProjectReference2008::setUseDependenciesInBuild(bool useDependenciesInBuild)
-{
- QSharedPointer<ProjectReference2008_Private> ref = m_private.staticCast<ProjectReference2008_Private>();
- ref->setUseDependenciesInBuild(useDependenciesInBuild);
+ return projRefNode;
}
-bool ProjectReference2008::copyLocalSatelliteAssemblies() const
+IAttributeContainer *ProjectReference::attributeContainer() const
{
- QSharedPointer<ProjectReference2008_Private> ref = m_private.staticCast<ProjectReference2008_Private>();
- return ref->copyLocalSatelliteAssemblies();
+ return m_attributeContainer;
}
-void ProjectReference2008::setCopyLocalSatelliteAssemblies(bool copyLocalSatelliteAssemblies)
+ConfigurationContainer *ProjectReference::configurationContainer() const
{
- QSharedPointer<ProjectReference2008_Private> ref = m_private.staticCast<ProjectReference2008_Private>();
- ref->setCopyLocalSatelliteAssemblies(copyLocalSatelliteAssemblies);
+ return m_configurations;
}
-bool ProjectReference2008::copyLocalDependencies() const
+QString ProjectReference::type() const
{
- QSharedPointer<ProjectReference2008_Private> ref = m_private.staticCast<ProjectReference2008_Private>();
- return ref->copyLocalDependencies();
+ return QLatin1String(VcDocConstants::PROJECT_REFERENCE);
}
-void ProjectReference2008::setCopyLocalDependencies(bool copyLocalDependencies)
+void ProjectReference::processReferenceConfig(const QDomNode &referenceConfig)
{
- QSharedPointer<ProjectReference2008_Private> ref = m_private.staticCast<ProjectReference2008_Private>();
- ref->setCopyLocalDependencies(copyLocalDependencies);
-}
+ IConfiguration *referenceConfiguration = new Configuration(QLatin1String("ReferenceConfiguration"));
+ referenceConfiguration->processNode(referenceConfig);
+ m_configurations->addConfiguration(referenceConfiguration);
-ProjectReference2008::ProjectReference2008()
-{
+ // process next sibling
+ QDomNode nextSibling = referenceConfig.nextSibling();
+ if (!nextSibling.isNull())
+ processReferenceConfig(nextSibling);
}
-void ProjectReference2008::init()
+void ProjectReference::processNodeAttributes(const QDomElement &element)
{
- m_private = ProjectReference_Private::Ptr(new ProjectReference2008_Private);
-}
+ QDomNamedNodeMap namedNodeMap = element.attributes();
+ for (int i = 0; i < namedNodeMap.size(); ++i) {
+ QDomNode domNode = namedNodeMap.item(i);
-ProjectReferenceFactory &ProjectReferenceFactory::instance()
-{
- static ProjectReferenceFactory pr;
- return pr;
-}
-
-ProjectReference::Ptr ProjectReferenceFactory::create(VcDocConstants::DocumentVersion version)
-{
- ProjectReference::Ptr ref;
+ if (domNode.nodeType() == QDomNode::AttributeNode) {
+ QDomAttr domElement = domNode.toAttr();
- switch (version) {
- case VcDocConstants::DV_MSVC_2003:
- ref = ProjectReference::Ptr(new ProjectReference2003);
- break;
- case VcDocConstants::DV_MSVC_2005:
- ref = ProjectReference::Ptr(new ProjectReference2005);
- break;
- case VcDocConstants::DV_MSVC_2008:
- ref = ProjectReference::Ptr(new ProjectReference2008);
- break;
- case VcDocConstants::DV_UNRECOGNIZED:
- return ref;
+ if (domElement.name() == QLatin1String(VcDocConstants::PROJECT_REFERENCE_COPY_LOCAL) ||
+ domElement.name() == QLatin1String(VcDocConstants::PROJECT_REFERENCE_COPY_LOCAL_DEPENDENCIES) ||
+ domElement.name() == QLatin1String(VcDocConstants::PROJECT_REFERENCE_COPY_LOCAL_SATELITE_ASSEMBLIES) ||
+ domElement.name() == QLatin1String(VcDocConstants::PROJECT_REFERENCE_NAME) ||
+ domElement.name() == QLatin1String(VcDocConstants::PROJECT_REFERENCE_REFERENCED_PROJECT_IDENTIFIER) ||
+ domElement.name() == QLatin1String(VcDocConstants::PROJECT_REFERENCE_RELATIVE_PATH_FROM_SOLUTION) ||
+ domElement.name() == QLatin1String(VcDocConstants::PROJECT_REFERENCE_RELATIVE_PATH_TO_PROJECT) ||
+ domElement.name() == QLatin1String(VcDocConstants::PROJECT_REFERENCE_USE_DEPENDENCIES_IN_BUILD) ||
+ domElement.name() == QLatin1String(VcDocConstants::PROJECT_REFERENCE_USE_IN_BUILD))
+ m_attributeContainer->setAttribute(domElement.name(), domElement.value());
+ }
}
-
- if (ref)
- ref->init();
-
- return ref;
}
} // namespace Internal
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.h b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.h
index 433ff777fa..63b69e4494 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference.h
@@ -30,125 +30,39 @@
#ifndef VCPROJECTMANAGER_INTERNAL_PROJECTREFERENCE_H
#define VCPROJECTMANAGER_INTERNAL_PROJECTREFERENCE_H
-#include "ivcprojectnodemodel.h"
+#include "../interfaces/ireference.h"
-#include "projectreference_private.h"
+#include <QSharedPointer>
namespace VcProjectManager {
namespace Internal {
-class ProjectReference : public IVcProjectXMLNode
-{
- friend class ProjectReferenceFactory;
+class GeneralAttributeContainer;
+class ProjectReference : public IReference
+{
public:
typedef QSharedPointer<ProjectReference> Ptr;
+ ProjectReference();
+ ProjectReference(const ProjectReference &projRef);
+ ProjectReference& operator=(const ProjectReference &projRef);
~ProjectReference();
void processNode(const QDomNode &node);
VcNodeWidget* createSettingsWidget();
QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
- /*!
- * Implement in order to support creating a clone of a ProjectReference instance.
- * \return A shared pointer to newly created ProjectReference instance.
- */
- virtual ProjectReference::Ptr clone() const = 0;
-
- QString name() const;
- void setName(const QString &name);
- QString referencedProjectIdentifier() const;
- void setReferencedProjectIdentifier(const QString &referencedProjectIdentifier);
- void addReferenceConfiguration(IConfiguration *refConfig);
- void removeReferenceConfiguration(IConfiguration *refConfig);
- void removeReferenceConfiguration(const QString &refConfigName);
- QList<IConfiguration *> referenceConfigurations() const;
- IConfiguration *referenceConfiguration(const QString &refConfigName) const;
-
-protected:
- ProjectReference();
- ProjectReference(const ProjectReference &projRef);
- ProjectReference& operator=(const ProjectReference &projRef);
-
- /*!
- * Called after instance of the ProjectReference is created in order to initialize \b m_private member variable to
- * a proper version of a ProjectReference_Private implementation (2003, 2005 or 2008).
- */
- virtual void init() = 0;
-
- ProjectReference_Private::Ptr m_private;
-};
-
-class ProjectReference2003 : public ProjectReference
-{
- friend class ProjectReferenceFactory;
-
-public:
- ProjectReference2003(const ProjectReference2003 &projRef);
- ProjectReference2003& operator=(const ProjectReference2003 &projRef);
- ~ProjectReference2003();
-
- ProjectReference::Ptr clone() const;
+ IAttributeContainer *attributeContainer() const;
+ ConfigurationContainer *configurationContainer() const;
+ QString type() const;
protected:
- ProjectReference2003();
- void init();
-};
+ void processReferenceConfig(const QDomNode &referenceConfig);
+ void processNodeAttributes(const QDomElement &element);
-class ProjectReference2005 : public ProjectReference2003
-{
- friend class ProjectReferenceFactory;
-
-public:
- ProjectReference2005(const ProjectReference2005 &projRef);
- ProjectReference2005& operator=(const ProjectReference2005 &projRef);
- ~ProjectReference2005();
-
- ProjectReference::Ptr clone() const;
-
- QString copyLocal() const;
- void setCopyLocal(const QString &copyLocal);
- bool useInBuild() const;
- void setUseInBuild(bool useInBuild);
- QString relativePathFromSolution() const;
- void setRelativePathFromSolution(const QString &relativePathFromSolution);
-
-protected:
- ProjectReference2005();
- void init();
-};
-
-class ProjectReference2008 : public ProjectReference2005
-{
- friend class ProjectReferenceFactory;
-
-public:
- ProjectReference2008(const ProjectReference2008 &projRef);
- ProjectReference2008& operator=(const ProjectReference2008 &projRef);
- ~ProjectReference2008();
-
- ProjectReference::Ptr clone() const;
-
- QString relativePathToProject() const;
- void setRelativePathToProject(const QString &relativePathToProject);
- bool useDependenciesInBuild() const;
- void setUseDependenciesInBuild(bool useDependenciesInBuild);
- bool copyLocalSatelliteAssemblies() const;
- void setCopyLocalSatelliteAssemblies(bool copyLocalSatelliteAssemblies);
- bool copyLocalDependencies() const;
- void setCopyLocalDependencies(bool copyLocalDependencies);
-
-private:
- ProjectReference2008();
- void init();
-};
-
-class ProjectReferenceFactory
-{
-public:
- static ProjectReferenceFactory& instance();
- ProjectReference::Ptr create(VcDocConstants::DocumentVersion version);
+ ConfigurationContainer *m_configurations;
+ GeneralAttributeContainer *m_attributeContainer;
};
} // namespace Internal
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.cpp
deleted file mode 100644
index a90b0c8d43..0000000000
--- a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.cpp
+++ /dev/null
@@ -1,443 +0,0 @@
-/**************************************************************************
-**
-** 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 "projectreference_private.h"
-
-#include <QVariant>
-
-#include "configurationsfactory.h"
-
-namespace VcProjectManager {
-namespace Internal {
-
-ProjectReference_Private::~ProjectReference_Private()
-{
- qDeleteAll(m_referenceConfigurations);
-}
-
-void ProjectReference_Private::processNode(const QDomNode &node)
-{
- if (node.isNull())
- return;
-
- if (node.nodeType() == QDomNode::ElementNode)
- processNodeAttributes(node.toElement());
-
- if (node.hasChildNodes()) {
- QDomNode firstChild = node.firstChild();
- if (!firstChild.isNull())
- processReferenceConfig(firstChild);
- }
-}
-
-QDomNode ProjectReference_Private::toXMLDomNode(QDomDocument &domXMLDocument) const
-{
- QDomElement projRefNode = domXMLDocument.createElement(QLatin1String("ProjectReference"));
-
- projRefNode.setAttribute(QLatin1String("Name"), m_name);
- projRefNode.setAttribute(QLatin1String("ReferencedProjectIdentifier"), m_referencedProjectIdentifier);
-
- foreach (const IConfiguration *refConfig, m_referenceConfigurations)
- projRefNode.appendChild(refConfig->toXMLDomNode(domXMLDocument));
-
- return projRefNode;
-}
-
-QString ProjectReference_Private::name() const
-{
- return m_name;
-}
-
-void ProjectReference_Private::setName(const QString &name)
-{
- m_name = name;
-}
-
-QString ProjectReference_Private::referencedProjectIdentifier() const
-{
- return m_referencedProjectIdentifier;
-}
-
-void ProjectReference_Private::setReferencedProjectIdentifier(const QString &referencedProjectIdentifier)
-{
- m_referencedProjectIdentifier = referencedProjectIdentifier;
-}
-
-void ProjectReference_Private::addReferenceConfiguration(IConfiguration *refConfig)
-{
- if (m_referenceConfigurations.contains(refConfig))
- return;
-
- // Don't add configuration with the same name
- foreach (const IConfiguration *refConf, m_referenceConfigurations) {
- if (refConfig->fullName() == refConf->fullName())
- return;
- }
- m_referenceConfigurations.append(refConfig);
-}
-
-void ProjectReference_Private::removeReferenceConfiguration(IConfiguration *refConfig)
-{
- m_referenceConfigurations.removeAll(refConfig);
-}
-
-void ProjectReference_Private::removeReferenceConfiguration(const QString &refConfigName)
-{
- foreach (IConfiguration *refConfig, m_referenceConfigurations) {
- if (refConfig->fullName() == refConfigName) {
- m_referenceConfigurations.removeOne(refConfig);
- delete refConfig;
- return;
- }
- }
-}
-
-QList<IConfiguration*> ProjectReference_Private::referenceConfigurations() const
-{
- return m_referenceConfigurations;
-}
-
-IConfiguration* ProjectReference_Private::referenceConfiguration(const QString &refConfigName) const
-{
- foreach (IConfiguration *refConfig, m_referenceConfigurations) {
- if (refConfig->fullName() == refConfigName)
- return refConfig;
- }
- return 0;
-}
-
-ProjectReference_Private::ProjectReference_Private()
-{
-}
-
-ProjectReference_Private::ProjectReference_Private(const ProjectReference_Private &projRef_p)
-{
- m_referencedProjectIdentifier = projRef_p.m_referencedProjectIdentifier;
- m_name = projRef_p.m_name;
-
- foreach (const IConfiguration *refConfig, projRef_p.m_referenceConfigurations)
- m_referenceConfigurations.append(refConfig->clone());
-}
-
-ProjectReference_Private &ProjectReference_Private::operator =(const ProjectReference_Private &projRef_p)
-{
- if (this != &projRef_p) {
- m_referencedProjectIdentifier = projRef_p.m_referencedProjectIdentifier;
- m_name = projRef_p.m_name;
-
- m_referenceConfigurations.clear();
- foreach (const IConfiguration *refConfig, projRef_p.m_referenceConfigurations)
- m_referenceConfigurations.append(refConfig->clone());
- }
- return *this;
-}
-
-void ProjectReference_Private::processReferenceConfig(const QDomNode &referenceConfig)
-{
- IConfiguration *referenceConfiguration = createReferenceConfiguration();
- referenceConfiguration->processNode(referenceConfig);
- m_referenceConfigurations.append(referenceConfiguration);
-
- // process next sibling
- QDomNode nextSibling = referenceConfig.nextSibling();
- if (!nextSibling.isNull())
- processReferenceConfig(nextSibling);
-}
-
-void ProjectReference_Private::processNodeAttributes(const QDomElement &element)
-{
- QDomNamedNodeMap namedNodeMap = element.attributes();
-
- for (int i = 0; i < namedNodeMap.size(); ++i) {
- QDomNode domNode = namedNodeMap.item(i);
-
- if (domNode.nodeType() == QDomNode::AttributeNode) {
- QDomAttr domElement = domNode.toAttr();
-
- if (domElement.name() == QLatin1String("Name"))
- m_name = domElement.value();
-
- else if (domElement.name() == QLatin1String("ReferencedProjectIdentifier"))
- m_referencedProjectIdentifier = domElement.value();
- }
- }
-}
-
-
-ProjectReference2003_Private::~ProjectReference2003_Private()
-{
-}
-
-ProjectReference_Private::Ptr ProjectReference2003_Private::clone() const
-{
- return ProjectReference_Private::Ptr(new ProjectReference2003_Private(*this));
-}
-
-ProjectReference2003_Private::ProjectReference2003_Private()
-{
-}
-
-ProjectReference2003_Private::ProjectReference2003_Private(const ProjectReference2003_Private &projRef_p)
- : ProjectReference_Private(projRef_p)
-{
-}
-
-ProjectReference2003_Private &ProjectReference2003_Private::operator =(const ProjectReference2003_Private &projRef_p)
-{
- ProjectReference_Private::operator =(projRef_p);
- return *this;
-}
-
-IConfiguration *ProjectReference2003_Private::createReferenceConfiguration() const
-{
- return new Configuration(QLatin1String("ReferenceConfiguration"));
-}
-
-
-ProjectReference2005_Private::~ProjectReference2005_Private()
-{
-}
-
-QDomNode ProjectReference2005_Private::toXMLDomNode(QDomDocument &domXMLDocument) const
-{
- QDomElement toolNode = ProjectReference2003_Private::toXMLDomNode(domXMLDocument).toElement();
-
- toolNode.setAttribute(QLatin1String("CopyLocal"), m_copyLocal);
- toolNode.setAttribute(QLatin1String("UseInBuild"), QVariant(m_useInBuild).toString());
- toolNode.setAttribute(QLatin1String("RelativePathFromSolution"), m_relativePathFromSolution);
-
- return toolNode;
-}
-
-ProjectReference_Private::Ptr ProjectReference2005_Private::clone() const
-{
- return ProjectReference_Private::Ptr(new ProjectReference2005_Private(*this));
-}
-
-QString ProjectReference2005_Private::copyLocal() const
-{
- return m_copyLocal;
-}
-
-void ProjectReference2005_Private::setCopyLocal(const QString &copyLocal)
-{
- m_copyLocal = copyLocal;
-}
-
-bool ProjectReference2005_Private::useInBuild() const
-{
- return m_useInBuild;
-}
-
-void ProjectReference2005_Private::setUseInBuild(bool useInBuild)
-{
- m_useInBuild = useInBuild;
-}
-
-QString ProjectReference2005_Private::relativePathFromSolution() const
-{
- return m_relativePathFromSolution;
-}
-
-void ProjectReference2005_Private::setRelativePathFromSolution(const QString &relativePathFromSolution)
-{
- m_relativePathFromSolution = relativePathFromSolution;
-}
-
-ProjectReference2005_Private::ProjectReference2005_Private()
-{
-}
-
-ProjectReference2005_Private::ProjectReference2005_Private(const ProjectReference2005_Private &projRef_p)
- : ProjectReference2003_Private(projRef_p)
-{
-}
-
-ProjectReference2005_Private &ProjectReference2005_Private::operator =(const ProjectReference2005_Private &projRef_p)
-{
- ProjectReference2003_Private::operator =(projRef_p);
- return *this;
-}
-
-void ProjectReference2005_Private::processNodeAttributes(const QDomElement &element)
-{
- ProjectReference2003_Private::processNodeAttributes(element);
-
- QDomNamedNodeMap namedNodeMap = element.attributes();
-
- for (int i = 0; i < namedNodeMap.size(); ++i) {
- QDomNode domNode = namedNodeMap.item(i);
-
- if (domNode.nodeType() == QDomNode::AttributeNode) {
- QDomAttr domElement = domNode.toAttr();
-
- if (domElement.name() == QLatin1String("CopyLocal"))
- m_copyLocal = domElement.value();
-
- else if (domElement.name() == QLatin1String("RelativePathFromSolution"))
- m_relativePathFromSolution = domElement.value();
-
- else if (domElement.name() == QLatin1String("UseInBuild")) {
- if (domElement.value() == QLatin1String("false"))
- m_useInBuild = false;
- else
- m_useInBuild = true;
- }
- }
- }
-}
-
-IConfiguration *ProjectReference2005_Private::createReferenceConfiguration() const
-{
- return new Configuration(QLatin1String("ReferenceConfiguration"));
-}
-
-
-ProjectReference2008_Private::~ProjectReference2008_Private()
-{
-}
-
-QDomNode ProjectReference2008_Private::toXMLDomNode(QDomDocument &domXMLDocument) const
-{
- QDomElement toolNode = ProjectReference2005_Private::toXMLDomNode(domXMLDocument).toElement();
-
- toolNode.setAttribute(QLatin1String("RelativePathToProject"), m_relativePathToProject);
- toolNode.setAttribute(QLatin1String("UseDependenciesInBuild"), QVariant(m_useDependenciesInBuild).toString());
- toolNode.setAttribute(QLatin1String("CopyLocalSatelliteAssemblies"), QVariant(m_copyLocalSatelliteAssemblies).toString());
- toolNode.setAttribute(QLatin1String("CopyLocalDependencies"), QVariant(m_copyLocalDependencies).toString());
-
- return toolNode;
-}
-
-ProjectReference_Private::Ptr ProjectReference2008_Private::clone() const
-{
- return ProjectReference_Private::Ptr(new ProjectReference2008_Private(*this));
-}
-
-QString ProjectReference2008_Private::relativePathToProject() const
-{
- return m_relativePathToProject;
-}
-
-void ProjectReference2008_Private::setRelativePathToProject(const QString &relativePathToProject)
-{
- m_relativePathToProject = relativePathToProject;
-}
-
-bool ProjectReference2008_Private::useDependenciesInBuild() const
-{
- return m_useDependenciesInBuild;
-}
-
-void ProjectReference2008_Private::setUseDependenciesInBuild(bool useDependenciesInBuild)
-{
- m_useDependenciesInBuild = useDependenciesInBuild;
-}
-
-bool ProjectReference2008_Private::copyLocalSatelliteAssemblies() const
-{
- return m_copyLocalSatelliteAssemblies;
-}
-
-void ProjectReference2008_Private::setCopyLocalSatelliteAssemblies(bool copyLocalSatelliteAssemblies)
-{
- m_copyLocalSatelliteAssemblies = copyLocalSatelliteAssemblies;
-}
-
-bool ProjectReference2008_Private::copyLocalDependencies() const
-{
- return m_copyLocalDependencies;
-}
-
-void ProjectReference2008_Private::setCopyLocalDependencies(bool copyLocalDependencies)
-{
- m_copyLocalDependencies = copyLocalDependencies;
-}
-
-ProjectReference2008_Private::ProjectReference2008_Private()
-{
-}
-
-ProjectReference2008_Private::ProjectReference2008_Private(const ProjectReference2008_Private &projRef_p)
- : ProjectReference2005_Private(projRef_p)
-{
-}
-
-ProjectReference2008_Private &ProjectReference2008_Private::operator =(const ProjectReference2008_Private &projRef_p)
-{
- ProjectReference2005_Private::operator =(projRef_p);
- return *this;
-}
-
-void ProjectReference2008_Private::processNodeAttributes(const QDomElement &element)
-{
- ProjectReference2005_Private::processNodeAttributes(element);
-
- QDomNamedNodeMap namedNodeMap = element.attributes();
-
- for (int i = 0; i < namedNodeMap.size(); ++i) {
- QDomNode domNode = namedNodeMap.item(i);
-
- if (domNode.nodeType() == QDomNode::AttributeNode) {
- QDomAttr domElement = domNode.toAttr();
-
- if (domElement.name() == QLatin1String("CopyLocalDependencies")) {
- if (domElement.value() == QLatin1String("false"))
- m_copyLocalDependencies = false;
- else
- m_copyLocalDependencies = true;
- }
-
- else if (domElement.name() == QLatin1String("CopyLocalSatelliteAssemblies")) {
- if (domElement.value() == QLatin1String("false"))
- m_copyLocalSatelliteAssemblies = false;
- else
- m_copyLocalSatelliteAssemblies = true;
- }
-
- else if (domElement.name() == QLatin1String("UseDependenciesInBuild")) {
- if (domElement.value() == QLatin1String("false"))
- m_useDependenciesInBuild = false;
- else
- m_useDependenciesInBuild = true;
- }
-
- else if (domElement.name() == QLatin1String("RelativePathToProject"))
- m_relativePathToProject = domElement.value();
- }
- }
-}
-
-IConfiguration *ProjectReference2008_Private::createReferenceConfiguration() const
-{
- return new Configuration(QLatin1String("ReferenceConfiguration"));
-}
-
-} // namespace Internal
-} // namespace VcProjectManager
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.h b/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.h
deleted file mode 100644
index 44056de2a0..0000000000
--- a/src/plugins/vcprojectmanager/vcprojectmodel/projectreference_private.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/**************************************************************************
-**
-** 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_PROJECTREFERENCE_PRIVATE_H
-#define VCPROJECTMANAGER_INTERNAL_PROJECTREFERENCE_PRIVATE_H
-
-#include "configuration.h"
-#include "vcprojectdocument_constants.h"
-
-namespace VcProjectManager {
-namespace Internal {
-
-class ProjectReference_Private
-{
- friend class ProjectReference;
-
-public:
- typedef QSharedPointer<ProjectReference_Private> Ptr;
-
- virtual ~ProjectReference_Private();
- virtual void processNode(const QDomNode &node);
- virtual QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
-
- /*!
- * Implement in order to support creating a clone of a ProjectReference_Private instance.
- * \return A shared pointer to newly created ProjectReference_Private instance.
- */
- virtual ProjectReference_Private::Ptr clone() const = 0;
-
- QString name() const;
- void setName(const QString &name);
- QString referencedProjectIdentifier() const;
- void setReferencedProjectIdentifier(const QString &referencedProjectIdentifier);
- void addReferenceConfiguration(IConfiguration *refConfig);
- void removeReferenceConfiguration(IConfiguration *refConfig);
- void removeReferenceConfiguration(const QString &refConfigName);
- QList<IConfiguration *> referenceConfigurations() const;
- IConfiguration *referenceConfiguration(const QString &refConfigName) const;
-
-protected:
- ProjectReference_Private();
- ProjectReference_Private(const ProjectReference_Private &projRef_p);
- ProjectReference_Private& operator=(const ProjectReference_Private &projRef_p);
- virtual void processReferenceConfig(const QDomNode &referenceConfig);
- virtual void processNodeAttributes(const QDomElement &element);
-
- /*!
- * Reimplement this to create a new reference configuration.
- * \return A pointer to a newly created reference configuration.
- */
- virtual IConfiguration* createReferenceConfiguration() const = 0;
-
- QList<IConfiguration *> m_referenceConfigurations;
- QString m_referencedProjectIdentifier; // required
- QString m_name; // optional
-};
-
-class ProjectReference2003_Private : public ProjectReference_Private
-{
- friend class ProjectReference2003;
-
-public:
- ~ProjectReference2003_Private();
- ProjectReference_Private::Ptr clone() const;
-
-protected:
- ProjectReference2003_Private();
- ProjectReference2003_Private(const ProjectReference2003_Private &projRef_p);
- ProjectReference2003_Private& operator=(const ProjectReference2003_Private &projRef_p);
- IConfiguration* createReferenceConfiguration() const;
-};
-
-class ProjectReference2005_Private : public ProjectReference2003_Private
-{
- friend class ProjectReference2005;
-
-public:
- ~ProjectReference2005_Private();
- virtual QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
-
- ProjectReference_Private::Ptr clone() const;
-
- QString copyLocal() const;
- void setCopyLocal(const QString &copyLocal);
- bool useInBuild() const;
- void setUseInBuild(bool useInBuild);
- QString relativePathFromSolution() const;
- void setRelativePathFromSolution(const QString &relativePathFromSolution);
-
-protected:
- ProjectReference2005_Private();
- ProjectReference2005_Private(const ProjectReference2005_Private &projRef_p);
- ProjectReference2005_Private& operator=(const ProjectReference2005_Private &projRef_p);
- void processNodeAttributes(const QDomElement &element);
- IConfiguration* createReferenceConfiguration() const;
-
- QString m_copyLocal; // optional
- bool m_useInBuild; // optional
- QString m_relativePathFromSolution; // optional
-};
-
-class ProjectReference2008_Private : public ProjectReference2005_Private
-{
- friend class ProjectReference2008;
-
-public:
- ~ProjectReference2008_Private();
- QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const;
-
- ProjectReference_Private::Ptr clone() const;
-
- QString relativePathToProject() const;
- void setRelativePathToProject(const QString &relativePathToProject);
- bool useDependenciesInBuild() const;
- void setUseDependenciesInBuild(bool useDependenciesInBuild);
- bool copyLocalSatelliteAssemblies() const;
- void setCopyLocalSatelliteAssemblies(bool copyLocalSatelliteAssemblies);
- bool copyLocalDependencies() const;
- void setCopyLocalDependencies(bool copyLocalDependencies);
-
-protected:
- ProjectReference2008_Private();
- ProjectReference2008_Private(const ProjectReference2008_Private &projRef_p);
- ProjectReference2008_Private& operator=(const ProjectReference2008_Private &projRef_p);
- void processNodeAttributes(const QDomElement &element);
- IConfiguration* createReferenceConfiguration() const;
-
- QString m_relativePathToProject; // optional
- bool m_useDependenciesInBuild; //optional default: true
- bool m_copyLocalSatelliteAssemblies; //optional default: true
- bool m_copyLocalDependencies; //optional default: true
-};
-
-} // namespace Internal
-} // namespace VcProjectManager
-
-#endif // VCPROJECTMANAGER_INTERNAL_PROJECTREFERENCE_PRIVATE_H
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/references.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/references.cpp
index 74c0029848..4e8c869776 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/references.cpp
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/references.cpp
@@ -28,6 +28,7 @@
**
****************************************************************************/
#include "references.h"
+#include "generalattributecontainer.h"
namespace VcProjectManager {
namespace Internal {
@@ -48,7 +49,7 @@ References::References(const References &references)
m_assemblyReferences.append(AssemblyReference::Ptr(new AssemblyReference(*ref)));
foreach (const ProjectReference::Ptr &ref, references.m_projectReferences)
- m_projectReferences.append(ref->clone());
+ m_projectReferences.append(ProjectReference::Ptr(new ProjectReference(*ref)));
}
References &References::operator =(const References &references)
@@ -66,7 +67,7 @@ References &References::operator =(const References &references)
m_assemblyReferences.append(AssemblyReference::Ptr(new AssemblyReference(*ref)));
foreach (const ProjectReference::Ptr &ref, references.m_projectReferences)
- m_projectReferences.append(ref->clone());
+ m_projectReferences.append(ProjectReference::Ptr(new ProjectReference(*ref)));
}
return *this;
}
@@ -152,7 +153,7 @@ void References::removeProjectReference(ProjectReference::Ptr projRef)
void References::removeProjectReference(const QString &projRefName)
{
foreach (const ProjectReference::Ptr &projRef, m_projectReferences) {
- if (projRef->name() == projRefName) {
+ if (projRef->attributeContainer()->attributeValue(QLatin1String(VcDocConstants::PROJECT_REFERENCE_NAME)) == projRefName) {
removeProjectReference(projRef);
return;
}
@@ -174,7 +175,7 @@ void References::processReference(const QDomNode &referenceNode)
}
else if (referenceNode.nodeName() == QLatin1String("ProjectReference")) {
- ProjectReference::Ptr reference = ProjectReferenceFactory::instance().create(m_docVersion);
+ ProjectReference::Ptr reference(new ProjectReference);
m_projectReferences.append(reference);
reference->processNode(referenceNode);
}
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h b/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h
index bdfed851fc..777c4e9a42 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h
@@ -42,7 +42,8 @@ enum DocumentVersion
DV_MSVC_2008
};
-const char ACTIVEX_REFERENCE [] = "VC_Doc_Model.ActiveXReference";
+// ActiveX Reference
+const char ACTIVEX_REFERENCE [] = "ActiveXReference";
const char ACTIVEX_REFERENCE_CONTROL_GUID [] = "ControlGUID";
const char ACTIVEX_REFERENCE_CONTROL_VERSION [] = "ControlVersion";
const char ACTIVEX_REFERENCE_WRAPPER_TOOL [] = "WrapperTool";
@@ -54,7 +55,7 @@ const char ACTIVEX_REFERENCE_COPY_LOCAL_SATELITE_ASSEMBLIES [] = "CopyLocalSatel
const char ACTIVEX_REFERENCE_USE_DEPENDENCIES_IN_BUILD [] = "UseDependenciesInBuild";
// Assembly Reference
-const char ASSEMBLY_REFERENCE [] = "VC_Doc_Model.AssemblyReference";
+const char ASSEMBLY_REFERENCE [] = "AssemblyReference";
const char ASSEMBLY_REFERENCE_RELATIVE_PATH [] = "RelativePath";
const char ASSEMBLY_REFERENCE_ASSEMBLY_NAME [] = "AssemblyName";
const char ASSEMBLY_REFERENCE_COPY_LOCAL [] = "CopyLocal";
@@ -65,6 +66,18 @@ const char ASSEMBLY_REFERENCE_USE_DEPENDENCIES_IN_BUILD [] = "UseDependenciesInB
const char ASSEMBLY_REFERENCE_SUB_TYPE [] = "SubType";
const char ASSEMBLY_REFERENCE_MIN_FRAMEWORK_VERSION [] = "MinFrameworkVersion";
+//Project Reference
+const char PROJECT_REFERENCE [] = "ProjectReference";
+const char PROJECT_REFERENCE_NAME [] = "Name";
+const char PROJECT_REFERENCE_REFERENCED_PROJECT_IDENTIFIER [] = "ReferencedProjectIdentifier";
+const char PROJECT_REFERENCE_COPY_LOCAL [] = "CopyLocal";
+const char PROJECT_REFERENCE_USE_IN_BUILD [] = "UseInBuild";
+const char PROJECT_REFERENCE_RELATIVE_PATH_FROM_SOLUTION [] = "RelativePathFromSolution";
+const char PROJECT_REFERENCE_RELATIVE_PATH_TO_PROJECT [] = "RelativePathToProject";
+const char PROJECT_REFERENCE_USE_DEPENDENCIES_IN_BUILD [] = "UseDependenciesInBuild";
+const char PROJECT_REFERENCE_COPY_LOCAL_SATELITE_ASSEMBLIES [] = "CopyLocalSatelliteAssemblies";
+const char PROJECT_REFERENCE_COPY_LOCAL_DEPENDENCIES [] = "CopyLocalDependencies";
+
} // VcDocConstants
} // namespace Internal
} // namespace VcProjectManager
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri b/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri
index 7be30c2e9e..27a127bdfc 100644
--- a/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri
+++ b/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectmodel.pri
@@ -6,7 +6,6 @@ HEADERS += \
vcprojectmodel/references.h \
vcprojectmodel/publishingitem.h \
vcprojectmodel/publishingdata.h \
- vcprojectmodel/projectreference_private.h \
vcprojectmodel/projectreference.h \
vcprojectmodel/platforms.h \
vcprojectmodel/platform.h \
@@ -57,7 +56,6 @@ SOURCES += \
vcprojectmodel/references.cpp \
vcprojectmodel/publishingitem.cpp \
vcprojectmodel/publishingdata.cpp \
- vcprojectmodel/projectreference_private.cpp \
vcprojectmodel/projectreference.cpp \
vcprojectmodel/platforms.cpp \
vcprojectmodel/platform.cpp \