#ifndef CARD_H #define CARD_H #include #include "../study/StudyRecord.h" class Dictionary; class DicRecord; class ICardPack; class Card: public QObject { Q_OBJECT public: Card(const ICardPack* cardPack, QString qst = ""): cardPack(cardPack), question(qst) {} bool operator==( const Card& another ) const; QString getName() const; const ICardPack* getCardPack() const { return cardPack; } QString getQuestion() const { return question; } QStringList getAnswers(); QList getSourceRecords(); StudyRecord getStudyRecord() const; bool isScheduledAndReviewed() const; private: void generateAnswers(); void clearAnswers(); QMultiHash getAnswerElements(); void generateAnswersFromElements(const QMultiHash& answerElements); QStringList getAnswerElementsForField(const QMultiHash& answerElements, const QString& fieldName) const; private slots: void dropAnswers(); signals: void answersChanged() const; private: const ICardPack* cardPack; QString question; QStringList answers; QList sourceRecords; }; #endif