summaryrefslogtreecommitdiffstats
path: root/src/uml/qumlpackagemerge.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/uml/qumlpackagemerge.cpp')
-rw-r--r--src/uml/qumlpackagemerge.cpp156
1 files changed, 52 insertions, 104 deletions
diff --git a/src/uml/qumlpackagemerge.cpp b/src/uml/qumlpackagemerge.cpp
index bb596e56..ef7bfbe1 100644
--- a/src/uml/qumlpackagemerge.cpp
+++ b/src/uml/qumlpackagemerge.cpp
@@ -40,145 +40,93 @@
****************************************************************************/
#include "qumlpackagemerge.h"
-#include <QtUml/QUmlComment>
-#include <QtUml/QUmlElement>
-#include <QtUml/QUmlPackage>
+#include "private/qumlpackagemergeobject_p.h"
-QT_BEGIN_NAMESPACE
+#include <QtUml/QUmlPackage>
/*!
- \class UmlPackageMerge
+ \class QUmlPackageMerge
\inmodule QtUml
\brief A package merge defines how the contents of one package are extended by the contents of another package.
*/
-
-QUmlPackageMerge::QUmlPackageMerge(QObject *parent) :
- QObject(parent)
+QUmlPackageMerge::QUmlPackageMerge(bool createQObject) :
+ _mergedPackage(0),
+ _receivingPackage(0)
{
+ if (createQObject)
+ _qObject = new QUmlPackageMergeObject(this);
}
-// OWNED ATTRIBUTES [Element]
-
-/*!
- The Comments owned by this element.
- */
-const QSet<QUmlComment *> QUmlPackageMerge::ownedComment() const
+QUmlPackageMerge::~QUmlPackageMerge()
{
- return *(reinterpret_cast<const QSet<QUmlComment *> *>(&_ownedComment));
+ if (!deletingFromQObject) {
+ _qObject->setProperty("deletingFromModelingObject", true);
+ delete _qObject;
+ }
}
-/*!
- The Elements owned by this element.
- */
-const QSet<QUmlElement *> QUmlPackageMerge::ownedElement() const
-{
- return *(reinterpret_cast<const QSet<QUmlElement *> *>(&_ownedElement));
-}
+// OWNED ATTRIBUTES
/*!
- The Element that owns this element.
+ References the Package that is to be merged with the receiving package of the PackageMerge.
*/
-QUmlElement *QUmlPackageMerge::owner() const
+QUmlPackage *
+QUmlPackageMerge::mergedPackage() const
{
- return reinterpret_cast<QUmlElement *>(_owner);
-}
-
-// OWNED ATTRIBUTES [Relationship]
+ // This is a read-write association end
-/*!
- Specifies the elements related by the Relationship.
- */
-const QSet<QUmlElement *> QUmlPackageMerge::relatedElement() const
-{
- return *(reinterpret_cast<const QSet<QUmlElement *> *>(&_relatedElement));
+ return _mergedPackage;
}
-// OWNED ATTRIBUTES [DirectedRelationship]
-
-/*!
- Specifies the sources of the DirectedRelationship.
- */
-const QSet<QUmlElement *> QUmlPackageMerge::source() const
+void QUmlPackageMerge::setMergedPackage(QUmlPackage *mergedPackage)
{
- return *(reinterpret_cast<const QSet<QUmlElement *> *>(&_source));
-}
+ // This is a read-write association end
-/*!
- Specifies the targets of the DirectedRelationship.
- */
-const QSet<QUmlElement *> QUmlPackageMerge::target() const
-{
- return *(reinterpret_cast<const QSet<QUmlElement *> *>(&_target));
-}
+ if (_mergedPackage != mergedPackage) {
+ // Adjust subsetted properties
+ removeTarget(_mergedPackage);
-// OWNED ATTRIBUTES [PackageMerge]
+ _mergedPackage = mergedPackage;
+ if (mergedPackage->asQObject() && this->asQObject())
+ QObject::connect(mergedPackage->asQObject(), SIGNAL(destroyed()), this->asQObject(), SLOT(setMergedPackage()));
-/*!
- References the Package that is to be merged with the receiving package of the PackageMerge.
- */
-QUmlPackage *QUmlPackageMerge::mergedPackage() const
-{
- return reinterpret_cast<QUmlPackage *>(_mergedPackage);
+ // Adjust subsetted properties
+ if (mergedPackage) {
+ addTarget(mergedPackage);
+ }
+ }
}
/*!
References the Package that is being extended with the contents of the merged package of the PackageMerge.
*/
-QUmlPackage *QUmlPackageMerge::receivingPackage() const
-{
- return reinterpret_cast<QUmlPackage *>(_receivingPackage);
-}
-
-// OPERATIONS [Element]
-
-/*!
- The query allOwnedElements() gives all of the direct and indirect owned elements of an element.
- */
-QSet<QUmlElement *> QUmlPackageMerge::allOwnedElements() const
+QUmlPackage *
+QUmlPackageMerge::receivingPackage() const
{
- QSet<QUmlElement *> r;
- foreach (UmlElement *element, UmlElement::allOwnedElements())
- r.insert(reinterpret_cast<QUmlElement *>(element));
- return r;
-}
+ // This is a read-write association end
-/*!
- The query mustBeOwned() indicates whether elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation.
- */
-bool QUmlPackageMerge::mustBeOwned() const
-{
- return UmlElement::mustBeOwned();
-}
-
-// SLOTS FOR OWNED ATTRIBUTES [Element]
-
-void QUmlPackageMerge::addOwnedComment(UmlComment *ownedComment)
-{
- UmlElement::addOwnedComment(ownedComment);
-}
-
-void QUmlPackageMerge::removeOwnedComment(UmlComment *ownedComment)
-{
- UmlElement::removeOwnedComment(ownedComment);
-}
-
-// SLOTS FOR OWNED ATTRIBUTES [Relationship]
-
-// SLOTS FOR OWNED ATTRIBUTES [DirectedRelationship]
-
-// SLOTS FOR OWNED ATTRIBUTES [PackageMerge]
-
-void QUmlPackageMerge::setMergedPackage(QUmlPackage *mergedPackage)
-{
- UmlPackageMerge::setMergedPackage(mergedPackage);
+ return _receivingPackage;
}
void QUmlPackageMerge::setReceivingPackage(QUmlPackage *receivingPackage)
{
- UmlPackageMerge::setReceivingPackage(receivingPackage);
+ // This is a read-write association end
+
+ if (_receivingPackage != receivingPackage) {
+ // Adjust subsetted properties
+ removeSource(_receivingPackage);
+
+ _receivingPackage = receivingPackage;
+ if (receivingPackage->asQObject() && this->asQObject())
+ QObject::connect(receivingPackage->asQObject(), SIGNAL(destroyed()), this->asQObject(), SLOT(setReceivingPackage()));
+
+ // Adjust subsetted properties
+ setOwner(receivingPackage);
+ if (receivingPackage) {
+ addSource(receivingPackage);
+ }
+ }
}
-QT_END_NAMESPACE
-