/*************************************************************************** kwqquizmodel.h ------------------- copyright : (C) 2008 by Peter Hedlund email : peter.hedlund@kdemail.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef KWQQUIZMODEL_H #define KWQQUIZMODEL_H #include #include "prefs.h" /** @author Peter Hedlund */ class KWQSortFilterModel; class KWQQuizModel : public QSortFilterProxyModel { Q_OBJECT public: enum QuizIcon {IconLeftCol, IconRightCol, IconQuestion, IconCorrect, IconError}; KWQQuizModel(QObject *parent); void setSourceModel(KWQSortFilterModel * sourceModel); KWQSortFilterModel * sourceModel() const; bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const; bool init(); void activateErrorList(); void activateBaseList(); void finish(); void toNext(); bool atEnd(); bool checkAnswer(const QString & ); bool hasErrors(); QStringList multiOptions(); QString quizIcon(QuizIcon ico); QString yourAnswer(const QString & ); QString hint(); Prefs::EnumStartSession::type quizType() const {return m_quizType;} void setQuizType(Prefs::EnumStartSession::type qt); int quizMode() const {return m_quizMode;} void setQuizMode(int qm); int questionCount(); QString question(); QString blankAnswer(); QString answer(); QString langQuestion(); QString langAnswer(); QString kbAnswer(); QList errorList() const {return m_errorList;} signals: void checkingAnswer(int ); protected: bool lessThan(const QModelIndex & left, const QModelIndex & right) const; private: KWQSortFilterModel * m_sourceModel; QList m_list; QList m_errorList; QList m_quizList; int m_quizMode; int m_currentQuestion; int m_questionCount; Prefs::EnumStartSession::type m_quizType; QString m_correctBlank; QString m_answerBlank; bool isOdd(int ) const; int column(int ); }; #endif // KWQQUIZMODEL_H