From: Jeremy Paul Whiting Date: Wed, 12 Sep 2007 03:45:52 +0000 (+0000) Subject: deleteLesson fix and optimization X-Git-Tag: v3.94.0~62 X-Git-Url: https://git.rmz.fi/?a=commitdiff_plain;h=9fa54d9c77c55554bcb914b07b768a5c2d69ce9a;p=libqmvoc.git deleteLesson fix and optimization svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=711421 --- diff --git a/keduvocdocument/keduvocdocument.cpp b/keduvocdocument/keduvocdocument.cpp index 9e92146..03ba47c 100644 --- a/keduvocdocument/keduvocdocument.cpp +++ b/keduvocdocument/keduvocdocument.cpp @@ -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++ ) {