summaryrefslogtreecommitdiff
path: root/src/dictionary/Card.h
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2021-07-14 11:49:10 +1200
committerJedidiah Barber <contact@jedbarber.id.au>2021-07-14 11:49:10 +1200
commitd24f813f3f2a05c112e803e4256b53535895fc98 (patch)
tree601e6ae9a1cd44bcfdcf91739a5ca36aedd827c9 /src/dictionary/Card.h
Initial mirror commitHEADmaster
Diffstat (limited to 'src/dictionary/Card.h')
-rw-r--r--src/dictionary/Card.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/dictionary/Card.h b/src/dictionary/Card.h
new file mode 100644
index 0000000..bd822e7
--- /dev/null
+++ b/src/dictionary/Card.h
@@ -0,0 +1,50 @@
+#ifndef CARD_H
+#define CARD_H
+
+#include <QtCore>
+
+#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<const DicRecord*> getSourceRecords();
+ StudyRecord getStudyRecord() const;
+ bool isScheduledAndReviewed() const;
+
+private:
+ void generateAnswers();
+ void clearAnswers();
+ QMultiHash<QString, QString> getAnswerElements();
+ void generateAnswersFromElements(const QMultiHash<QString, QString>& answerElements);
+ QStringList getAnswerElementsForField(const QMultiHash<QString, QString>& answerElements,
+ const QString& fieldName) const;
+
+private slots:
+ void dropAnswers();
+
+signals:
+ void answersChanged() const;
+
+private:
+ const ICardPack* cardPack;
+ QString question;
+ QStringList answers;
+ QList<const DicRecord*> sourceRecords;
+};
+
+#endif