]> Git trees. - libqmvoc.git/commitdiff
Add even more sanity:
authorFrederik Gladhorn <gladhorn@kde.org>
Sun, 16 Dec 2007 00:47:19 +0000 (00:47 +0000)
committerFrederik Gladhorn <gladhorn@kde.org>
Sun, 16 Dec 2007 00:47:19 +0000 (00:47 +0000)
 - When deleting an entry, let's remove it from the word type lesson.
 - Only delete an entry when deleting the last lesson holding it.

svn path=/branches/work/kdeedu_parley/libkdeedu/; revision=748955

keduvocdocument/keduvoclesson.cpp
keduvocdocument/keduvoctranslation.cpp

index 472242a9d2202a83ffbc01c0402f8679a73f6ea0..60d7d7bda9f6059d0f44243cdca1e53f0d669c2c 100644 (file)
 class KEduVocLesson::Private
 {
 public:
-    ~Private();
-
     // entries
     QList<KEduVocExpression*> m_entries;
 };
 
-KEduVocLesson::Private::~ Private()
-{
-    ///@todo delete children here???? is this a 1:1 mapping?
-    qDeleteAll(m_entries);
-}
 
 KEduVocLesson::KEduVocLesson(const QString& name, KEduVocContainer *parent)
         : d( new Private ), KEduVocContainer(name, Lesson, parent)
 {
 }
 
+
 KEduVocLesson::KEduVocLesson( const KEduVocLesson &other )
         : d( new Private ), KEduVocContainer(other)
 {
     d->m_entries = other.d->m_entries;
 }
 
+
 KEduVocLesson::~KEduVocLesson()
 {
+    foreach (KEduVocExpression* entry, d->m_entries) {
+        entry->removeLesson(this);
+        if (entry->lessons().count() == 0) {
+            delete entry;
+        }
+    }
     delete d;
 }
 
index acf13c5271e935bc780d1297606029fc5052f546..291733dc57f504bdfd0b74ecae2268fd8e77a128 100644 (file)
@@ -119,6 +119,9 @@ KEduVocTranslation::KEduVocTranslation( const KEduVocTranslation &other ) : d( n
 
 KEduVocTranslation::~KEduVocTranslation()
 {
+    if (d->m_wordType) {
+        d->m_wordType->removeTranslation(this);
+    }
     delete d;
 }