/** This file is part of Kiten, a KDE Japanese Reference Tool... Copyright (C) 2001 Jason Katz-Brown (C) 2005 Paul Temple 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. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA **/ #ifndef LEARN_H #define LEARN_H #include #include #include "widgets.h" class TDEAction; class KPushButton; class TQButtonGroup; class TQListViewItem; class TQSplitter; class TQTabWidget; // Item that sorts all columns numerically class LearnItem : public TQListViewItem { public: LearnItem(TQListView *parent, TQString label1, TQString label2 = TQString(), TQString label3 = TQString(), TQString label4 = TQString(), TQString label5 = TQString(), TQString label6 = TQString(), TQString label7 = TQString(), TQString label8 = TQString()); int compare(TQListViewItem *item, int col, bool ascending) const; }; class Learn : public TDEMainWindow { TQ_OBJECT public: Learn(Dict::Index *, TQWidget *parent = 0, const char *name = 0); ~Learn(); bool closeWindow(); struct scoreCompare; signals: void destroyed(Learn *); void linkClicked(const TQString &); void configureLearn(); public slots: void showKanji(TQListViewItem *); void updateQuizConfiguration(); protected: virtual bool queryClose(); private slots: void read(const KURL &); void write(const KURL &); void saveScores(); void next(); void prev(); void update(); void updateGrade(); void random(); void add(); void addAll(); void add(Dict::Entry, bool noEmit = false); void del(); void cheat(); void tabChanged(TQWidget *); void itemSelectionChanged(); void save(); void saveAs(); void setDirty(); void setClean(); void open(); void openNew(); void print(); void updateQuiz(); void answerClicked(int); void qnew(); void qKanjiClicked(); void finishCtor(); private: bool initialized; KURL filename; bool warnClose(); TQTabWidget *Tabs; TQSplitter *listTop; TQWidget *quizTop; ResultView *View; TQValueList list; TQValueListIterator current; Dict::Index *index; TDEListView *List; KPushButton *Save; KPushButton *Del; KPushButton *qDel; bool isMod; // Quiz, an app to itself in a tabwidget :) static const int numberOfAnswers; TQButtonGroup *answers; TQPushButton *qKanji; TQListViewItem *prevItem; TQListViewItem *curItem; // if noEmit == true, don't emit dirty void addItem(TQListViewItem *, bool noEmit = false); void qupdate(); int seikai; bool nogood; TQString shortenString(const TQString &); // Creates a random meaning not on the lists and adds the meaning // to the list. TQString randomMeaning(TQStringList &oldMeanings); TDEAction *forwardAct; TDEAction *printAct; TDEAction *backAct; TDEAction *cheatAct; TDEAction *saveAct; TDEAction *openAct; TDEAction *newAct; TDEAction *saveAsAct; TDEAction *addAct; TDEAction *addAllAct; TDEAction *removeAct; TDEAction *randomAct; TDEListAction *gradeAct; int getCurrentGrade(void); void setCurrentGrade(int grade); int quizOn; int guessOn; inline void numChanged(); }; #endif