37        Q_PROPERTY(QString exerciseText READ exerciseText WRITE setExerciseText NOTIFY exerciseTextChanged)
 
   38        Q_PROPERTY(QString inputText READ inputText WRITE setInputText NOTIFY inputTextChanged)
 
   39        Q_PROPERTY(QList<
MistakeRecord> mistakes READ mistakes WRITE setMistakes NOTIFY mistakesChanged)
 
   40        Q_PROPERTY(QList<
CharacterRecord> characters READ characters WRITE setCharacters NOTIFY charactersChanged)
 
   41        Q_PROPERTY(
bool timed READ timed WRITE setTimed NOTIFY timedChanged)
 
   42        Q_PROPERTY(qreal time READ time WRITE setTime NOTIFY timeChanged)
 
   44        QString exerciseText(
void) override;
 
   45        void setExerciseText(QString text) override;
 
   46        QString inputText(
void) override;
 
   47        void setInputText(QString text) override;
 
   48        Q_INVOKABLE 
void clearMistakes(
void) override;
 
   52        Q_INVOKABLE 
void clearCharacters(
void) override;
 
   56        bool timed(
void) override;
 
   57        void setTimed(
bool value) override;
 
   58        qreal time(
void) override;
 
   59        void setTime(qreal seconds) override;
 
   60        Q_INVOKABLE 
void validate(
void) override;
 
   61        Q_INVOKABLE 
void validate(
int grossHits, QStringList errorWords) override;
 
   62        Q_INVOKABLE 
int grossHits(
void) override;
 
   63        Q_INVOKABLE 
int mistakeCount(
void) override;
 
   64        Q_INVOKABLE QStringList errorWords(
void) override;
 
   65        Q_INVOKABLE 
void generateMistakeText(
bool correctMistakes) override;
 
   66        Q_INVOKABLE QString generatedInputText(
void) override;
 
   67        Q_INVOKABLE QString generatedMistakeText(
void) override;
 
   68        Q_INVOKABLE QString textWithMistakes(
void) override;
 
   71        QList<
MistakeRecord> compareLists(QList<QVariant> source, QList<QVariant> target, QVector<
CharacterRecord> *recordedCharacters = 
nullptr, 
int *hits = 
nullptr, 
int *inputPos = 
nullptr);
 
   72        QList<
MistakeRecord> compareStrings(QString source, QString target, QVector<
CharacterRecord> *recordedCharacters = 
nullptr, 
int *hits = 
nullptr, 
int *inputPos = 
nullptr);
 
   73        QMap<
int, 
MistakeRecord> generateDiffList(QStringList *sourceWords, QStringList *targetWords, QList<
int> *mergeList = 
nullptr);
 
   74        QList<
MistakeRecord> findMistakes(QString exerciseText, QString input, QVector<
CharacterRecord> recordedCharacters, 
int *totalHits = 
nullptr, QStringList *errorWords = 
nullptr);
 
   75        QList<
MistakeRecord> validateExercise(QString exerciseText, QString inputText, QVector<
CharacterRecord> recordedCharacters, 
int *totalHits, 
int *mistakeCount, QStringList *errorWords = 
nullptr, 
bool timed = false, 
int timeSecs = 0);
 
   76        QString addMistakes(QString exerciseText, QList<
MistakeRecord *> recordedMistakes);
 
   77        QStringList splitWordsByPunct(QStringList source);
 
   78        QString m_exerciseText;
 
   85        int m_mistakeCount = 0;
 
   86        QStringList m_errorWords;
 
   87        QString m_generatedInputText;
 
   88        QString m_generatedMistakeText;