/** * Deletes the child listview item representing the given UMLClassifierListItem. */ void UMLListViewItem::deleteChildItem(UMLClassifierListItem *child) { UMLListViewItem *childItem = findChildObject(child); if (childItem == 0) { uError() << child->name() << ": child listview item not found"; return; } m_comap.remove(child); delete childItem; }
/** * Creates a Unique Constraint for this Entity. * @param name an optional name * @return the UniqueConstraint created */ UMLUniqueConstraint* UMLEntity::createUniqueConstraint(const QString &name ) { Uml::IDType id = UniqueID::gen(); QString currentName; if (name.isNull()) { /** * @todo check parameter */ currentName = uniqChildName(UMLObject::ot_UniqueConstraint); } else { currentName = name; } UMLUniqueConstraint* newUniqueConstraint = new UMLUniqueConstraint(this, currentName, id); int button = KDialog::Accepted; bool goodName = false; //check for name.isNull() stops dialog being shown //when creating attribute via list view while (button == KDialog::Accepted && !goodName && name.isNull()) { QPointer<UMLUniqueConstraintDialog> dialog = new UMLUniqueConstraintDialog(0, newUniqueConstraint); button = dialog->exec(); QString name = newUniqueConstraint->name(); if (name.length() == 0) { KMessageBox::error(0, i18n("That is an invalid name."), i18n("Invalid Name")); } else if ( findChildObject(name) != NULL ) { KMessageBox::error(0, i18n("That name is already being used."), i18n("Not a Unique Name")); } else { goodName = true; } delete dialog; } if (button != KDialog::Accepted) { delete newUniqueConstraint; return NULL; } addConstraint(newUniqueConstraint); UMLDoc *umldoc = UMLApp::app()->document(); umldoc->signalUMLObjectCreated(newUniqueConstraint); emitModified(); return newUniqueConstraint; }
/** * Adds an already created entityAttribute. * The entityAttribute object must not belong to any other concept. * @param att Pointer to the UMLEntityAttribute. * @param log Pointer to the IDChangeLog. * @return True if the entityAttribute was successfully added. */ bool UMLEntity::addEntityAttribute(UMLEntityAttribute* att, IDChangeLog* log /* = 0*/) { QString name = (QString)att->name(); if (findChildObject(name) == NULL) { att->setParent(this); m_List.append(att); emit entityAttributeAdded(att); UMLObject::emitModified(); connect(att, SIGNAL(modified()), this, SIGNAL(modified())); return true; } else if (log) { log->removeChangeByNewID( att->id() ); delete att; } return false; }
/** * Adds an entityAttribute to the entity, at the given position. * If position is negative or too large, the entityAttribute is added * to the end of the list. * TODO: give default value -1 to position (append) - now it conflicts with the method above.. * @param att Pointer to the UMLEntityAttribute. * @param position Position index for the insertion. * @return True if the entityAttribute was successfully added. */ bool UMLEntity::addEntityAttribute(UMLEntityAttribute* att, int position) { QString name = (QString)att->name(); if (findChildObject(name) == NULL) { att->setParent(this); if ( position >= 0 && position <= (int)m_List.count() ) { m_List.insert(position, att); } else { m_List.append(att); } emit entityAttributeAdded(att); UMLObject::emitModified(); connect(att, SIGNAL(modified()), this, SIGNAL(modified())); return true; } return false; }
/** * Create an UMLAttribute. * @param name an optional name for the attribute * @param type an optional type object for the attribute * @param vis the visibility of the attribute * @param iv the initial value for the attribute * @return the just created attribute or null */ UMLAttribute* UMLEntity::createAttribute(const QString &name /*= QString()*/, UMLObject *type /*= 0*/, Uml::Visibility vis /* = Uml::Visibility::Private*/, const QString& iv /* = QString()*/) { Uml::IDType id = UniqueID::gen(); QString currentName; if (name.isNull()) { currentName = uniqChildName(UMLObject::ot_EntityAttribute); } else { currentName = name; } UMLEntityAttribute* newAttribute = new UMLEntityAttribute(this, currentName, id, vis, type, iv); int button = KDialog::Accepted; bool goodName = false; //check for name.isNull() stops dialog being shown //when creating attribute via list view while (button == KDialog::Accepted && !goodName && name.isNull()) { QPointer<UMLEntityAttributeDialog> dialog = new UMLEntityAttributeDialog(0, newAttribute); button = dialog->exec(); QString name = newAttribute->name(); if (name.length() == 0) { KMessageBox::error(0, i18n("That is an invalid name."), i18n("Invalid Name")); } else if ( findChildObject(name) != NULL ) { KMessageBox::error(0, i18n("That name is already being used."), i18n("Not a Unique Name")); } else { goodName = true; } delete dialog; } if (button != KDialog::Accepted) { delete newAttribute; return 0; } addEntityAttribute(newAttribute); UMLDoc *umldoc = UMLApp::app()->document(); umldoc->signalUMLObjectCreated(newAttribute); return newAttribute; }