diff options
author | Radovan Zivkovic <pivonroll@gmail.com> | 2013-10-09 00:47:38 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2014-03-11 19:54:59 +0100 |
commit | 4ae3af07b9fd7ffff046d1e71b04afb10de5655f (patch) | |
tree | 7d26a045c7da051ebcd17d93077d425e81abf3da | |
parent | b686a80ea07f39edcaa3a0c77ed50071dbff8e2d (diff) | |
download | qt-creator-4ae3af07b9fd7ffff046d1e71b04afb10de5655f.tar.gz |
Removed ActiveXReference 2003, 2005 and 2008.
Change-Id: Icb7b9089c6603d6e5265984be42ab38fbe521012
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
8 files changed, 105 insertions, 681 deletions
diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.cpp index 06ba94388f..426782f87c 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.cpp @@ -55,7 +55,6 @@ ActiveXReference& ActiveXReference::operator=(const ActiveXReference &ref) *m_attributeContainer = *ref.m_attributeContainer; *m_configurations = *ref.m_configurations; } - return *this; } @@ -146,102 +145,10 @@ void ActiveXReference::processReferenceConfig(const QDomNode &referenceConfig) processReferenceConfig(nextSibling); } -ActiveXReference2003::ActiveXReference2003(const ActiveXReference2003 &ref) - : ActiveXReference(ref) -{ -} - -ActiveXReference2003::~ActiveXReference2003() -{ -} - -ActiveXReference::Ptr ActiveXReference2003::clone() const -{ - return ActiveXReference::Ptr(new ActiveXReference2003(*this)); -} - -ActiveXReference2003::ActiveXReference2003() -{ -} - -IConfiguration* ActiveXReference2003::createReferenceConfiguration() const -{ - return new Configuration(QLatin1String("ReferenceConfiguration")); -} - - -ActiveXReference2005::ActiveXReference2005(const ActiveXReference2005 &ref) - : ActiveXReference2003(ref) -{ -} - -ActiveXReference2005::~ActiveXReference2005() -{ -} - -ActiveXReference::Ptr ActiveXReference2005::clone() const -{ - return ActiveXReference::Ptr(new ActiveXReference2005(*this)); -} - -ActiveXReference2005::ActiveXReference2005() -{ -} - -IConfiguration* ActiveXReference2005::createReferenceConfiguration() const -{ - return new Configuration(QLatin1String("ReferenceConfiguration")); -} - - -ActiveXReference2008::ActiveXReference2008(const ActiveXReference2008 &ref) - : ActiveXReference2005(ref) -{ -} - -ActiveXReference2008::~ActiveXReference2008() -{ -} - -ActiveXReference::Ptr ActiveXReference2008::clone() const -{ - return ActiveXReference::Ptr(new ActiveXReference2005(*this)); -} - -ActiveXReference2008::ActiveXReference2008() -{ -} - -IConfiguration* ActiveXReference2008::createReferenceConfiguration() const +IConfiguration *ActiveXReference::createReferenceConfiguration() const { return new Configuration(QLatin1String("ReferenceConfiguration")); } - -ActiveXReferenceFactory &ActiveXReferenceFactory::instance() -{ - static ActiveXReferenceFactory am; - return am; -} - -ActiveXReference::Ptr ActiveXReferenceFactory::create(VcDocConstants::DocumentVersion version) -{ - ActiveXReference::Ptr ref; - - switch (version) { - case VcDocConstants::DV_MSVC_2003: - ref = ActiveXReference::Ptr(new ActiveXReference2003); - break; - case VcDocConstants::DV_MSVC_2005: - ref = ActiveXReference::Ptr(new ActiveXReference2005); - break; - case VcDocConstants::DV_MSVC_2008: - ref = ActiveXReference::Ptr(new ActiveXReference2008); - break; - } - - return ref; -} - } // namespace Internal } // namespace VcProjectManager diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.h b/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.h index 356f06f4a7..19ee56dd8d 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/activexreference.h @@ -38,6 +38,8 @@ namespace VcProjectManager { namespace Internal { +class GeneralAttributeContainer; + class ActiveXReference : public IReference { friend class ActiveXReferenceFactory; @@ -59,80 +61,15 @@ public: ConfigurationContainer *configurationContainer() const; QString type() const; - /*! - * Implement in order to support creating a clone of a ActiveXReference instance. - * \return A shared pointer to a newly created clone. - */ - virtual ActiveXReference::Ptr clone() const = 0; - -protected: - - virtual void processNodeAttributes(const QDomElement &element); - virtual void processReferenceConfig(const QDomNode &referenceConfig); - - /*! - * Reimplement this to create a new reference configuration. - * \return A shared pointer to a newly created reference configuration. - */ - virtual IConfiguration* createReferenceConfiguration() const = 0; +private: + void processNodeAttributes(const QDomElement &element); + void processReferenceConfig(const QDomNode &referenceConfig); + IConfiguration* createReferenceConfiguration() const; GeneralAttributeContainer *m_attributeContainer; ConfigurationContainer *m_configurations; }; -class ActiveXReference2003 : public ActiveXReference -{ - friend class ActiveXReferenceFactory; - -public: - ActiveXReference2003(const ActiveXReference2003 &ref); - ~ActiveXReference2003(); - - ActiveXReference::Ptr clone() const; - -protected: - ActiveXReference2003(); - void init(); - IConfiguration *createReferenceConfiguration() const; -}; - -class ActiveXReference2005 : public ActiveXReference2003 -{ - friend class ActiveXReferenceFactory; - -public: - ActiveXReference2005(const ActiveXReference2005 &ref); - ~ActiveXReference2005(); - - ActiveXReference::Ptr clone() const; - -protected: - ActiveXReference2005(); - IConfiguration *createReferenceConfiguration() const; -}; - -class ActiveXReference2008 : public ActiveXReference2005 -{ - friend class ActiveXReferenceFactory; - -public: - ActiveXReference2008(const ActiveXReference2008 &ref); - ~ActiveXReference2008(); - - ActiveXReference::Ptr clone() const; - -protected: - ActiveXReference2008(); - IConfiguration* createReferenceConfiguration() const; -}; - -class ActiveXReferenceFactory -{ -public: - static ActiveXReferenceFactory& instance(); - ActiveXReference::Ptr create(VcDocConstants::DocumentVersion version); -}; - } // namespace Internal } // namespace VcProjectManager diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.cpp index f4a96428aa..5fbcfe34df 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.cpp @@ -32,463 +32,132 @@ #include <QVariant> #include "configurationsfactory.h" +#include "configurationcontainer.h" +#include "generalattributecontainer.h" namespace VcProjectManager { namespace Internal { -AssemblyReference::~AssemblyReference() -{ - qDeleteAll(m_referenceConfigurations); -} - -void AssemblyReference::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); - } -} - -void AssemblyReference::processNodeAttributes(const QDomElement &element) -{ - QDomNamedNodeMap namedNodeMap = element.attributes(); - - if (namedNodeMap.size() == 1) { - QDomNode domNode = namedNodeMap.item(0); - - if (domNode.nodeType() == QDomNode::AttributeNode) { - QDomAttr domElement = domNode.toAttr(); - - if (domElement.name() == QLatin1String("RelativePath")) - m_relativePath = domElement.value(); - } - } -} - -VcNodeWidget *AssemblyReference::createSettingsWidget() -{ - return 0; -} - -QDomNode AssemblyReference::toXMLDomNode(QDomDocument &domXMLDocument) const -{ - QDomElement assemblyRefNode = domXMLDocument.createElement(QLatin1String("AssemblyReference")); - - assemblyRefNode.setAttribute(QLatin1String("RelativePath"), m_relativePath); - - foreach (const IConfiguration *refConfig, m_referenceConfigurations) - assemblyRefNode.appendChild(refConfig->toXMLDomNode(domXMLDocument)); - - return assemblyRefNode; -} - -QString AssemblyReference::relativePath() const -{ - return m_relativePath; -} - -void AssemblyReference::setRelativePath(const QString &relativePath) -{ - m_relativePath = relativePath; -} - -void AssemblyReference::addReferenceConfiguration(IConfiguration *refConfig) -{ - if (m_referenceConfigurations.contains(refConfig)) - return; - - foreach (const IConfiguration *refConf, m_referenceConfigurations) { - if (refConfig->fullName() == refConf->fullName()) - return; - } - - m_referenceConfigurations.append(refConfig); -} - -void AssemblyReference::removeReferenceConfiguration(IConfiguration *refConfig) -{ - m_referenceConfigurations.removeAll(refConfig); -} - -void AssemblyReference::removeReferenceConfiguration(const QString &refConfName) -{ - foreach (IConfiguration *refConfig, m_referenceConfigurations) { - if (refConfig->fullName() == refConfName) { - m_referenceConfigurations.removeOne(refConfig); - delete refConfig; - return; - } - } -} - -IConfiguration* AssemblyReference::referenceConfiguration(const QString &refConfigName) const -{ - foreach (IConfiguration *refConfig, m_referenceConfigurations) { - if (refConfig->fullName() == refConfigName) - return refConfig; - } - return 0; -} - AssemblyReference::AssemblyReference() { + m_attributeContainer = new GeneralAttributeContainer; + m_configurations = new ConfigurationContainer; } AssemblyReference::AssemblyReference(const AssemblyReference &asmRef) { - m_relativePath = asmRef.m_relativePath; + m_attributeContainer = new GeneralAttributeContainer; + m_configurations = new ConfigurationContainer; - foreach (const IConfiguration *refConfig, asmRef.m_referenceConfigurations) - m_referenceConfigurations.append(refConfig->clone()); -} + *m_attributeContainer = *asmRef.m_attributeContainer; + *m_configurations = *asmRef.m_configurations; -AssemblyReference &AssemblyReference::operator =(const AssemblyReference &asmRef) -{ - if (this != &asmRef) { - m_relativePath = asmRef.m_relativePath; - - foreach (const IConfiguration *refConfig, asmRef.m_referenceConfigurations) - m_referenceConfigurations.append(refConfig->clone()); + for (int i = 0; i < asmRef.m_configurations->configurationCount(); ++i) { + IConfiguration *config = asmRef.m_configurations->configuration(i); + if (config) + m_configurations->addConfiguration(config->clone()); } - - return *this; -} - -void AssemblyReference::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); -} - - -AssemblyReference2003::AssemblyReference2003(const AssemblyReference2003 &ref) - : AssemblyReference(ref) -{ } -AssemblyReference2003 &AssemblyReference2003::operator =(const AssemblyReference2003 &ref) -{ - AssemblyReference::operator =(ref); - return *this; -} - -AssemblyReference2003::~AssemblyReference2003() -{ -} - -AssemblyReference::Ptr AssemblyReference2003::clone() const -{ - return AssemblyReference::Ptr(new AssemblyReference2003(*this)); -} - -AssemblyReference2003::AssemblyReference2003() -{ -} - -IConfiguration* AssemblyReference2003::createReferenceConfiguration() const -{ - return new Configuration(QLatin1String("ReferenceConfiguration")); -} - - -AssemblyReference2005::AssemblyReference2005(const AssemblyReference2005 &ref) - : AssemblyReference2003(ref) +AssemblyReference &AssemblyReference::operator =(const AssemblyReference &asmRef) { - m_assemblyName = ref.m_assemblyName; - m_copyLocal = ref.m_copyLocal; - m_useInBuild = ref.m_useInBuild; -} + if (this != &asmRef) { + *m_attributeContainer = *asmRef.m_attributeContainer; + *m_configurations = *asmRef.m_configurations; -AssemblyReference2005 &AssemblyReference2005::operator =(const AssemblyReference2005 &ref) -{ - if (this != &ref) { - AssemblyReference2003::operator =(ref); - m_assemblyName = ref.m_assemblyName; - m_copyLocal = ref.m_copyLocal; - m_useInBuild = ref.m_useInBuild; + for (int i = 0; i < asmRef.m_configurations->configurationCount(); ++i) { + IConfiguration *config = asmRef.m_configurations->configuration(i); + if (config) + m_configurations->addConfiguration(config->clone()); + } } return *this; } -AssemblyReference2005::~AssemblyReference2005() -{ -} - -QDomNode AssemblyReference2005::toXMLDomNode(QDomDocument &domXMLDocument) const -{ - QDomElement assemblyRefNode = AssemblyReference2003::toXMLDomNode(domXMLDocument).toElement(); - - assemblyRefNode.setAttribute(QLatin1String("AssemblyName"), m_assemblyName); - assemblyRefNode.setAttribute(QLatin1String("CopyLocal"), QVariant(m_copyLocal).toString()); - assemblyRefNode.setAttribute(QLatin1String("UseInBuild"), QVariant(m_useInBuild).toString()); - - return assemblyRefNode; -} - -AssemblyReference::Ptr AssemblyReference2005::clone() const -{ - return AssemblyReference::Ptr(new AssemblyReference2005(*this)); -} - -QString AssemblyReference2005::assemblyName() const -{ - return m_assemblyName; -} - -void AssemblyReference2005::setAssemblyName(const QString &assemblyName) -{ - m_assemblyName = assemblyName; -} - -bool AssemblyReference2005::copyLocal() const -{ - return m_copyLocal; -} - -void AssemblyReference2005::setCopyLocal(bool copyLocal) -{ - m_copyLocal = copyLocal; -} - -bool AssemblyReference2005::useInBuild() const -{ - return m_useInBuild; -} - -void AssemblyReference2005::setUseInBuild(bool useInBuild) -{ - m_useInBuild = useInBuild; -} - -AssemblyReference2005::AssemblyReference2005() -{ -} - -IConfiguration* AssemblyReference2005::createReferenceConfiguration() const +AssemblyReference::~AssemblyReference() { - return new Configuration(QLatin1String("ReferenceConfiguration")); + delete m_attributeContainer; + delete m_configurations; } -void AssemblyReference2005::processNodeAttributes(const QDomElement &element) +void AssemblyReference::processNode(const QDomNode &node) { - 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("RelativePath")) - m_relativePath = domElement.value(); - - - else if (domElement.name() == QLatin1String("AssemblyName")) - m_assemblyName = domElement.value(); + if (node.isNull()) + return; - else if (domElement.name() == QLatin1String("CopyLocal")) { - if (domElement.value() == QLatin1String("false")) - m_copyLocal = false; - else - m_copyLocal = true; - } + if (node.nodeType() == QDomNode::ElementNode) + processNodeAttributes(node.toElement()); - else if (domElement.name() == QLatin1String("UseInBuild")) { - if (domElement.value() == QLatin1String("false")) - m_useInBuild = false; - else - m_useInBuild = true; - } - } + if (node.hasChildNodes()) { + QDomNode firstChild = node.firstChild(); + if (!firstChild.isNull()) + processReferenceConfig(firstChild); } } - -AssemblyReference2008::AssemblyReference2008(const AssemblyReference2008 &ref) - : AssemblyReference2005(ref) -{ - m_copyLocalDependencies = ref.m_copyLocalDependencies; - m_copyLocalSatelliteAssemblies = ref.m_copyLocalSatelliteAssemblies; - m_useDependenciesInBuild = ref.m_useDependenciesInBuild; - m_subType = ref.m_subType; - m_minFrameworkVersion = ref.m_minFrameworkVersion; -} - -AssemblyReference2008 &AssemblyReference2008::operator =(const AssemblyReference2008 &ref) -{ - if (this != &ref) { - AssemblyReference2005::operator =(ref); - m_copyLocalDependencies = ref.m_copyLocalDependencies; - m_copyLocalSatelliteAssemblies = ref.m_copyLocalSatelliteAssemblies; - m_useDependenciesInBuild = ref.m_useDependenciesInBuild; - m_subType = ref.m_subType; - m_minFrameworkVersion = ref.m_minFrameworkVersion; - } - - return *this; -} - -AssemblyReference2008::~AssemblyReference2008() +VcNodeWidget *AssemblyReference::createSettingsWidget() { + return 0; } -QDomNode AssemblyReference2008::toXMLDomNode(QDomDocument &domXMLDocument) const +QDomNode AssemblyReference::toXMLDomNode(QDomDocument &domXMLDocument) const { - QDomElement assemblyRefNode = AssemblyReference2005::toXMLDomNode(domXMLDocument).toElement(); - - assemblyRefNode.setAttribute(QLatin1String("CopyLocalDependencies"), QVariant(m_copyLocalDependencies).toString()); - assemblyRefNode.setAttribute(QLatin1String("CopyLocalSatelliteAssemblies"), QVariant(m_copyLocalSatelliteAssemblies).toString()); - assemblyRefNode.setAttribute(QLatin1String("UseDependenciesInBuild"), QVariant(m_useDependenciesInBuild).toString()); - assemblyRefNode.setAttribute(QLatin1String("SubType"), m_subType); - assemblyRefNode.setAttribute(QLatin1String("MinFrameworkVersion"), m_minFrameworkVersion); - + QDomElement assemblyRefNode = domXMLDocument.createElement(QLatin1String("AssemblyReference")); + m_configurations->appendToXMLNode(assemblyRefNode, domXMLDocument); + m_attributeContainer->appendToXMLNode(assemblyRefNode); return assemblyRefNode; } -AssemblyReference::Ptr AssemblyReference2008::clone() const -{ - return AssemblyReference::Ptr(new AssemblyReference2008(*this)); -} - -bool AssemblyReference2008::copyLocalDependencies() const -{ - return m_copyLocalDependencies; -} - -void AssemblyReference2008::setCopyLocalDependencies(bool copyLocalDependencies) -{ - m_copyLocalDependencies = copyLocalDependencies; -} - -bool AssemblyReference2008::copyLocalSatelliteAssemblies() const -{ - return m_copyLocalSatelliteAssemblies; -} - -void AssemblyReference2008::setCopyLocalSatelliteAssemblies(bool copyLocalSatelliteAssemblies) -{ - m_copyLocalSatelliteAssemblies = copyLocalSatelliteAssemblies; -} - -bool AssemblyReference2008::useDependenciesInBuild() const -{ - return m_useDependenciesInBuild; -} - -void AssemblyReference2008::setUseDependenciesInBuild(bool useDependenciesInBuild) -{ - m_useDependenciesInBuild = useDependenciesInBuild; -} - -QString AssemblyReference2008::subType() const +IAttributeContainer *AssemblyReference::attributeContainer() const { - return m_subType; + return m_attributeContainer; } -void AssemblyReference2008::setSubType(const QString &subType) +ConfigurationContainer *AssemblyReference::configurationContainer() const { - m_subType = subType; + return m_configurations; } -QString AssemblyReference2008::minFrameworkVersion() const +QString AssemblyReference::type() const { - return m_minFrameworkVersion; + return QLatin1String(VcDocConstants::ASSEMBLY_REFERENCE); } -void AssemblyReference2008::setMinFrameworkVersion(const QString &minFrameworkVersion) -{ - m_minFrameworkVersion = minFrameworkVersion; -} - -AssemblyReference2008::AssemblyReference2008() -{ -} - -IConfiguration* AssemblyReference2008::createReferenceConfiguration() const -{ - return new Configuration(QLatin1String("ReferenceConfiguration")); -} - -void AssemblyReference2008::processNodeAttributes(const QDomElement &element) +void AssemblyReference::processNodeAttributes(const QDomElement &element) { - AssemblyReference2005::processNodeAttributes(element); - QDomNamedNodeMap namedNodeMap = element.attributes(); - for (int i = 0; i < namedNodeMap.size(); ++i) { - QDomNode domNode = namedNodeMap.item(i); + if (namedNodeMap.size() == 1) { + QDomNode domNode = namedNodeMap.item(0); 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("SubType")) - m_subType = domElement.value(); - - else if (domElement.name() == QLatin1String("MinFrameworkVersion")) - m_minFrameworkVersion = domElement.value(); + if (domElement.name() == QLatin1String(VcDocConstants::ASSEMBLY_REFERENCE_ASSEMBLY_NAME) || + domElement.name() == QLatin1String(VcDocConstants::ASSEMBLY_REFERENCE_COPY_LOCAL) || + domElement.name() == QLatin1String(VcDocConstants::ASSEMBLY_REFERENCE_COPY_LOCAL_DEPENDENCIES) || + domElement.name() == QLatin1String(VcDocConstants::ASSEMBLY_REFERENCE_COPY_LOCAL_SATELITE_ASSEMBLIES) || + domElement.name() == QLatin1String(VcDocConstants::ASSEMBLY_REFERENCE_MIN_FRAMEWORK_VERSION) || + domElement.name() == QLatin1String(VcDocConstants::ASSEMBLY_REFERENCE_RELATIVE_PATH) || + domElement.name() == QLatin1String(VcDocConstants::ASSEMBLY_REFERENCE_SUB_TYPE) || + domElement.name() == QLatin1String(VcDocConstants::ASSEMBLY_REFERENCE_USE_DEPENDENCIES_IN_BUILD) || + domElement.name() == QLatin1String(VcDocConstants::ASSEMBLY_REFERENCE_USE_IN_BUILD)) + m_attributeContainer->setAttribute(domElement.name(), domElement.value()); } } } - -AssemblyReferenceFactory &AssemblyReferenceFactory::instance() -{ - static AssemblyReferenceFactory as; - return as; -} - -AssemblyReference::Ptr AssemblyReferenceFactory::create(VcDocConstants::DocumentVersion version) +void AssemblyReference::processReferenceConfig(const QDomNode &referenceConfig) { - AssemblyReference::Ptr ref; - - switch (version) { - case VcDocConstants::DV_MSVC_2003: - ref = AssemblyReference::Ptr(new AssemblyReference2003); - break; - case VcDocConstants::DV_MSVC_2005: - ref = AssemblyReference::Ptr(new AssemblyReference2005); - break; - case VcDocConstants::DV_MSVC_2008: - ref = AssemblyReference::Ptr(new AssemblyReference2008); - break; - } + IConfiguration *referenceConfiguration = new Configuration(QLatin1String("ReferenceConfiguration")); + referenceConfiguration->processNode(referenceConfig); + m_configurations->addConfiguration(referenceConfiguration); - return ref; + // process next sibling + QDomNode nextSibling = referenceConfig.nextSibling(); + if (!nextSibling.isNull()) + processReferenceConfig(nextSibling); } } // namespace Internal diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.h b/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.h index 234bce67e6..0fc4c4fb04 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/assemblyreference.h @@ -30,7 +30,7 @@ #ifndef VCPROJECTMANAGER_INTERNAL_ASSEMBLYREFERENCE_H #define VCPROJECTMANAGER_INTERNAL_ASSEMBLYREFERENCE_H -#include "ivcprojectnodemodel.h" +#include "../interfaces/ireference.h" #include "configuration.h" #include "vcprojectdocument_constants.h" @@ -38,133 +38,32 @@ namespace VcProjectManager { namespace Internal { -class AssemblyReference : public IVcProjectXMLNode -{ - friend class AssemblyReferenceFactory; +class GeneralAttributeContainer; +class AssemblyReference : public IReference +{ public: typedef QSharedPointer<AssemblyReference> Ptr; + AssemblyReference(); + AssemblyReference(const AssemblyReference &asmRef); + AssemblyReference& operator=(const AssemblyReference &asmRef); + ~AssemblyReference(); void processNode(const QDomNode &node); VcNodeWidget* createSettingsWidget(); QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const; - /*! - * Implement in order to support creating a clone of a assembly reference instance. - * \return A shared pointer to newly created assembly reference instance. - */ - virtual AssemblyReference::Ptr clone() const = 0; - - QString relativePath() const; - void setRelativePath(const QString &relativePath); - void addReferenceConfiguration(IConfiguration *refConfig); - void removeReferenceConfiguration(IConfiguration *refConfig); - void removeReferenceConfiguration(const QString &refConfName); - IConfiguration *referenceConfiguration(const QString &refConfigName) const; + IAttributeContainer *attributeContainer() const; + ConfigurationContainer *configurationContainer() const; + QString type() const; protected: - AssemblyReference(); - AssemblyReference(const AssemblyReference &asmRef); - AssemblyReference& operator=(const AssemblyReference &asmRef); virtual void processNodeAttributes(const QDomElement &element); void processReferenceConfig(const QDomNode &referenceConfig); - /*! - * Reimplement this to create a new reference configuration. - * \return A shared pointer to a newly created reference configuration. - */ - virtual IConfiguration* createReferenceConfiguration() const = 0; - - QList<IConfiguration*> m_referenceConfigurations; - QString m_relativePath; // required -}; - -class AssemblyReference2003 : public AssemblyReference -{ - friend class AssemblyReferenceFactory; - -public: - AssemblyReference2003(const AssemblyReference2003 &ref); - AssemblyReference2003& operator=(const AssemblyReference2003 &ref); - ~AssemblyReference2003(); - - AssemblyReference::Ptr clone() const; - -protected: - AssemblyReference2003(); - IConfiguration *createReferenceConfiguration() const; -}; - -class AssemblyReference2005 : public AssemblyReference2003 -{ - friend class AssemblyReferenceFactory; - -public: - AssemblyReference2005(const AssemblyReference2005 &ref); - AssemblyReference2005& operator=(const AssemblyReference2005 &ref); - ~AssemblyReference2005(); - QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const; - - AssemblyReference::Ptr clone() const; - - QString assemblyName() const; - void setAssemblyName(const QString &assemblyName); - bool copyLocal() const; - void setCopyLocal(bool copyLocal); - bool useInBuild() const; - void setUseInBuild(bool useInBuild); - -protected: - AssemblyReference2005(); - IConfiguration *createReferenceConfiguration() const; - void processNodeAttributes(const QDomElement &element); - - QString m_assemblyName; // optional - bool m_copyLocal; // optional - bool m_useInBuild; // optional default: true -}; - -class AssemblyReference2008 : public AssemblyReference2005 -{ - friend class AssemblyReferenceFactory; - -public: - AssemblyReference2008(const AssemblyReference2008 &ref); - AssemblyReference2008& operator=(const AssemblyReference2008 &ref); - ~AssemblyReference2008(); - QDomNode toXMLDomNode(QDomDocument &domXMLDocument) const; - - AssemblyReference::Ptr clone() const; - - bool copyLocalDependencies() const; - void setCopyLocalDependencies(bool copyLocalDependencies); - bool copyLocalSatelliteAssemblies() const; - void setCopyLocalSatelliteAssemblies(bool copyLocalSatelliteAssemblies); - bool useDependenciesInBuild() const; - void setUseDependenciesInBuild(bool useDependenciesInBuild); - QString subType() const; - void setSubType(const QString &subType); - QString minFrameworkVersion() const; - void setMinFrameworkVersion(const QString &minFrameworkVersion); - -protected: - AssemblyReference2008(); - IConfiguration *createReferenceConfiguration() const; - void processNodeAttributes(const QDomElement &element); - - bool m_copyLocalDependencies; //optional default: true - bool m_copyLocalSatelliteAssemblies; //optional default: true - bool m_useDependenciesInBuild; //optional default: true - QString m_subType; //optional - QString m_minFrameworkVersion; -}; - -class AssemblyReferenceFactory -{ -public: - static AssemblyReferenceFactory& instance(); - AssemblyReference::Ptr create(VcDocConstants::DocumentVersion version); + GeneralAttributeContainer *m_attributeContainer; + ConfigurationContainer *m_configurations; }; } // namespace Internal diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/configuration.h b/src/plugins/vcprojectmanager/vcprojectmodel/configuration.h index f1f587e69f..db853a3d68 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/configuration.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/configuration.h @@ -42,6 +42,7 @@ namespace Internal { class ConfigurationTool; class GeneralAttributeContainer; class Tools; +class GeneralAttributeContainer; class Configuration : public IConfiguration { diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/debuggertool.h b/src/plugins/vcprojectmanager/vcprojectmodel/debuggertool.h index b84451a670..3217fedd1d 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/debuggertool.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/debuggertool.h @@ -37,7 +37,6 @@ namespace VcProjectManager { namespace Internal { -class IAttributeContainer; class GeneralAttributeContainer; class DebuggerTool : public IDebuggerTool diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/references.cpp b/src/plugins/vcprojectmanager/vcprojectmodel/references.cpp index 3f462d7261..74c0029848 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/references.cpp +++ b/src/plugins/vcprojectmanager/vcprojectmodel/references.cpp @@ -42,10 +42,10 @@ References::References(const References &references) m_docVersion = references.m_docVersion; foreach (const ActiveXReference::Ptr &ref, references.m_activeXReferences) - m_activeXReferences.append(ref->clone()); + m_activeXReferences.append(ActiveXReference::Ptr(new ActiveXReference(*ref))); foreach (const AssemblyReference::Ptr &ref, references.m_assemblyReferences) - m_assemblyReferences.append(ref->clone()); + m_assemblyReferences.append(AssemblyReference::Ptr(new AssemblyReference(*ref))); foreach (const ProjectReference::Ptr &ref, references.m_projectReferences) m_projectReferences.append(ref->clone()); @@ -60,10 +60,10 @@ References &References::operator =(const References &references) m_projectReferences.clear(); foreach (const ActiveXReference::Ptr &ref, references.m_activeXReferences) - m_activeXReferences.append(ref->clone()); + m_activeXReferences.append(ActiveXReference::Ptr(new ActiveXReference(*ref))); foreach (const AssemblyReference::Ptr &ref, references.m_assemblyReferences) - m_assemblyReferences.append(ref->clone()); + m_assemblyReferences.append(AssemblyReference::Ptr(new AssemblyReference(*ref))); foreach (const ProjectReference::Ptr &ref, references.m_projectReferences) m_projectReferences.append(ref->clone()); @@ -162,13 +162,13 @@ void References::removeProjectReference(const QString &projRefName) void References::processReference(const QDomNode &referenceNode) { if (referenceNode.nodeName() == QLatin1String("AssemblyReference")) { - AssemblyReference::Ptr reference = AssemblyReferenceFactory::instance().create(m_docVersion); + AssemblyReference::Ptr reference(new AssemblyReference); m_assemblyReferences.append(reference); reference->processNode(referenceNode); } else if (referenceNode.nodeName() == QLatin1String("ActiveXReference")) { - ActiveXReference::Ptr reference = ActiveXReferenceFactory::instance().create(m_docVersion); + ActiveXReference::Ptr reference(new ActiveXReference); m_activeXReferences.append(reference); reference->processNode(referenceNode); } diff --git a/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h b/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h index 3f715644fc..bdfed851fc 100644 --- a/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h +++ b/src/plugins/vcprojectmanager/vcprojectmodel/vcprojectdocument_constants.h @@ -53,6 +53,18 @@ const char ACTIVEX_REFERENCE_COPY_LOCAL_DEPENDENCIES [] = "CopyLocalDependencies const char ACTIVEX_REFERENCE_COPY_LOCAL_SATELITE_ASSEMBLIES [] = "CopyLocalSatelliteAssemblies"; const char ACTIVEX_REFERENCE_USE_DEPENDENCIES_IN_BUILD [] = "UseDependenciesInBuild"; +// Assembly Reference +const char ASSEMBLY_REFERENCE [] = "VC_Doc_Model.AssemblyReference"; +const char ASSEMBLY_REFERENCE_RELATIVE_PATH [] = "RelativePath"; +const char ASSEMBLY_REFERENCE_ASSEMBLY_NAME [] = "AssemblyName"; +const char ASSEMBLY_REFERENCE_COPY_LOCAL [] = "CopyLocal"; +const char ASSEMBLY_REFERENCE_USE_IN_BUILD [] = "UseInBuild"; +const char ASSEMBLY_REFERENCE_COPY_LOCAL_DEPENDENCIES [] = "CopyLocalDependencies"; +const char ASSEMBLY_REFERENCE_COPY_LOCAL_SATELITE_ASSEMBLIES [] = "CopyLocalSatelliteAssemblies"; +const char ASSEMBLY_REFERENCE_USE_DEPENDENCIES_IN_BUILD [] = "UseDependenciesInBuild"; +const char ASSEMBLY_REFERENCE_SUB_TYPE [] = "SubType"; +const char ASSEMBLY_REFERENCE_MIN_FRAMEWORK_VERSION [] = "MinFrameworkVersion"; + } // VcDocConstants } // namespace Internal } // namespace VcProjectManager |