]> Git trees. - libqmvoc.git/commitdiff
deleteLesson fix and optimization
authorJeremy Paul Whiting <jpwhiting@kde.org>
Wed, 12 Sep 2007 03:45:52 +0000 (03:45 +0000)
committerJeremy Paul Whiting <jpwhiting@kde.org>
Wed, 12 Sep 2007 03:45:52 +0000 (03:45 +0000)
svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=711421

keduvocdocument/keduvocdocument.cpp

index 9e92146783b710ec04e0bdb81ce5161adeb8fe96..03ba47c0790dbc60d124b063d6c348f46386d0ec 100644 (file)
@@ -1003,7 +1003,6 @@ QStringList KEduVocDocument::lessonNames() const
     return descriptions;
 }
 
-
 int KEduVocDocument::lessonCount() const
 {
     return d->m_lessons.count();
@@ -1011,15 +1010,21 @@ int KEduVocDocument::lessonCount() const
 
 bool KEduVocDocument::deleteLesson( int lessonIndex, int deleteMode )
 {
-    for ( int ent = entryCount() - 1; ent  >= 0 ; ent-- ) {
-        if ( entry( ent )->lesson() == lessonIndex ) {
-            if ( deleteMode == DeleteEmptyLesson )
-                return false; // stop if there are vocabs left in the lesson
-            if ( deleteMode == DeleteEntriesAndLesson )
-                // delete entries of this lesson with this lesson
-                removeEntry( ent );
+    if (deleteMode == DeleteEmptyLesson) {
+        if (d->m_lessons[lessonIndex].entryCount() > 0) {
+            return false; // stop if there are vocabs left in the lesson
+        }
+    }
+    else if (deleteMode == DeleteEntriesAndLesson) {
+        while (d->m_lessons[lessonIndex].entryCount() > 0) {
+            // get the next entryid
+            int entry = d->m_lessons[lessonIndex].entries()[0];
+            // take it out of this lesson
+            d->m_lessons[lessonIndex].removeEntry(entry);
+            // delete the entry from the document
+            removeEntry(entry);
         }
-    }//for entries
+    }
 
     // for all above this lesson number - reduce lesson by one.
     for ( int ent = 0; ent < entryCount(); ent++ ) {