|
|
|
|
/***************************************************************************
|
|
|
|
|
kverbosuser.h - description
|
|
|
|
|
-------------------
|
|
|
|
|
begin : Tue Dec 18 2001
|
|
|
|
|
copyright : (C) 2001 by Arnold Kraschinski
|
|
|
|
|
email : arnold.k67@gmx.de
|
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
|
* *
|
|
|
|
|
* 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 KVERBOSUSER_H
|
|
|
|
|
#define KVERBOSUSER_H
|
|
|
|
|
|
|
|
|
|
#include "verbspanish.h"
|
|
|
|
|
|
|
|
|
|
// Der maximale Wert f<>r den falsch bzw. richtig Z<>hler
|
|
|
|
|
#define MAX_WERT 32767
|
|
|
|
|
// Die maximale Anzahl von Anfragen, die ein Verb in der Richtig-Liste verbleibt.
|
|
|
|
|
#define STAY_IN_R_LIST 25
|
|
|
|
|
#define FEHLERHAFT -1
|
|
|
|
|
#define UNGELERNT 0
|
|
|
|
|
#define RICHTIGGEMACHT 1
|
|
|
|
|
#define FALSCHGEWICHT 2
|
|
|
|
|
#define DEFAULTUSER "------"
|
|
|
|
|
#define MAX_RESULTS 10
|
|
|
|
|
|
|
|
|
|
/** Datenstruktur f<>r ein Verb in den Listen
|
|
|
|
|
* right - gibt an, wie oft das Verb schon richtig eingegeben wurde.
|
|
|
|
|
* wrong - gibt an, wie oft das Verb schon falsch eingegeben wurde.
|
|
|
|
|
* counter - ist der Z<EFBFBD>hler f<EFBFBD>r die aufsummierte Gewichtung der Verben bei Verben in den
|
|
|
|
|
* ungelernten bzw. falschen Listen. In der Liste der richtig gelernten Verben
|
|
|
|
|
* ist das ein Z<EFBFBD>hler, der angibt, wie lange das Verb in der Liste bleiben kann.
|
|
|
|
|
* used - zeigt an, ob das Verb in der Verbendatei des Hauptprogrammes vorkommt.
|
|
|
|
|
* status - zeigt an, ob das Verb noch nicht ge<EFBFBD>bt wurde (status = 0), ob es zuletzt falsch
|
|
|
|
|
* eingegeben wurde (status = -1) oder zuletzt richtig (status = 1)
|
|
|
|
|
*/
|
|
|
|
|
class eintrag
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
bool operator== (const eintrag& e) const;
|
|
|
|
|
TQString verb;
|
|
|
|
|
int right;
|
|
|
|
|
int wrong;
|
|
|
|
|
int counter;
|
|
|
|
|
int status;
|
|
|
|
|
bool used;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
typedef TQValueList<eintrag> verbenListe;
|
|
|
|
|
|
|
|
|
|
/** This class holds information about an user of the program. It stores lists of
|
|
|
|
|
* verbs. One list for the words that are in the opened verb file and aren't traines yet.
|
|
|
|
|
* Another list for the words that have been correct. This verbs are stored in the
|
|
|
|
|
* list to present them more rarely to the user. The third list are for verbs entered with
|
|
|
|
|
* errors. This verbs are presented to the user with a greater probability.
|
|
|
|
|
*
|
|
|
|
|
*@author Arnold Kraschinski
|
|
|
|
|
*/
|
|
|
|
|
class KVerbosUser {
|
|
|
|
|
public:
|
|
|
|
|
KVerbosUser(spanishVerbList* pL, TQString n=DEFAULTUSER);
|
|
|
|
|
~KVerbosUser();
|
|
|
|
|
/** fills the lists with the verbs that are in the verb list of the main program */
|
|
|
|
|
void fillList(spanishVerbList* pL);
|
|
|
|
|
/** returns the user name */
|
|
|
|
|
TQString getName() { return name; }
|
|
|
|
|
/** marks all verbs in the R(right) and the F(false) list as unused. That means they can't
|
|
|
|
|
* be a suggestion. This are probably verbs that are stored user data but at the moment
|
|
|
|
|
* they aren't in the used verb list.
|
|
|
|
|
*/
|
|
|
|
|
void deaktivieren();
|
|
|
|
|
/** calculates the Kumulus for the list with the verbs that aren't studied yet and
|
|
|
|
|
* for the list with the verbs that have been wrong. */
|
|
|
|
|
void updateKumulus();
|
|
|
|
|
/** selects a verb out of the verbs that are in the U and F list. That means a
|
|
|
|
|
* verb that hasn't been studied yet or one that was wrong. */
|
|
|
|
|
TQString suggestVerb();
|
|
|
|
|
/** The solution for the suggested verb was right. Now the verb should be deleted from
|
|
|
|
|
* the list of unstudied verbs but added to the list with the right verbs.
|
|
|
|
|
*/
|
|
|
|
|
void right();
|
|
|
|
|
/** The opposite function to the above one. The solution was wrong and the verb has to
|
|
|
|
|
* be moved to the list with the wrong verbs.
|
|
|
|
|
*/
|
|
|
|
|
void wrong();
|
|
|
|
|
/** Saves all the user information to the $TDEHOME/apps/kverbos/data/username.kverbos file */
|
|
|
|
|
bool saveUser(const int& res, const int& num);
|
|
|
|
|
/** Retrieve the old results and the number of sessions */
|
|
|
|
|
bool getResults(int& s, TQString d[], int r[][2]);
|
|
|
|
|
/** returns a pointer to the users verb list */
|
|
|
|
|
verbenListe* getListe() { return &liste; }
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
/** name of the user */
|
|
|
|
|
TQString name;
|
|
|
|
|
/** the list of the verbs that the user has workes with */
|
|
|
|
|
verbenListe liste;
|
|
|
|
|
/** this is the latest selected verb of the list */
|
|
|
|
|
TQString auswahl;
|
|
|
|
|
/** die aufaddierte Summe der gewichteten Verben */
|
|
|
|
|
int kumulus;
|
|
|
|
|
/** an Iterator for the verb list */
|
|
|
|
|
verbenListe::Iterator it;
|
|
|
|
|
/** the number of training sessions that the user has made */
|
|
|
|
|
int sessions;
|
|
|
|
|
/** The results of the last ten seccions */
|
|
|
|
|
TQString date[MAX_RESULTS];
|
|
|
|
|
int result[MAX_RESULTS][2];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|