• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • kdeedu
  • Sitemap
  • Contact Us
 

parley

SimpleQueryDlg.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002 
00003                        query dialog for properties
00004 
00005     -----------------------------------------------------------------------
00006 
00007     begin         : Sun Apr 9 18:55:34 2000
00008 
00009     copyright     : (C) 1999-2001 Ewald Arnold <kvoctrain@ewald-arnold.de>
00010                     (C) 2004-2007 Peter Hedlund <peter.hedlund@kdemail.net>
00011 
00012     -----------------------------------------------------------------------
00013 
00014  ***************************************************************************
00015 
00016  ***************************************************************************
00017  *                                                                         *
00018  *   This program is free software; you can redistribute it and/or modify  *
00019  *   it under the terms of the GNU General Public License as published by  *
00020  *   the Free Software Foundation; either version 2 of the License, or     *
00021  *   (at your option) any later version.                                   *
00022  *                                                                         *
00023  ***************************************************************************/
00024 
00025 #include "SimpleQueryDlg.h"
00026 
00027 #include <QTimer>
00028 #include <QTextEdit>
00029 #include <QLabel>
00030 #include <QPushButton>
00031 #include <QWidget>
00032 
00033 #include <KLocale>
00034 
00035 #include <keduvocdocument.h>
00036 
00037 SimpleQueryDlg::SimpleQueryDlg(KEduVocDocument *doc, QWidget *parent) : PracticeDialog("", doc, parent)
00038 {
00039     mw = new Ui::SimpleQueryDlgForm();
00040     mw->setupUi(mainWidget());
00041 
00042     mw->stopPracticeButton->setIcon( KIcon("process-stop") );
00043     mw->verify->setIcon(KIcon("dialog-ok"));
00044     mw->know_it->setIcon(KIcon("go-next"));
00045     mw->dont_know->setIcon(KIcon("go-next"));
00046 
00047     connect(mw->stopPracticeButton, SIGNAL(clicked()), SLOT(close()));
00048     connect(mw->dont_know, SIGNAL(clicked()), SLOT(dontKnowClicked()));
00049     connect(mw->know_it, SIGNAL(clicked()), SLOT(knowItClicked()));
00050     connect(mw->verify, SIGNAL(clicked()), SLOT(verifyClicked()));
00051     connect(mw->show_all, SIGNAL(clicked()), SLOT(showSolution()));
00052     connect(mw->show_more, SIGNAL(clicked()), SLOT(showMoreClicked()));
00053     connect(mw->answerField, SIGNAL(textChanged()), SLOT(slotAnswerChanged()));
00054 
00055     mw->dont_know->setShortcut(QKeySequence(Qt::Key_Escape));
00056 
00057     mw->countbar->setFormat("%v/%m");
00058     mw->timebar->setFormat("%v");
00059 
00060     mw->know_it->setVisible(Prefs::skipKnownEnabled());
00061     mw->imageGraphicsView->setVisible(false);
00062 
00063     KConfigGroup cg(KGlobal::config(), "SimpleQueryDialog");
00064     restoreDialogSize(cg);
00065 }
00066 
00067 
00068 SimpleQueryDlg::~SimpleQueryDlg()
00069 {
00070     KConfigGroup cg(KGlobal::config(), "SimpleQueryDialog");
00071     KDialog::saveDialogSize(cg);
00072 }
00073 
00074 
00075 void SimpleQueryDlg::setEntry(TestEntry* entry)
00076 {
00077     PracticeDialog::setEntry(entry);
00078 
00079     mw->timebar->setEnabled(Prefs::practiceTimeout());
00080     mw->timelabel->setEnabled(Prefs::practiceTimeout());
00081     mw->queryField->setFont(Prefs::tableFont());
00082     mw->answerField->setFont(Prefs::tableFont());
00083     mw->answerField->setText("");
00084 
00085     int column = Prefs::solutionLanguage();
00086 
00087     QString s;
00088     switch (m_testType) {
00089     case Prefs::EnumTestType::SynonymTest: {
00090             mw->queryLabel->setText(i18n("Expression"));
00091             mw->instructionLabel->setText(i18n("Enter the synonym:"));
00092             setWindowTitle(i18n("Synonym Training"));
00093             KEduVocTranslation *synonym = m_entry->entry()->translation(column)->synonyms()[0];
00094             answerstring = synonym->text();
00095             mw->queryField->setAlignment(Qt::AlignVCenter);
00096             mw->queryField->setText( m_entry->entry()->translation(column)->text() );
00097             setQueryFieldWordwrap();
00098         }
00099         break;
00100 
00101     case Prefs::EnumTestType::AntonymTest: {
00102             mw->queryLabel->setText(i18n("Expression"));
00103             mw->instructionLabel->setText(i18n("Enter the antonym:"));
00104             setWindowTitle(i18n("Antonym Training"));
00105             KEduVocTranslation *antonym = m_entry->entry()->translation(column)->antonyms()[0];
00106             answerstring = antonym->text();
00107             mw->queryField->setText( m_entry->entry()->translation(column)->text() );
00108             setQueryFieldWordwrap();
00109         }
00110         break;
00111 
00112     case Prefs::EnumTestType::ParaphraseTest: {
00113             mw->queryLabel->setText(i18n("Paraphrase"));
00114             mw->instructionLabel->setText(i18n("Enter the word:"));
00115             setWindowTitle(i18n("Paraphrase Training"));
00116             mw->queryField->setText(m_entry->entry()->translation(column)->paraphrase());
00117             answerstring = m_entry->entry()->translation(column)->text();
00118             setQueryFieldWordwrap();
00119         }
00120         break;
00121 
00122     case Prefs::EnumTestType::ExampleTest: {
00123             mw->queryLabel->setText(i18n("Example sentence"));
00124             mw->instructionLabel->setText(i18n("Fill in the missing word:"));
00125             setWindowTitle(i18n("Example Training"));
00126             s = m_entry->entry()->translation(column)->example();
00127             answerstring = m_entry->entry()->translation(column)->text().simplified();
00128             int pos = -1;
00129             while ((pos = s.indexOf(answerstring)) >= 0) {
00130                 s.remove(pos, answerstring.length());
00131                 s.insert(pos, "<font color=\"#FF0000\"><b>...</b></font>");
00132             }
00133             mw->queryField->setText(s);
00134             setQueryFieldWordwrap();
00135         }
00136         break;
00137     }
00138 
00139     mw->verify->setDefault(true);
00140     s.setNum(entry->statisticCount());
00141     mw->progCount->setText(s);
00142 
00143     setWidgetStyle(mw->answerField, Default);
00144     mw->answerField->setFocus();
00145 
00146     imageShowFromEntry( mw->imageGraphicsView );
00147 }
00148 
00149 
00150 void SimpleQueryDlg::slotAnswerChanged()
00151 {
00152     mw->verify->setDefault(true);
00153     setWidgetStyle(mw->answerField);
00154 }
00155 
00156 
00157 void SimpleQueryDlg::showMoreClicked()
00158 {
00159     if (mw->answerField->text().length() < answerstring.length()) {
00160         mw->answerField->setText(answerstring.left(mw->answerField->text().length()+1));
00161         mw->dont_know->setDefault(true);
00162     }
00163     setWidgetStyle(mw->answerField);
00164     setAnswerTainted();
00165 }
00166 
00167 
00168 void SimpleQueryDlg::showSolution()
00169 {
00170     mw->answerField->setText(answerstring);
00171     setWidgetStyle( mw->answerField, NegativeResult );
00172     setAnswerTainted();
00173     mw->dont_know->setDefault(true);
00174 }
00175 
00176 
00177 void SimpleQueryDlg::verifyClicked()
00178 {
00179     double result = verifyAnswer(mw->answerField->text(), answerstring);
00180     if ( result == 1.0 ) {
00181         resultCorrect();
00182         emit showSolutionFinished();
00183     } else {
00184         setWidgetStyle( mw->answerField, NegativeResult );
00185         setAnswerTainted();
00186         mw->dont_know->setDefault(true);
00187     }
00188 }
00189 
00190 
00191 void SimpleQueryDlg::knowItClicked()
00192 {
00193     skipKnown();
00194 }
00195 
00196 
00197 void SimpleQueryDlg::dontKnowClicked()
00198 {
00199     skipUnknown();
00200 }
00201 
00202 
00203 void SimpleQueryDlg::setQueryFieldWordwrap()
00204 {
00205     QFontMetrics fm(Prefs::tableFont());
00206     int w = fm.width(mw->queryField->text());
00207     int w2 = mainWidget()->width();
00208     mw->queryField->setAlignment(Qt::AlignVCenter);
00209     mw->queryField->setWordWrap(w > w2);
00210 }
00211 
00212 void SimpleQueryDlg::setProgressCounter(int current, int total)
00213 {
00214     mw->countbar->setMaximum(total);
00215     mw->countbar->setValue(current);
00216 }
00217 
00218 
00219 #include "SimpleQueryDlg.moc"
00220 
00221 

parley

Skip menu "parley"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdeedu

Skip menu "kdeedu"
  • kalzium
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  •   docs
  •   src
  • parley
  •   stepcore
Generated for kdeedu by doxygen 1.5.7
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal