summaryrefslogtreecommitdiffstats
path: root/ktouch/src/ktouch.h
diff options
context:
space:
mode:
Diffstat (limited to 'ktouch/src/ktouch.h')
-rw-r--r--ktouch/src/ktouch.h184
1 files changed, 184 insertions, 0 deletions
diff --git a/ktouch/src/ktouch.h b/ktouch/src/ktouch.h
new file mode 100644
index 00000000..9ebdcfc8
--- /dev/null
+++ b/ktouch/src/ktouch.h
@@ -0,0 +1,184 @@
+/***************************************************************************
+ * ktouch.h *
+ * -------- *
+ * Copyright (C) 2000 by Håvard Frøiland, 2004 by Andreas Nicolai *
+ * ghorwin@users.sourceforge.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 KTOUCH_H
+#define KTOUCH_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qcolor.h>
+#include <qstringlist.h>
+#include <qvaluevector.h>
+
+#include <kmainwindow.h>
+#include <kapplication.h>
+#include <kurl.h>
+
+class QLabel;
+class KToggleAction;
+class KActionMenu;
+class KSelectAction;
+
+class KTouchStatus;
+class KTouchSlideLine;
+class KTouchKeyboardWidget;
+class KTouchTrainer;
+
+class KTouchPrefTrainingLayout;
+class KTouchPrefKeyboardLayout;
+class KTouchPrefGeneralLayout;
+class KTouchPrefColorsLayout;
+
+#include "ktouchlecture.h"
+#include "ktouchstatisticsdata.h"
+
+/// This is the main window of KTouch.
+///
+/// It handles the lecture, training data, status and all other widgets that are
+/// needed to get the program running. Since all special tasks are delegated to the
+/// appropriate widgets and classes, the remaining code in KTouch is basically the
+/// startup and KAction stuff.<p>
+/// A word about dialogs. All dialogs in this program are not created by default.
+/// Instead they are created "on first use". This
+/// saves memory (because we don't need them always) and the startup speed increases.<p>
+/// One central function - the keyPressEvent() - is responsable for getting the actual
+/// typed char. It delegates the character to the trainer
+/// (KTouchTrainer), which will then process it. So the heavy work lies in the trainer
+/// object and all the widgets.
+class KTouch : public KMainWindow {
+ Q_OBJECT
+ public:
+ /// Constructor, creates the KTouch proggy.
+ KTouch();
+ /// Destructor, releases memory of KTouch trainer.
+ ~KTouch();
+
+ /// Returns the available lecture files
+ const QStringList& lectureFiles() const { return m_lectureFiles; }
+ /// Returns the statistics object for the current lecture (as reference)
+ KTouchLectureStats& getCurrentLectureStats();
+ /// Clears the statistics data.
+ void clearStatistics();
+ /// Updates the status bar text.
+ void changeStatusbarMessage(const QString& text);
+ /// Updates the status bar statistics.
+ void changeStatusbarStats(unsigned int level_correct, unsigned int level_total, unsigned int level_words,
+ unsigned int session_correct, unsigned int session_total, unsigned int session_words);
+
+ public slots:
+ /// Will be called when the "Apply"-button has been pressed in the preferences
+ /// dialog or when the user accepted the changes using the "OK"-button.
+ void applyPreferences();
+
+ /// Called from the configuration dialog.
+ void configOverrideLectureFontToggled(bool on);
+ /// Called from the configuration dialog.
+ void configOverrideKeyboardFontToggled(bool on);
+ /// Called from the configuration dialog.
+ void configAutoLevelChangeToggled(bool on);
+ /// Called from the configuration dialog.
+ void configCommonColorsToggled(bool on);
+
+ void fileOpenLecture(); ///< The action File->Open lecture...
+ void fileEditLecture(); ///< The action File->Edit lecture...
+ void fileEditColors(); ///< The action File->Edit colors...
+ void fileEditKeyboard(); ///< The action File->Edit keyboard...
+ void fileQuit(); ///< The action File->Quit
+ void trainingNewSession(); ///< The action Training->Start new training session...
+ void trainingPause(); ///< The action Training->Pause training
+ void trainingStatistics(); ///< The action Training->Show training statistics...
+ void optionsPreferences(); ///< The action Settings->Configure KTouch...
+
+ /// Quick-changes the keyboard layout (called from menu).
+ void changeKeyboard(int num);
+ /// Quick-changes the colour scheme used on the keyboard (called from menu).
+ void changeColor(int num);
+ /// Quick-changes the current training lecture file (called from menu).
+ void changeLecture(int num);
+
+ protected:
+ /// Reimplementated to save preferences and
+ bool queryExit();
+ /// Some layout fixes here...
+ void resizeEvent(QResizeEvent *);
+ /// Accepts a typed char.
+ void keyPressEvent(QKeyEvent *keyEvent);
+
+ void imEndEvent (QIMEvent *e);
+
+ private:
+ // *** BEGIN - Session management ***
+ /// Will be called when this app is restored due to session management.
+ void readProperties(KConfig *config);
+ /// Will be called when the app should save its state for session management purposes.
+ void saveProperties(KConfig *config);
+ // *** END - Session management ***
+
+ /// Initialises the program during a normal startup
+ void init();
+ /// Creates the layout and GUI setup for a practice session
+ void initTrainingSession();
+ /// Creates the (standard) actions and entries in the menu.
+ void setupActions();
+ /// This function updates the font used in the sliding line of a font suggestions was
+ /// made for the current lecture.
+ /// Call this function whenever you have read a new lecture file to update
+ /// the slide line widget.
+ void updateFontFromLecture();
+ /// This function populates the file lists with the installed training, keyboard and
+ /// examination files.
+ void updateFileLists();
+ /// Updates the check mark in the lecture-quick-selection menu depending on the
+ /// lecture in Prefs::currentLectureFile().
+ void updateLectureActionCheck();
+ /// Updates the check mark in the keyboard-quick-selection menu depending on the
+ /// lecture in Prefs::currentKeyboardFile().
+ void updateKeyboardActionCheck();
+
+ // *** Public member variables ***
+ KAction *m_trainingPause; ///< Action for "pause training session".
+
+ KSelectAction *m_keyboardLayoutAction;
+ KSelectAction *m_keyboardColorAction;
+ KSelectAction *m_defaultLectureAction;
+
+ KTouchStatus *m_statusWidget; ///< Pointer to the status widget on top of the main widget.
+ KTouchSlideLine *m_slideLineWidget; ///< Pointer to the sliding line widget.
+ KTouchKeyboardWidget *m_keyboardWidget; ///< Pointer to the keyboard widget.
+ KTouchTrainer *m_trainer; ///< The training 'master' (runs the training).
+ KTouchLecture m_lecture; ///< The lecture data.
+
+ KTouchPrefGeneralLayout * m_pageGeneral; ///< The general configuration page.
+ KTouchPrefTrainingLayout * m_pageTraining; ///< The training configuration page.
+ KTouchPrefKeyboardLayout * m_pageKeyboard; ///< The keyboard configuration page.
+ KTouchPrefColorsLayout * m_pageColors; ///< The color scheme configuration page.
+
+ QStringList m_lectureFiles; ///< A list of all default lecture files.
+ QStringList m_lectureTitles; ///< A list of the titles of all default lecture files.
+
+ QStringList m_examinationFiles; ///< A list of all default examination files.
+ QStringList m_examinationTitles; ///< A list of the titles of all default examination files.
+
+ QStringList m_keyboardFiles; ///< A list of all default keyboard layout files.
+ QStringList m_keyboardTitles; ///< A list of the titles of all default keyboard layout files.
+
+ KTouchStatisticsData m_stats; ///< All user statistics are kept here.
+
+ QChar m_lastDeadKey; ///< Temporary storage of last dead key.
+};
+
+/// A global pointer to the main widget (actually only used to retrieve some data).
+extern KTouch * KTouchPtr;
+
+#endif // KTOUCH_H