summaryrefslogtreecommitdiffstats
path: root/kvoctrain/kvoctrain/query-dialogs/AdjQueryDlg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kvoctrain/kvoctrain/query-dialogs/AdjQueryDlg.cpp')
-rw-r--r--kvoctrain/kvoctrain/query-dialogs/AdjQueryDlg.cpp303
1 files changed, 303 insertions, 0 deletions
diff --git a/kvoctrain/kvoctrain/query-dialogs/AdjQueryDlg.cpp b/kvoctrain/kvoctrain/query-dialogs/AdjQueryDlg.cpp
new file mode 100644
index 00000000..c643ba01
--- /dev/null
+++ b/kvoctrain/kvoctrain/query-dialogs/AdjQueryDlg.cpp
@@ -0,0 +1,303 @@
+/***************************************************************************
+
+ query dialog for adjectives
+
+ -----------------------------------------------------------------------
+
+ begin : Sat Dec 4 15:09:18 1999
+
+ copyright : (C) 1999-2001 Ewald Arnold <kvoctrain@ewald-arnold.de>
+ (C) 2001 The KDE-EDU team
+ (C) 2004-2005 Peter Hedlund <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. *
+ * *
+ ***************************************************************************/
+
+
+#include "AdjQueryDlg.h"
+
+#include <kv_resource.h>
+#include <langset.h>
+
+#include <kapplication.h>
+#include <kstandarddirs.h>
+#include <klocale.h>
+#include <kprogress.h>
+
+#include <qtimer.h>
+#include <qpushbutton.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+
+AdjQueryDlg::AdjQueryDlg
+(
+ QString type,
+ int entry,
+ int col,
+ int query_cycle,
+ int query_num,
+ int query_startnum,
+ kvoctrainExpr *exp,
+ kvoctrainDoc *doc,
+ const Comparison &_comp)
+ : QueryDlgBase(i18n("Comparison Training"))
+{
+ mw = new AdjQueryDlgForm(this);
+ setMainWidget(mw);
+
+ connect(mw->dont_know, SIGNAL(clicked()), SLOT(dontKnowClicked()) );
+ connect(mw->know_it, SIGNAL(clicked()), SLOT(knowItClicked()) );
+ connect(mw->verify, SIGNAL(clicked()), SLOT(verifyClicked()) );
+ connect(mw->show_all, SIGNAL(clicked()), SLOT(showAllClicked()) );
+
+ connect(mw->lev1Field, SIGNAL(returnPressed()), SLOT(returnPressed()) );
+ connect(mw->lev2Field, SIGNAL(returnPressed()), SLOT(returnPressed()) );
+ connect(mw->lev3Field, SIGNAL(returnPressed()), SLOT(returnPressed()) );
+
+ connect(mw->lev1Field, SIGNAL(textChanged(const QString&)), SLOT(lev1Changed(const QString&)) );
+ connect(mw->lev2Field, SIGNAL(textChanged(const QString&)), SLOT(lev2Changed(const QString&)) );
+ connect(mw->lev3Field, SIGNAL(textChanged(const QString&)), SLOT(lev3Changed(const QString&)) );
+
+ qtimer = 0;
+
+ mw->lev1Label->setBuddy(mw->lev1Field);
+ mw->lev2Label->setBuddy(mw->lev2Field);
+ mw->lev3Label->setBuddy(mw->lev3Field);
+
+ setQuery (type, entry, col, query_cycle, query_num, query_startnum, exp, doc, _comp);
+ mw->countbar->setFormat("%v/%m");
+ mw->timebar->setFormat("%v");
+ resize(configDialogSize("AdjQueryDialog"));
+}
+
+
+AdjQueryDlg::~AdjQueryDlg()
+{
+ saveDialogSize("AdjQueryDialog");
+}
+
+
+void AdjQueryDlg::setQuery(QString,
+ int entry,
+ int col,
+ int q_cycle,
+ int q_num,
+ int q_start,
+ kvoctrainExpr *exp,
+ kvoctrainDoc *doc,
+ const Comparison &_comp)
+{
+ //type_timeout = type_to;
+ kv_doc = doc;
+ kv_exp = exp;
+ q_row = entry;
+ q_ocol = col;
+ mw->timebar->setEnabled(Prefs::showCounter());
+ mw->timelabel->setEnabled(Prefs::showCounter());
+ comp = _comp;
+ mw->show_all->setDefault(true);
+ QString s;
+ s.setNum (q_cycle);
+ mw->progCount->setText (s);
+
+ mw->lev1Field->setText ("");
+ mw->lev2Field->setText ("");
+ mw->lev3Field->setText ("");
+
+ int sel = getRandom(3);
+ switch (sel) {
+ case 0: mw->lev1Field->setText (comp.l1() );
+ break;
+
+ case 1: mw->lev2Field->setText (comp.l2() );
+ break;
+
+ case 2: mw->lev3Field->setText (comp.l3() );
+ break;
+ }
+
+ mw->lev1Field->setEnabled(!comp.l1().isEmpty() );
+ mw->lev2Field->setEnabled(!comp.l2().isEmpty() );
+ mw->lev3Field->setEnabled(!comp.l3().isEmpty() );
+
+ mw->countbar->setTotalSteps(q_start);
+ mw->countbar->setProgress(q_start - q_num + 1);
+
+ int mqtime = Prefs::maxTimePer();
+ if (mqtime > 0) {
+ if (qtimer == 0) {
+ qtimer = new QTimer( this );
+ connect( qtimer, SIGNAL(timeout()), this, SLOT(timeoutReached()) );
+ }
+
+ if (Prefs::queryTimeout() != Prefs::EnumQueryTimeout::NoTimeout) {
+ timercount = mqtime;
+ mw->timebar->setTotalSteps(timercount);
+ mw->timebar->setProgress(timercount);
+ qtimer->start(1000, TRUE);
+ }
+ else
+ mw->timebar->setEnabled(false);
+ }
+ else
+ mw->timebar->setEnabled(false);
+ resetAllFields();
+}
+
+
+void AdjQueryDlg::initFocus() const
+{
+ mw->lev1Field->setFocus();
+}
+
+
+void AdjQueryDlg::showAllClicked()
+{
+ resetAllFields();
+ mw->lev1Field->setText (comp.l1() );
+ mw->lev2Field->setText (comp.l2() );
+ mw->lev3Field->setText (comp.l3() );
+
+ verifyField (mw->lev1Field, comp.l1());
+ verifyField (mw->lev2Field, comp.l2());
+ verifyField (mw->lev3Field, comp.l3());
+
+ mw->dont_know->setDefault(true);
+}
+
+
+void AdjQueryDlg::verifyClicked()
+{
+ bool all_known = true;
+
+ if (!verifyField (mw->lev1Field, comp.l1()) )
+ all_known = false;
+
+ if (!verifyField (mw->lev2Field, comp.l2()) )
+ all_known = false;
+
+ if (!verifyField (mw->lev3Field, comp.l3()) )
+ all_known = false;
+
+ if (all_known)
+// know_it->setDefault(true);
+ knowItClicked();
+ else
+ mw->dont_know->setDefault(true);
+}
+
+
+void AdjQueryDlg::resetAllFields()
+{
+ resetField(mw->lev1Field);
+ resetField(mw->lev2Field);
+ resetField(mw->lev3Field);
+}
+
+
+void AdjQueryDlg::knowItClicked()
+{
+ emit sigQueryChoice(Known);
+}
+
+
+void AdjQueryDlg::timeoutReached()
+{
+ if (timercount > 0) {
+ timercount--;
+ mw->timebar->setProgress(timercount);
+ qtimer->start(1000, TRUE);
+ }
+
+ if (timercount <= 0) {
+ mw->timebar->setProgress(0);
+ if (Prefs::queryTimeout() == Prefs::EnumQueryTimeout::Show) {
+ showAllClicked();
+ mw->dont_know->setDefault(true);
+ }
+ else if (Prefs::queryTimeout() == Prefs::EnumQueryTimeout::Continue)
+ emit sigQueryChoice(Timeout);
+ }
+}
+
+
+void AdjQueryDlg::dontKnowClicked()
+{
+ emit sigQueryChoice(Unknown);
+}
+
+
+void AdjQueryDlg::slotUser2()
+{
+
+ if (qtimer != 0)
+ qtimer->stop();
+
+ emit sigEditEntry (q_row, KV_COL_ORG+q_ocol);
+}
+
+
+void AdjQueryDlg::keyPressEvent( QKeyEvent *e )
+{
+ switch( e->key() )
+ {
+ case Key_Escape:
+ dontKnowClicked();
+ break;
+
+ case Key_Return:
+ case Key_Enter:
+ if (mw->dont_know->isDefault() )
+ dontKnowClicked();
+ else if (mw->know_it->isDefault() )
+ knowItClicked();
+ else if (mw->show_all->isDefault() )
+ showAllClicked();
+ else if (mw->verify->isDefault() )
+ verifyClicked();
+ break;
+
+ default:
+ e->ignore();
+ break;
+ }
+}
+
+
+void AdjQueryDlg::returnPressed()
+{
+}
+
+
+void AdjQueryDlg::lev1Changed(const QString&)
+{
+ mw->verify->setDefault(true);
+ resetField (mw->lev1Field);
+}
+
+
+void AdjQueryDlg::lev2Changed(const QString&)
+{
+ mw->verify->setDefault(true);
+ resetField (mw->lev2Field);
+}
+
+
+void AdjQueryDlg::lev3Changed(const QString&)
+{
+ mw->verify->setDefault(true);
+ resetField (mw->lev3Field);
+}
+
+
+#include "AdjQueryDlg.moc"