]> Git trees. - libqmvoc.git/commitdiff
Change Expression: allow them to be in only one lesson.
authorFrederik Gladhorn <gladhorn@kde.org>
Thu, 27 Mar 2008 00:18:34 +0000 (00:18 +0000)
committerFrederik Gladhorn <gladhorn@kde.org>
Thu, 27 Mar 2008 00:18:34 +0000 (00:18 +0000)
There are only small advantages and too much confusion otherwise.

svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=790609

keduvocdocument/keduvocexpression.cpp
keduvocdocument/keduvocexpression.h
keduvocdocument/keduvockvtml2reader.cpp
keduvocdocument/keduvoclesson.cpp

index 35cf69252e71c444c3c98b9cde9b7e1c4d4de5b5..d510c64d30db5adfe180e1138ca70f8d9f159fa3 100644 (file)
@@ -28,6 +28,7 @@ public:
     KEduVocExpressionPrivate()
     {
         m_active = true;
+        m_lesson = 0;
     }
     ~KEduVocExpressionPrivate();
 
@@ -35,7 +36,7 @@ public:
 
     bool operator== ( const KEduVocExpressionPrivate &p ) const;
 
-    QList<KEduVocLesson*> m_lessons;
+    KEduVocLesson* m_lesson;
     bool m_active;
 
     QMap <int, KEduVocTranslation*> m_translations;
@@ -51,7 +52,6 @@ KEduVocExpression::KEduVocExpressionPrivate::~KEduVocExpressionPrivate()
 KEduVocExpression::KEduVocExpressionPrivate::KEduVocExpressionPrivate(const KEduVocExpressionPrivate & other)
 {
     m_active = other.m_active;
-    m_lessons = other.m_lessons;
 
     foreach (int key, other.m_translations.keys()) {
         m_translations[key] = new KEduVocTranslation(*other.m_translations.value(key));
@@ -63,7 +63,7 @@ bool KEduVocExpression::KEduVocExpressionPrivate::operator== ( const KEduVocExpr
 {
     return
         m_translations == p.m_translations &&
-        m_lessons == p.m_lessons &&
+        m_lesson == p.m_lesson &&
         m_active == p.m_active;
 }
 
@@ -89,14 +89,16 @@ KEduVocExpression::KEduVocExpression( const QStringList & translations)
 
 KEduVocExpression::KEduVocExpression(const KEduVocExpression & other)
     : d(new KEduVocExpressionPrivate(*other.d))
-{}
+{
+    if (other.lesson()) {
+        other.lesson()->appendEntry(this);
+    }
+}
 
 
 KEduVocExpression::~KEduVocExpression()
 {
-    foreach(KEduVocLesson * lesson, d->m_lessons) {
-        lesson->removeEntry(this);
-    }
+    d->m_lesson->removeEntry(this);
     delete d;
 }
 
@@ -125,9 +127,9 @@ void KEduVocExpression::setTranslation( int index, const QString & expr )
 }
 
 
-QList<KEduVocLesson*> KEduVocExpression::lessons() const
+KEduVocLesson* KEduVocExpression::lesson() const
 {
-    return d->m_lessons;
+    return d->m_lesson;
 }
 
 
@@ -185,15 +187,11 @@ QList< int > KEduVocExpression::translationIndices() const
     return d->m_translations.keys();
 }
 
-void KEduVocExpression::addLesson(KEduVocLesson * l)
+void KEduVocExpression::setLesson(KEduVocLesson * l)
 {
-    d->m_lessons.append(l);
-}
-
-void KEduVocExpression::removeLesson(KEduVocLesson * l)
-{
-    d->m_lessons.removeAt(d->m_lessons.indexOf(l));
+    if (d->m_lesson) {
+        d->m_lesson->removeEntry(this);
+    }
+    d->m_lesson = l;
 }
 
-
-
index 33790c8769bbc66521844f748b3840a2450b75d4..4369bb8bce5da65dedf9c48bf5acd15d3ff1aeb8 100644 (file)
@@ -61,9 +61,9 @@ public:
 
     ~KEduVocExpression();
 
-    /** returns index of lesson (-1 = none)
+    /** return the lesson
      */
-    QList<KEduVocLesson *> lessons() const;
+    KEduVocLesson * lesson() const;
 
 
     /** reset all grades of the entry
@@ -114,8 +114,7 @@ private:
 
     /** only called by lesson to add itself to the lesson list
      */
-    void addLesson( KEduVocLesson * l );
-    void removeLesson( KEduVocLesson * l );
+    void setLesson( KEduVocLesson * l );
 
     friend class KEduVocLesson;
 };
index eb356f7d41e7addc7f24379415b080ca56979a1b..789c83edd55e42c3556d79baf2b74032236709f7 100644 (file)
@@ -194,7 +194,7 @@ bool KEduVocKvtml2Reader::readGroups( QDomElement &domElementParent )
 
     // now make sure we don't have any orphan entries
     foreach (KEduVocExpression * entry, m_allEntries.values()) {
-        if (entry->lessons().count() == 0)
+        if (!entry->lesson())
         {
             defaultLesson->appendEntry(entry);
         }
index ad04a3d0c195d10deda6556d6f80a25f7da0d682..56228568e296e224a988c3ed6b7499048bb06d57 100644 (file)
@@ -45,12 +45,7 @@ KEduVocLesson::KEduVocLesson( const KEduVocLesson &other )
 
 KEduVocLesson::~KEduVocLesson()
 {
-    foreach (KEduVocExpression* entry, d->m_entries) {
-        entry->removeLesson(this);
-        if (entry->lessons().count() == 0) {
-            delete entry;
-        }
-    }
+    qDeleteAll(d->m_entries);
     delete d;
 }
 
@@ -74,14 +69,14 @@ void KEduVocLesson::appendEntry(KEduVocExpression* entry)
 {
     Q_ASSERT(entry);
     d->m_entries.append( entry );
-    entry->addLesson(this);
+    entry->setLesson(this);
     invalidateChildLessonEntries();
 }
 
 void KEduVocLesson::insertEntry(int index, KEduVocExpression * entry)
 {
     d->m_entries.insert( index, entry );
-    entry->addLesson(this);
+    entry->setLesson(this);
     invalidateChildLessonEntries();
 }
 
@@ -89,7 +84,7 @@ void KEduVocLesson::removeEntry(KEduVocExpression* entry)
 {
     if (entry) {
         d->m_entries.removeAt( d->m_entries.indexOf(entry) );
-        entry->removeLesson(this);
+        entry->setLesson(0);
         invalidateChildLessonEntries();
     }
 }