/*************************************************************************** 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ähler fü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ä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ü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 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