parley
SimpleQueryDlg.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
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