void init();
-
- void ClearLessons();
-
KEduVocDocument* q;
bool m_dirty;
QString m_category;
// make this a map so removals don't require renumbering :)
- QMap<int, KEduVocLesson*> m_lessons;
+ QMap<int, KEduVocLesson> m_lessons;
KEduVocWordType* m_wordTypes;
KEduVocDocument::KEduVocDocumentPrivate::~KEduVocDocumentPrivate()
{
- ClearLessons();
-}
-
-void KEduVocDocument::KEduVocDocumentPrivate::ClearLessons()
-{
- QList<int> keys = m_lessons.keys();
- for (int i = 0; i < keys.size(); ++i)
- {
- delete m_lessons.value(keys[i]);
- }
- m_lessons.clear();
}
void KEduVocDocument::KEduVocDocumentPrivate::init()
{
- ClearLessons();
+ m_lessons.clear();
m_tenseDescriptions.clear();
m_identifiers.clear();
m_sortIdentifier.clear();
}
}
- KEduVocLesson *lesson = new KEduVocLesson;
- lesson->setName( lessonName );
+ KEduVocLesson lesson;
+ lesson.setName( lessonName );
d->m_lessons.insert( position, lesson );
return position;
}
-QMap<int, KEduVocLesson *> KEduVocDocument::lessons() const
+QMap<int, KEduVocLesson> & KEduVocDocument::lessons() const
{
return d->m_lessons;
}
-KEduVocLesson * KEduVocDocument::lesson( int index )
+KEduVocLesson & KEduVocDocument::lesson( int index )
{
- KEduVocLesson * retval( NULL );
- if ( d->m_lessons.contains( index ) ) {
- retval = d->m_lessons[index];
- }
- return retval;
+ return d->m_lessons[index];
}
//void KEduVocDocument::renameLesson(const int lessonIndex, const QString &lessonName)
QStringList KEduVocDocument::lessonNames() const
{
QStringList descriptions;
- QList<KEduVocLesson*> lessonObjects = lessons().values();
+ QList<KEduVocLesson> lessonObjects = lessons().values();
for ( int i = 0; i < lessonObjects.count(); ++i ) {
- descriptions.append( lessonObjects[i]->name() );
+ descriptions.append( lessonObjects[i].name() );
}
return descriptions;
}
void setCurrentLesson( int lesson );
/** get a lesson object
- * @returns a pointer to the lesson object at the specified index or NULL if there isn't one
+ * @returns a pointer to the lesson object at the specified index
+ * NOTE: this will create one if it doesn't exist
*/
- KEduVocLesson *lesson( int index );
+ KEduVocLesson & lesson( int index );
/** get all lesson objects
* @returns a map of pointers to lesson objects
*/
- QMap<int, KEduVocLesson *> lessons() const;
+ QMap<int, KEduVocLesson> & lessons() const;
/**
* @returns the number of lessons defined
// TODO: once we have a lesson class, add each of these entryids to the lesson
// set this lesson for the given enty
m_doc->entry( entryId )->setLesson( lessonId );
- m_doc->lesson( lessonId )->addEntry( entryId );
+ m_doc->lesson( lessonId ).addEntry( entryId );
currentElement = currentElement.nextSiblingElement( KVTML_ENTRYID );
}
if ( m_doc->lessonCount() == 0 )
return true;
- QMap<int, KEduVocLesson*> lessons = m_doc->lessons();
+ QMap<int, KEduVocLesson> lessons = m_doc->lessons();
foreach( int lessonid, lessons.keys() ) {
- KEduVocLesson * thisLesson = lessons[lessonid];
+ KEduVocLesson thisLesson = lessons[lessonid];
// make lesson element
QDomElement thisLessonElement = m_domDoc.createElement( KVTML_LESSON );
// add a name
- thisLessonElement.appendChild( newTextElement( KVTML_NAME, thisLesson->name() ) );
+ thisLessonElement.appendChild( newTextElement( KVTML_NAME, thisLesson.name() ) );
// add a inquery tag
thisLessonElement.appendChild( newTextElement( KVTML_QUERY, m_doc->lessonInQuery( lessonid ) ? KVTML_TRUE : KVTML_FALSE ) );
m_doc->appendEntry( &expr );
// also add this entryid to the lesson it's part of
- if ( m_doc->lesson( lesson ) != NULL ) {
- m_doc->lesson( lesson )->addEntry( m_doc->entryCount() );
- }
+ m_doc->lesson( lesson ).addEntry( m_doc->entryCount() );
return true;
}
QDomElement domElementLesson = domDoc.createElement( KV_LESS_GRP );
domElementLesson.setAttribute( KV_SIZEHINT, m_doc->sizeHint( -1 ) );
- const QMap<int, KEduVocLesson*> lessons = m_doc->lessons();
+ QMap<int, KEduVocLesson> lessons = m_doc->lessons();
QList<int> keys = lessons.keys();
for ( int i = 0; i < keys.size(); ++i ) {
int thiskey = keys[i];
QDomElement domElementDesc = domDoc.createElement( KV_LESS_DESC );
- QDomText domTextDesc = domDoc.createTextNode( lessons[thiskey]->name() );
+ QDomText domTextDesc = domDoc.createTextNode( lessons[thiskey].name() );
domElementDesc.setAttribute( KV_LESS_NO, thiskey );
if ( m_doc->currentLesson() == thiskey )
return *this;
}
+bool KEduVocLesson::operator==(const KEduVocLesson &other)
+{
+ return d->m_entries == other.d->m_entries && d->m_name == other.d->m_name;
+}
+
void KEduVocLesson::setName( const QString &name )
{
d->m_name = name;
* @param entryid id of the entry to remove
*/
void removeEntry( int entryid );
+
+ /** equality operator */
+ bool operator==(const KEduVocLesson &other);
private:
class Private;