summaryrefslogtreecommitdiffstats
path: root/kvoctrain/kvoctrain/kvt-core/QueryManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'kvoctrain/kvoctrain/kvt-core/QueryManager.h')
-rw-r--r--kvoctrain/kvoctrain/kvt-core/QueryManager.h223
1 files changed, 223 insertions, 0 deletions
diff --git a/kvoctrain/kvoctrain/kvt-core/QueryManager.h b/kvoctrain/kvoctrain/kvt-core/QueryManager.h
new file mode 100644
index 00000000..07567d22
--- /dev/null
+++ b/kvoctrain/kvoctrain/kvt-core/QueryManager.h
@@ -0,0 +1,223 @@
+/***************************************************************************
+
+ manage queries
+
+ -----------------------------------------------------------------------
+
+ begin : Sat Jul 11 20:50:53 MET 1999
+
+ copyright : (C) 1999-2001 Ewald Arnold <kvoctrain@ewald-arnold.de>
+ (C) 2001 The KDE-EDU team
+ (C) 2005 Peter Hedlund <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 QueryManager_included
+#define QueryManager_included
+
+#include <vector>
+using namespace std;
+
+#include "kvoctraindoc.h"
+#include "prefs.h"
+
+class kvoctrainDoc;
+class KConfig;
+class kvoctrainExpr;
+class Prefs;
+
+// internal types, indented are subtypes
+
+#define QM_VERB "v" // go
+#define QM_VERB_IRR "ir"
+#define QM_VERB_REG "re"
+#define QM_NOUN "n" // table, coffee
+#define QM_NOUN_F "f"
+#define QM_NOUN_M "m"
+#define QM_NOUN_S "s"
+#define QM_NAME "nm"
+#define QM_ART "ar" // article
+#define QM_ART_DEF "def" // definite a/an
+#define QM_ART_IND "ind" // indefinite the
+#define QM_ADJ "aj" // adjective expensive, good
+#define QM_ADV "av" // adverb today, strongly
+#define QM_PRON "pr" // pronoun you, she
+#define QM_PRON_POS "pos" // possessive my, your
+#define QM_PRON_PER "per" // personal
+#define QM_PHRASE "ph"
+#define QM_NUM "num" // numeral
+#define QM_NUM_ORD "ord" // ordinal first, second
+#define QM_NUM_CARD "crd" // cardinal one, two
+#define QM_INFORMAL "ifm"
+#define QM_FIG "fig"
+#define QM_CON "con" // conjuncton and, but
+#define QM_PREP "pre" // preposition behind, between
+#define QM_QUEST "qu" // question who, what
+
+// type delimiters
+
+#define QM_USER_TYPE "#" // designates number of user type
+#define QM_TYPE_DIV ":" // divide main from subtype
+
+//enum kvq_timeout_t { kvq_notimeout, kvq_show, kvq_cont };
+
+enum QueryType { QT_Random, QT_Multiple,
+ QT_Articles, QT_Conjugation, QT_Comparison,
+ QT_Synonym, QT_Antonym, QT_Example, QT_Paraphrase };
+
+
+class TypeRelation
+{
+ public:
+
+ TypeRelation (const QString & _short, const QString & _long)
+ : shortId (_short), longId(_long) {}
+
+ QString shortStr() const { return shortId; }
+ QString longStr() const { return longId; }
+
+ protected:
+
+ QString shortId, longId;
+};
+
+
+struct QueryEntryRef {
+ QueryEntryRef (kvoctrainExpr *_exp,
+ int _nr)
+ : exp(_exp), nr(_nr) {}
+
+
+ kvoctrainExpr *exp;
+ int nr;
+};
+
+typedef vector<vector<QueryEntryRef> > QuerySelection;
+
+class QueryManager
+{
+ public:
+ // donīt change the order/remove one of these,
+ // just APPEND new types
+ enum CompType { DontCare,
+ MoreEqThan, MoreThan,
+ Before, Within,
+ WorseThan, WorseEqThan,
+ EqualTo, NotEqual,
+ LessEqThan, LessThan,
+ BetterThan, BetterEqThan,
+ Current, NotAssigned, NotQueried,
+ Auto_Time, Auto_Count,
+ OneOf, NotOneOf
+ };
+
+ QueryManager ();
+
+ //void loadConfig (KConfig *);
+ //void saveConfig (KConfig *);
+
+ static vector<TypeRelation> getRelation (bool only_maintypes);
+ static void setTypeNames (vector<QString> names);
+ static QString getSubType (const QString & type);
+ static QString getMainType (const QString & type);
+
+ static QString compStr(Prefs::EnumCompType::type type);
+ static QString gradeStr(int i);
+ static QString typeStr(const QString id);
+
+ void setLessonItems(vector<int> indices) { lessonitems = indices; }
+ void setLessonItemStr(const QString & indices);
+ //void setDateItem (time_t time) { dateitem = time; }
+ //void setQueryItem (int query) { queryitem = query; }
+ //void setBadItem (int bad) { baditem = bad; }
+ //void setTypeItem (const QString & type) { typeitem = type; }
+ //void setGradeItem (grade_t grade) { gradeitem = grade; }
+ //void setBlockItem (int item, int grade);
+ //void setExpireItem (int item, int grade);
+
+ vector<int> lessonItems() const { return lessonitems; }
+ QString lessonItemStr() const;
+ //time_t dateItem () const { return dateitem; }
+ //int queryItem () const { return queryitem; }
+ //int badItem () const { return baditem; }
+ //QString typeItem () const { return typeitem; }
+ //grade_t gradeItem () const { return gradeitem; }
+ //int blockItem (int grade) const;
+ //int expireItem (int grade) const;
+
+ //void setDateComp (CompType time) { datecomp = time; }
+ //void setLessonComp (CompType less) { lessoncomp = less; }
+ //void setQueryComp (CompType query) { querycomp = query; }
+ //void setBadComp (CompType bad) { badcomp = bad; }
+ //void setTypeComp (CompType type) { typecomp = type; }
+ //void setGradeComp (CompType grade) { gradecomp = grade; }
+
+ //CompType dateComp () const { return datecomp; }
+ //CompType lessonComp () const { return lessoncomp; }
+ //CompType queryComp () const { return querycomp; }
+ //CompType badComp () const { return badcomp; }
+ //CompType typeComp () const { return typecomp; }
+ //CompType gradeComp () const { return gradecomp; }
+
+ bool validate(kvoctrainExpr *expr, int act_lesson,
+ int oindex, int tindex);
+
+ QuerySelection select(kvoctrainDoc*, int act_lesson,
+ int oindex, int tindex);
+
+ bool validate(kvoctrainExpr *expr, int act_lesson,
+ int index, QString type);
+
+ QuerySelection select(kvoctrainDoc*, int act_lesson,
+ int index, QString type);
+
+ bool validate(kvoctrainExpr *expr, int act_lesson,
+ int index, QueryType type);
+
+ QuerySelection select(kvoctrainDoc*, int act_lesson,
+ int index, QueryType type);
+
+ protected:
+
+ bool compareBlocking (int grade, int limit, bool use_it);
+ bool compareExpiring (int grade, int limit, bool use_it);
+ bool compareDate (CompType, time_t, time_t);
+ bool compareQuery (CompType, int, int);
+ bool compareBad (CompType, int, int);
+ bool compareGrade (CompType, grade_t, grade_t);
+ bool compareType (CompType, const QString &, const QString &);
+ bool compareLesson (CompType type, int less, const vector<int> &limit, int current);
+
+ /* CompType typecomp,
+ querycomp,
+ badcomp,
+ gradecomp,
+ lessoncomp,
+ datecomp;*/
+
+ //time_t dateitem;
+ //int queryitem,
+ // baditem;
+ //QString typeitem;
+ //grade_t gradeitem;
+ vector<int> lessonitems;
+
+ //vector<int> blockItems,
+ // expireItems;
+
+ private:
+ static vector<QString> userTypes;
+};
+
+#endif // QueryManager_included