/*************************************************************************** * * * 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 * ***************************************************************************/ // own header #include "classifierlistitem.h" // qt/kde includes #include #include // 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 TQString& name, Uml::IDType id) : UMLObject(parent, name, id) { UMLObject *parentObj = const_cast(parent); UMLClassifier *pc = dynamic_cast(parentObj); if (pc) UMLObject::setUMLPackage(pc); } UMLClassifierListItem::UMLClassifierListItem(const UMLObject *parent) : UMLObject(parent) { UMLObject *parentObj = const_cast(parent); UMLClassifier *pc = dynamic_cast(parentObj); if (pc) UMLObject::setUMLPackage(pc); } UMLClassifierListItem::~UMLClassifierListItem() { } void UMLClassifierListItem::copyInto(UMLClassifierListItem *rhs) const { // Call the parent. UMLObject::copyInto(rhs); } TQString UMLClassifierListItem::toString(Uml::Signature_Type /*sig*/) { return getName(); } UMLClassifier * UMLClassifierListItem::getType() const{ return static_cast(m_pSecondary); } TQString 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 TQString &type) { if (type.isEmpty() || type == "void") { m_pSecondary = NULL; m_SecondaryId = TQString(); 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"