[Uml-devel] branches/KDE/3.5/kdesdk/umbrello/umbrello

Oliver Kellogg okellogg at users.sourceforge.net
Sat Sep 16 04:32:11 UTC 2006


SVN commit 585032 by okellogg:

UMLDoc::rootFolderType(): New.

 M  +3 -6      folder.cpp  
 M  +24 -28    model_utils.cpp  
 M  +9 -0      umldoc.cpp  
 M  +8 -0      umldoc.h  
 M  +1 -1      umllistviewitem.cpp  
 M  +2 -2      umlobject.cpp  


--- branches/KDE/3.5/kdesdk/umbrello/umbrello/folder.cpp #585031:585032
@@ -202,12 +202,9 @@
 void UMLFolder::save(QDomDocument& qDoc, QDomElement& qElement) {
     UMLDoc *umldoc = UMLApp::app()->getDocument();
     QString elementName("UML:Package");
-    for (int i = 0; i < Uml::N_MODELTYPES; i++) {
-        if (this == umldoc->getRootFolder((Uml::Model_Type)i)) {
-            elementName = "UML:Model";
-            break;
-        }
-    }
+    const Uml::Model_Type mt = umldoc->rootFolderType(this);
+    if (mt != Uml::N_MODELTYPES)
+        elementName = "UML:Model";
     QDomElement folderElement = UMLObject::save(elementName, qDoc);
     saveContents(qDoc, folderElement);
     qElement.appendChild(folderElement);
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/model_utils.cpp #585031:585032
@@ -347,11 +347,9 @@
                         while (pkg->getUMLPackage()) {  // wind back to root
                             pkg = pkg->getUMLPackage();
                         }
-                        for (int i = 0; i < Uml::N_MODELTYPES; i++) {
-                            Uml::Model_Type m = (Uml::Model_Type)i;
-                            if (pkg == umldoc->getRootFolder(m))
-                                return m;
-                        }
+                        const Uml::Model_Type m = umldoc->rootFolderType(pkg);
+                        if (m != Uml::N_MODELTYPES)
+                            return m;
                     }
                     mt = guessContainer(roleObj);
                     if (mt != Uml::mt_Logical)
@@ -830,30 +828,28 @@
             UMLDoc *umldoc = UMLApp::app()->getDocument();
             UMLFolder *f = static_cast<UMLFolder*>(o);
             do {
-                for (int i = 0; i < Uml::N_MODELTYPES; i++) {
-                    const Uml::Model_Type mt = (Uml::Model_Type)i;
-                    if (f == umldoc->getRootFolder(mt)) {
-                        switch (mt) {
-                            case Uml::mt_Logical:
-                                type = Uml::lvt_Logical_Folder;
-                                break;
-                            case Uml::mt_UseCase:
-                                type = Uml::lvt_UseCase_Folder;
-                                break;
-                            case Uml::mt_Component:
-                                type = Uml::lvt_Component_Folder;
-                                break;
-                            case Uml::mt_Deployment:
-                                type = Uml::lvt_Deployment_Folder;
-                                break;
-                            case Uml::mt_EntityRelationship:
-                                type = Uml::lvt_EntityRelationship_Folder;
-                                break;
-                            default:
-                                break;
-                        }
-                        return type;
+                const Uml::Model_Type mt = umldoc->rootFolderType(f);
+                if (mt != Uml::N_MODELTYPES) {
+                    switch (mt) {
+                        case Uml::mt_Logical:
+                            type = Uml::lvt_Logical_Folder;
+                            break;
+                        case Uml::mt_UseCase:
+                            type = Uml::lvt_UseCase_Folder;
+                            break;
+                        case Uml::mt_Component:
+                            type = Uml::lvt_Component_Folder;
+                            break;
+                        case Uml::mt_Deployment:
+                            type = Uml::lvt_Deployment_Folder;
+                            break;
+                        case Uml::mt_EntityRelationship:
+                            type = Uml::lvt_EntityRelationship_Folder;
+                            break;
+                        default:
+                            break;
                     }
+                    return type;
                 }
             } while ((f = static_cast<UMLFolder*>(f->getUMLPackage())) != NULL);
             kdError() << "convert_OT_LVT(" << o->getName()
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/umldoc.cpp #585031:585032
@@ -2054,6 +2054,15 @@
     return m_root[mt];
 }
 
+Uml::Model_Type UMLDoc::rootFolderType(UMLObject *obj) {
+    for (int i = 0; i < Uml::N_MODELTYPES; i++) {
+        const Uml::Model_Type m = (Uml::Model_Type)i;
+        if (obj == m_root[m])
+            return m;
+    }
+    return Uml::N_MODELTYPES;
+}
+
 /** Read property of IDChangeLog* m_pChangeLog. */
 IDChangeLog* UMLDoc::getChangeLog() {
     return m_pChangeLog;
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/umldoc.h #585031:585032
@@ -619,6 +619,14 @@
     UMLFolder *getRootFolder(Uml::Model_Type mt);
 
     /**
+     * Return the corresponding Model_Type if the given object
+     * is one of the root folders.
+     * When the given object is not one of the root folders then
+     * return Uml::N_MODELTYPES.
+     */
+    Uml::Model_Type rootFolderType(UMLObject *obj);
+
+    /**
      * Read property of IDChangeLog* m_pChangeLog.
      *
      * @return  Pointer to the IDChangeLog object.
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/umllistviewitem.cpp #585031:585032
@@ -632,7 +632,7 @@
     UMLDoc *umldoc = s_pListView->getDocument();
     UMLFolder *extFolder = NULL;
     if (m_pObject == NULL) {
-        if (! Model_Utils::typeIsDiagram(m_Type))
+        if (! Model_Utils::typeIsDiagram(m_Type) && m_Type != Uml::lvt_View)
             kdError() << "UMLListViewItem::saveToXMI(" << m_Label
                 << "): m_pObject is NULL" << endl;
         itemElement.setAttribute( "label", m_Label );
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/umlobject.cpp #585031:585032
@@ -754,8 +754,8 @@
             }
         } else if (m_pUMLPackage) {
             m_pUMLPackage->addObject(this);
-        } else {
-            kdError() << "UMLObject::load(" << m_Name << "): m_pUMLPackage is not set"
+        } else if (umldoc->rootFolderType(this) == Uml::N_MODELTYPES) {
+            kdError() << "UMLObject::loadFromXMI(" << m_Name << "): m_pUMLPackage is not set"
                 << endl;
         }
     }




More information about the umbrello-devel mailing list