diff options
author | Radovan Zivkovic <pivonroll@gmail.com> | 2013-10-10 20:46:26 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2014-03-11 19:54:59 +0100 |
commit | 77722fe95569aa3a2089d86ab9cedf18e1cf340e (patch) | |
tree | db6a684ab621b5c3f1507571f7f9e8fe62603614 | |
parent | f1d99c010a9c4008f3d4cb7eb2ea8f1a984865cb (diff) | |
download | qt-creator-77722fe95569aa3a2089d86ab9cedf18e1cf340e.tar.gz |
ProjectReference implements IReference interface.
Change-Id: Iee3ec9508ea16f274ad22ae02045142282bd2e23
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
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 ©Local) -{ - 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 ©Local); - 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 ©Local) -{ - 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 ©Local); - 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 \ |