1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
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 TQString & _short, const TQString & _long)
: shortId (_short), longId(_long) {}
TQString shortStr() const { return shortId; }
TQString longStr() const { return longId; }
protected:
TQString 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<TQString> names);
static TQString getSubType (const TQString & type);
static TQString getMainType (const TQString & type);
static TQString compStr(Prefs::EnumCompType::type type);
static TQString gradeStr(int i);
static TQString typeStr(const TQString id);
void setLessonItems(vector<int> indices) { lessonitems = indices; }
void setLessonItemStr(const TQString & indices);
//void setDateItem (time_t time) { dateitem = time; }
//void setQueryItem (int query) { queryitem = query; }
//void setBadItem (int bad) { baditem = bad; }
//void setTypeItem (const TQString & 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; }
TQString lessonItemStr() const;
//time_t dateItem () const { return dateitem; }
//int queryItem () const { return queryitem; }
//int badItem () const { return baditem; }
//TQString 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, TQString type);
QuerySelection select(kvoctrainDoc*, int act_lesson,
int index, TQString 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 TQString &, const TQString &);
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;
//TQString typeitem;
//grade_t gradeitem;
vector<int> lessonitems;
//vector<int> blockItems,
// expireItems;
private:
static vector<TQString> userTypes;
};
#endif // QueryManager_included
|