container->entries(Recursive) with enum, same for entryCount.
svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=760343
Leitner
};
+ enum EnumEntriesRecursive{
+ NotRecursive = 0,
+ Recursive = 1
+ };
+
/** default constructor */
explicit KEduVocContainer(const QString& name, EnumContainerType type, KEduVocContainer *parent = 0);
QString name();
/** get a list of all entries in the container */
- virtual QList < KEduVocExpression* > entries() =0;
- virtual int entryCount() =0;
+ virtual QList < KEduVocExpression* > entries(EnumEntriesRecursive recursive = NotRecursive) =0;
+ virtual int entryCount(EnumEntriesRecursive recursive = NotRecursive) =0;
virtual KEduVocExpression* entry(int row) =0;
- /** get a list of all entries in the container and its child containers */
- QList < KEduVocExpression* > entriesRecursive();
-
/**
* Removes a translation. This has to be called when a language is removed from a document.
* @param translation
*/
void setImageUrl(const KUrl &url);
+protected:
+ QList< KEduVocExpression * > entriesRecursive();
+
private:
class Private;
Private * const d;
int idCount = m_doc->identifierCount();
QString currentRow;
- for ( int e = 0; e < m_doc->lesson()->entriesRecursive().count(); e++ ) {
- expression = m_doc->lesson()->entriesRecursive().value( e );
+ for ( int e = 0; e < m_doc->lesson()->entryCount(KEduVocLesson::Recursive); e++ ) {
+ expression = m_doc->lesson()->entries(KEduVocLesson::Recursive).value( e );
currentRow = "";
bool sep = false;
bool KEduVocKvtml2Writer::writeEntries( QDomElement &entriesElement )
{
- m_allEntries = m_doc->lesson()->entriesRecursive();
+ m_allEntries = m_doc->lesson()->entries(KEduVocLesson::Recursive);
// loop through entries
for ( int i = 0; i < m_allEntries.count(); ++i ) {
}
- if ( m_doc->lesson()->entriesRecursive().count() == 0 ) { // this is because in kvtml the languages are saved in the FIRST ENTRY ONLY.
+ if ( m_doc->lesson()->entries(KEduVocLesson::Recursive).count() == 0 ) { // this is because in kvtml the languages are saved in the FIRST ENTRY ONLY.
// new translation
if (!addLanguage(i, lang)) {
}
-QList<KEduVocExpression*> KEduVocLesson::entries()
+QList<KEduVocExpression*> KEduVocLesson::entries(EnumEntriesRecursive recursive)
{
+ if (recursive == Recursive) {
+ return entriesRecursive();
+ }
return d->m_entries;
}
-int KEduVocLesson::entryCount()
+int KEduVocLesson::entryCount(EnumEntriesRecursive recursive)
{
+ if (recursive == Recursive) {
+ return entriesRecursive().count();
+ }
return d->m_entries.count();
}
KEduVocExpression* entry(int row);
/** get a list of all entries in the lesson */
- QList < KEduVocExpression* > entries();
+ QList < KEduVocExpression* > entries(EnumEntriesRecursive recursive = NotRecursive);
/** get the number of entries in the lesson */
- int entryCount();
+ int entryCount(EnumEntriesRecursive recursive = NotRecursive);
/** append an entry to the lesson
* @param entryid id of the entry to add
}
-QList<KEduVocExpression*> KEduVocWordType::entries()
+QList<KEduVocExpression*> KEduVocWordType::entries(EnumEntriesRecursive recursive)
{
+ if (recursive == Recursive) {
+ return entriesRecursive();
+ }
QSet<KEduVocExpression*> entries;
foreach(KEduVocTranslation* translation, d->m_translations) {
entries.insert(translation->entry());
return entries.toList();
}
-int KEduVocWordType::entryCount()
+int KEduVocWordType::entryCount(EnumEntriesRecursive recursive)
{
+ if (recursive == Recursive) {
+ return entriesRecursive().count();
+ }
return entries().count();
}
/** assignment operator */
KEduVocWordType& operator= ( const KEduVocWordType& );
+ /**
+ * Internally (different from the name) the class can have one of the preset word types. These are used to determine special properties (verbs have conjugations available for example).
+ * @param type
+ */
void setWordType(EnumWordType type);
- KEduVocWordType::EnumWordType wordType() const;
+ /**
+ * Return the meta word type for this class.
+ * @return
+ */
+ KEduVocWordType::EnumWordType wordType() const;
+ /**
+ * Return a child class (or this class) that is of the specified type. Returns 0 if no class of that type is found.
+ * @param type
+ * @return
+ */
KEduVocWordType* childOfType(KEduVocWordType::EnumWordType type);
+ /**
+ * The word type class does keep track of individual translations, because for one entry, the translations can have different word types (eg. genders of nouns tend to be different in different langues).
+ * @param row
+ * @return
+ */
KEduVocTranslation * translation(int row);
- /** get a list of all entries in the lesson */
- QList < KEduVocExpression* > entries();
+ /**
+ * get a list of all entries in the lesson
+ * @param recursive include entries in sublessons
+ * @return
+ */
+ QList < KEduVocExpression* > entries(EnumEntriesRecursive recursive = NotRecursive);
KEduVocExpression* entry(int row);
/** get the number of entries in the lesson */
- int entryCount();
+ int entryCount(EnumEntriesRecursive recursive = NotRecursive);
private:
class Private;