summaryrefslogtreecommitdiffstats
path: root/umbrello/umbrello/classifierlistitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'umbrello/umbrello/classifierlistitem.cpp')
-rw-r--r--umbrello/umbrello/classifierlistitem.cpp98
1 files changed, 98 insertions, 0 deletions
diff --git a/umbrello/umbrello/classifierlistitem.cpp b/umbrello/umbrello/classifierlistitem.cpp
new file mode 100644
index 00000000..888f3da7
--- /dev/null
+++ b/umbrello/umbrello/classifierlistitem.cpp
@@ -0,0 +1,98 @@
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * copyright (C) 2003-2007 *
+ * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
+ ***************************************************************************/
+
+// own header
+#include "classifierlistitem.h"
+
+// qt/kde includes
+#include <kdebug.h>
+#include <klocale.h>
+
+// local includes
+#include "classifier.h"
+#include "uml.h"
+#include "umldoc.h"
+#include "model_utils.h"
+#include "object_factory.h"
+
+UMLClassifierListItem::UMLClassifierListItem(const UMLObject *parent,
+ const QString& name, Uml::IDType id)
+ : UMLObject(parent, name, id) {
+ UMLObject *parentObj = const_cast<UMLObject*>(parent);
+ UMLClassifier *pc = dynamic_cast<UMLClassifier*>(parentObj);
+ if (pc)
+ UMLObject::setUMLPackage(pc);
+}
+
+UMLClassifierListItem::UMLClassifierListItem(const UMLObject *parent)
+ : UMLObject(parent) {
+ UMLObject *parentObj = const_cast<UMLObject*>(parent);
+ UMLClassifier *pc = dynamic_cast<UMLClassifier*>(parentObj);
+ if (pc)
+ UMLObject::setUMLPackage(pc);
+}
+
+UMLClassifierListItem::~UMLClassifierListItem() {
+}
+
+void UMLClassifierListItem::copyInto(UMLClassifierListItem *rhs) const
+{
+ // Call the parent.
+ UMLObject::copyInto(rhs);
+}
+
+QString UMLClassifierListItem::toString(Uml::Signature_Type /*sig*/) {
+ return getName();
+}
+
+UMLClassifier * UMLClassifierListItem::getType() const{
+ return static_cast<UMLClassifier*>(m_pSecondary);
+}
+
+QString UMLClassifierListItem::getTypeName() const{
+ if (m_pSecondary == NULL)
+ return m_SecondaryId;
+ const UMLPackage *typePkg = m_pSecondary->getUMLPackage();
+ if (typePkg != NULL && typePkg != m_pUMLPackage)
+ return m_pSecondary->getFullyQualifiedName();
+ return m_pSecondary->getName();
+}
+
+void UMLClassifierListItem::setType(UMLObject *type) {
+ if (m_pSecondary != type) {
+ m_pSecondary = type;
+ UMLObject::emitModified();
+ }
+}
+
+void UMLClassifierListItem::setTypeName(const QString &type) {
+ if (type.isEmpty() || type == "void") {
+ m_pSecondary = NULL;
+ m_SecondaryId = QString();
+ return;
+ }
+ UMLDoc *pDoc = UMLApp::app()->getDocument();
+ m_pSecondary = pDoc->findUMLObject(type);
+ if (m_pSecondary == NULL) {
+ // Make data type for easily identified cases
+ if (Model_Utils::isCommonDataType(type) || type.contains('*')) {
+ m_pSecondary = Object_Factory::createUMLObject(Uml::ot_Datatype, type);
+ kDebug() << "UMLClassifierListItem::setTypeName: "
+ << "created datatype for " << type << endl;
+ } else {
+ m_SecondaryId = type;
+ }
+ }
+ UMLObject::emitModified();
+}
+
+
+#include "classifierlistitem.moc"