File indexing completed on 2024-02-18 03:50:23

0001 /*
0002  * Vocabulary Expression for KDE Edu
0003  * SPDX-FileCopyrightText: 1999-2001 Ewald Arnold <kvoctrain@ewald-arnold.de>
0004  * SPDX-FileCopyrightText: 2005-2007 Peter Hedlund <peter.hedlund@kdemail.net>
0005  * SPDX-FileCopyrightText: 2008 Frederik Gladhorn <frederik.gladhorn@kdemail.net>
0006  * SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 #ifndef KEDUVOCEXPRESSION_H
0009 #define KEDUVOCEXPRESSION_H
0010 
0011 #include "keduvocdocument_export.h"
0012 
0013 #include <QDateTime>
0014 
0015 #include "keduvocarticle.h"
0016 #include "keduvoclesson.h"
0017 #include "keduvocmultiplechoice.h"
0018 #include "keduvoctranslation.h"
0019 
0020 class KEduVocLesson;
0021 
0022 /**
0023   This class contains one vocabulary expression as an original with one or more
0024   translations
0025   */
0026 class KEDUVOCDOCUMENT_EXPORT KEduVocExpression
0027 {
0028 public:
0029     /** default constructor for an empty vocabulary expression
0030      */
0031     explicit KEduVocExpression();
0032 
0033     /** Constructor for a vocabulary expression with one translation
0034      *
0035      * @param expression       translation
0036      */
0037     explicit KEduVocExpression(const QString &expression);
0038 
0039     /** Constructor for a vocabulary expression with an original and one or more translations
0040      *
0041      * @param translations      translations
0042      */
0043     explicit KEduVocExpression(const QStringList &translations);
0044 
0045     KEduVocExpression(const KEduVocExpression &other);
0046 
0047     ~KEduVocExpression();
0048 
0049     /** return the lesson
0050      */
0051     KEduVocLesson *lesson() const;
0052 
0053     /** reset all grades of the entry
0054      * @param index     identifier (language)
0055      */
0056     void resetGrades(int index);
0057 
0058     /** returns flag if entry is activated for queries
0059      */
0060     bool isActive() const;
0061 
0062     /** set entry active (enabled for queries)
0063      */
0064     void setActive(bool flag = true);
0065 
0066     int sizeHint() const;
0067     void setSizeHint(int sizeHint);
0068 
0069     /**
0070      * Add a translation to this expression
0071      * @param index            number of translation = the identifier
0072      * @param expression       the translation
0073      */
0074     void setTranslation(int index, const QString &expression);
0075 
0076     /** removes a translation
0077      *
0078      * @param index            number of translation 1..x
0079      */
0080     void removeTranslation(int index);
0081 
0082     /**
0083      * Get a pointer to the translation
0084      * @param index of the language identifier
0085      * @return the translation
0086      */
0087     KEduVocTranslation *translation(int index);
0088     KEduVocTranslation *translation(int index) const;
0089 
0090     QList<int> translationIndices() const;
0091 
0092     KEduVocExpression &operator=(const KEduVocExpression &expression);
0093     bool operator==(const KEduVocExpression &expression) const;
0094 
0095 private:
0096     class KEduVocExpressionPrivate;
0097     KEduVocExpressionPrivate *const d;
0098 
0099     /** only called by lesson to add itself to the lesson list
0100      */
0101     void setLesson(KEduVocLesson *l);
0102 
0103     friend class KEduVocLesson;
0104 };
0105 
0106 #endif // KEduVocExpression_H