You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeedu/kanagram/src/keduvocexpression.h

457 lines
13 KiB

/***************************************************************************
Vocabulary Expression for KDE Edu
-----------------------------------------------------------------------
copyright : (C) 1999-2001 Ewald Arnold
(C) 2001 The KDE-EDU team
(C) 2005 Peter Hedlung
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 KEDUVOCEXPRESSION_H
#define KEDUVOCEXPRESSION_H
#define KV_MAX_GRADE 7
#define KV_MIN_GRADE 0
#define KV_NORM_GRADE 0 // not queried yet
#define KV_NORM_COLOR TQt::black
#define KV_NORM_TEXT I18N_NOOP("Not Queried Yet")
#define KV_LEV1_GRADE 1
#define KV_LEV1_TEXT I18N_NOOP("Level 1")
#define KV_LEV2_GRADE 2
#define KV_LEV2_TEXT I18N_NOOP("Level 2")
#define KV_LEV3_GRADE 3
#define KV_LEV3_TEXT I18N_NOOP("Level 3")
#define KV_LEV4_GRADE 4
#define KV_LEV4_TEXT I18N_NOOP("Level 4")
#define KV_LEV5_GRADE 5
#define KV_LEV5_TEXT I18N_NOOP("Level 5")
#define KV_LEV6_GRADE 6
#define KV_LEV6_TEXT I18N_NOOP("Level 6")
#define KV_LEV7_GRADE 7
#define KV_LEV7_TEXT I18N_NOOP("Level 7")
#include <time.h>
#include <vector>
using namespace std;
#include "grammarmanager.h"
#include "multiplechoice.h"
typedef signed char grade_t;
typedef unsigned short count_t;
/***************************************************************
* This class contains one expression as original or in one
* translations
**************************************************************/
class KEduVocExpression
{
public:
/** default constructor for an expression in different languages
*/
~KEduVocExpression ();
KEduVocExpression ();
KEduVocExpression (TQString &s, TQString separator, int lesson = 0);
/** Constructor for an expression in different languages
*
* @param expr expression
*/
KEduVocExpression (TQString &expr, int lesson = 0);
/** adds a new translation of this entry
* @param expr translation
* @param grade grade of knowledge of this translation
* @param rev_grade dito, in opposite direction
*/
void addTranslation (TQString expr, grade_t grade=KV_NORM_GRADE,
grade_t rev_grade=KV_NORM_GRADE);
/** removes translation
*
* @param index number of translation 1..x
*/
void removeTranslation (int index);
/** returns index of lesson (0 = none)
*/
int getLesson () const;
/** sets index of lesson (0 = none)
*/
void setLesson (int l);
/** returns original expression of this entry
*/
TQString getOriginal () const;
/** sets original expression of this entry
*/
void setOriginal (const TQString & expr);
/** returns number of max. translations of all expressions
*/
int numTranslations() const;
/** returns flag if entry is "selected" for queries
*/
bool isInQuery() const {return inquery; }
/** set entry "selected"
*/
void setInQuery(bool flag = true) { inquery = flag; }
/** returns flag if entry is activated for queries
*/
bool isActive() const {return active; }
/** set entry active (enabled for queries)
*/
void setActive(bool flag = true) { active = flag; }
/** returns translation of this expression
*
* @param index number of translation
* @result expression or "" if no translation available
*/
TQString getTranslation (int index) const;
/** sets translation of this expression
*
* @param index number of translation
* @param expr expression of this index
*/
void setTranslation (int index, const TQString & expr);
/** sets remark of this expression
*
* @param index index of expression
* @param expr remark of this index
*/
void setPronunce (int index, const TQString & expr);
/** returns pronunciation of this expression
*
* @param index index of expression
* @result pronunciation or "" if none available
*/
TQString getPronunce (int index) const;
/** returns remarks of this expression
*
* @param index index of expression
* @result remark or "" if no remark available
*/
TQString getRemark (int index) const;
/** sets remark of this expression
*
* @param index index of expression
* @param expr remark of this index
*/
void setRemark (int index, const TQString & expr);
/** sets false friend of this expression
*
* @param index index of expression
* @param expr false friend of this index
* @param rev_grade dito, in opposite direction
*/
void setFauxAmi (int index, const TQString & expr, bool rev_ami = false);
/** returns false friend of this expression
*
* @param index index of expression
* @param rev_grade dito, in opposite direction
* @result false friend or "" if no string available
*/
TQString getFauxAmi (int index, bool rev_ami = false) const;
/** sets synonym this expression
*
* @param index index of expression
* @param expr synonym of this index
*/
void setSynonym (int index, const TQString & expr);
/** returns synonym of this expression
*
* @param index index of expression
* @result synonym or "" if no string available
*/
TQString getSynonym (int index) const;
/** sets example this expression
*
* @param index index of expression
* @param expr example of this index
*/
void setExample (int index, const TQString & expr);
/** returns example of this expression
*
* @param index index of expression
* @result example or "" if no string available
*/
TQString getExample (int index) const;
/** sets usage label this expression
*
* @param index index of expression
* @param usage usage label of this index
*/
void setUsageLabel (int index, const TQString & usage);
/** returns usage label of this expression
*
* @param index index of expression
* @result usage or "" if no string available
*/
TQString getUsageLabel (int index) const;
/** sets paraphrase of this expression
*
* @param index index of expression
* @param usage paraphrase of this index
*/
void setParaphrase (int index, const TQString & usage);
/** returns paraphrase of this expression
*
* @param index index of expression
* @result paraphrase or "" if no string available
*/
TQString getParaphrase (int index) const;
/** sets antonym this expression
*
* @param index index of expression
* @param expr antonym of this index
*/
void setAntonym (int index, const TQString & expr);
/** returns antonym of this expression
*
* @param index index of expression
* @result antonym or "" if no string available
*/
TQString getAntonym (int index) const;
/** returns type of this expression
*
* @result type or "" if no type available
*/
TQString getType (int index) const;
/** all langs have same type ?
*
* @result true if all have same type
*/
bool uniqueType () const;
/** sets type of this expression
*
* @param index index of type
* @param type type of this expression ("" = none)
*/
void setType (int index, const TQString &type);
/** returns grade of given translation as string
*
* @param index index of expression
* @param rev_grade dito, in opposite direction
* @result number of knowlegde: 0=known, x=numbers not knows
*/
TQString gradeStr (int index, bool rev_grade = false) const;
/** sets grade of given translation
*
* @param index index of translation
* @param grade number of knowlegde: 0=known, x=numbers not knows
*/
void setGrade (int index, grade_t grade, bool rev_grade = false);
/** returns grade of given translation as int
*
* @param index index of translation
* @param rev_grade dito, in opposite direction
* @result number of knowlegde: 0=known, x=numbers not knows
*/
grade_t getGrade (int index, bool rev_grade = false) const;
/** increments grade of given translation
*
* @param index index of translation
* @param rev_grade dito, in opposite direction
*/
void incGrade (int index, bool rev_grade = false);
/** decrements grade of given translation
*
* @param index index of translation
* @param rev_grade dito, in opposite direction
*/
void decGrade (int index, bool rev_grade = false);
/** returns last query date of given translation as int
*
* @param index index of translation
* @param rev_date dito, in opposite direction
*/
time_t getQueryDate (int index, bool rev_date = false) const;
/** set last query date of given translation as int
*
* @param index index of translation
* @param rev_date dito, in opposite direction
*/
void setQueryDate (int index, time_t date, bool rev_date = false);
/** returns conjugations if available
*
* @param index index of translation
*/
Conjugation getConjugation(int index) const;
/** sets conjugations
*
* @param index index of translation
* @param con conjugation block
*/
void setConjugation(int index, const Conjugation &con);
/** returns comparison if available
*
* @param index index of translation
*/
Comparison getComparison(int index) const;
/** sets comparison
*
* @param index index of translation
* @param con comparison block
*/
void setComparison(int index, const Comparison &comp);
/** returns multiple choice if available
*
* @param index index of multiple choice
*/
MultipleChoice getMultipleChoice(int index) const;
/** sets multiple choice
*
* @param index index of translation
* @param con multiple choice block
*/
void setMultipleChoice(int index, const MultipleChoice &mc);
/** returns query count of given translation as int
*
* @param index index of translation
* @param rev_count dito, in opposite direction
*/
count_t getQueryCount (int index, bool rev_count = false) const;
/** set query count of given translation as int
*
* @param index index of translation
* @param rev_count dito, in opposite direction
*/
void setQueryCount (int index, count_t count, bool rev_count = false);
/** returns bad query count of given translation as int
*
* @param index index of translation
* @param rev_count dito, in opposite direction
*/
count_t getBadCount (int index, bool rev_count = false) const;
/** set bad query count of given translation as int
*
* @param index index of translation
* @param rev_count dito, in opposite direction
*/
void setBadCount (int index, count_t count, bool rev_count = false);
/** increment bad query count of given translation by 1
*
* @param index index of translation
* @param rev_count dito, in opposite direction
*/
void incBadCount (int index, bool rev_count = false);
/** increment query count of given translation by 1
*
* @param index index of translation
* @param rev_count dito, in opposite direction
*/
void incQueryCount (int index, bool rev_count = false);
protected:
void Init();
private:
TQString origin;
// all these vectors must be deleted in removeTranslation()
vector<TQString> exprtypes;
vector<TQString> translations;
vector<TQString> remarks;
vector<TQString> usageLabels;
vector<TQString> paraphrases;
vector<TQString> fauxAmi;
vector<TQString> rev_fauxAmi;
vector<TQString> synonym;
vector<TQString> example;
vector<TQString> antonym;
vector<TQString> pronunces;
vector<grade_t> grades;
vector<grade_t> rev_grades;
vector<count_t> qcounts;
vector<count_t> rev_qcounts;
vector<count_t> bcounts;
vector<count_t> rev_bcounts;
vector<time_t> qdates;
vector<time_t> rev_qdates;
vector<Conjugation> conjugations;
vector<Comparison> comparisons;
vector<MultipleChoice> mcs;
int lesson;
bool inquery;
bool active;
};
#endif // KEduVocExpression_H