parley
AdjQueryDlg.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 "AdjQueryDlg.h"
00026
00027 #include <QTimer>
00028 #include <QPushButton>
00029 #include <QLineEdit>
00030 #include <QLabel>
00031
00032 #include <KLocale>
00033 #include <KRandomSequence>
00034
00035 AdjQueryDlg::AdjQueryDlg(KEduVocDocument *doc, QWidget *parent) : PracticeDialog(i18n("Comparison Training"), doc, parent)
00036 {
00037 mw = new Ui::AdjQueryDlgForm();
00038 mw->setupUi(mainWidget());
00039
00040 mw->stopPracticeButton->setIcon( KIcon("process-stop") );
00041 mw->verify->setIcon(KIcon("dialog-ok"));
00042 mw->know_it->setIcon(KIcon("go-next"));
00043 mw->dont_know->setIcon(KIcon("go-next"));
00044
00045 connect(mw->stopPracticeButton, SIGNAL(clicked()), SLOT(close()));
00046 connect(mw->dont_know, SIGNAL(clicked()), SLOT(skipUnknown()));
00047 connect(mw->know_it, SIGNAL(clicked()), SLOT(skipKnown()));
00048 connect(mw->verify, SIGNAL(clicked()), SLOT(verifyClicked()));
00049 connect(mw->show_all, SIGNAL(clicked()), SLOT(showSolution()));
00050
00051 connect(mw->lev1Field, SIGNAL(textChanged(const QString&)), SLOT(lev1Changed(const QString&)));
00052 connect(mw->lev2Field, SIGNAL(textChanged(const QString&)), SLOT(lev2Changed(const QString&)));
00053 connect(mw->lev3Field, SIGNAL(textChanged(const QString&)), SLOT(lev3Changed(const QString&)));
00054
00055 mw->dont_know->setShortcut(QKeySequence(Qt::Key_Escape));
00056
00057 mw->know_it->setVisible(Prefs::skipKnownEnabled());
00058
00059 mw->countbar->setFormat("%v/%m");
00060 mw->timebar->setFormat("%v");
00061
00062 mw->imageGraphicsView->setVisible(false);
00063
00064 KConfigGroup cg(KGlobal::config(), "AdjQueryDlg");
00065 restoreDialogSize(cg);
00066 }
00067
00068
00069 AdjQueryDlg::~AdjQueryDlg()
00070 {
00071 KConfigGroup cg(KGlobal::config(), "AdjQueryDlg");
00072 KDialog::saveDialogSize(cg);
00073 }
00074
00075
00076 void AdjQueryDlg::setEntry(TestEntry* entry)
00077 {
00078 PracticeDialog::setEntry(entry);
00079
00081
00082 mw->timebar->setVisible(Prefs::practiceTimeout());
00083 mw->timelabel->setVisible(Prefs::practiceTimeout());
00084 mw->show_all->setDefault(true);
00085 QString s;
00086
00087 mw->progCount->setText(s);
00088
00089 mw->lev1Field->setText("");
00090 mw->lev2Field->setText("");
00091 mw->lev3Field->setText("");
00092
00093 KRandomSequence rs;
00094 int sel = rs.getLong(3);
00095 switch (sel) {
00096 case 0:
00097 mw->lev1Field->setText(m_entry->entry()->translation(Prefs::solutionLanguage())->text());
00098 break;
00099
00100 case 1:
00101 mw->lev2Field->setText(m_entry->entry()->translation(Prefs::solutionLanguage())->comparative());
00102 break;
00103
00104 case 2:
00105 mw->lev3Field->setText(m_entry->entry()->translation(Prefs::solutionLanguage())->superlative());
00106 break;
00107 }
00108
00109 mw->lev1Field->setEnabled(!m_entry->entry()->translation(Prefs::solutionLanguage())->text().isEmpty());
00110 mw->lev2Field->setEnabled(!m_entry->entry()->translation(Prefs::solutionLanguage())->comparative().isEmpty());
00111 mw->lev3Field->setEnabled(!m_entry->entry()->translation(Prefs::solutionLanguage())->superlative().isEmpty());
00112
00113 resetAllFields();
00114
00115 mw->lev1Field->setFocus();
00116
00117 imageShowFromEntry( mw->imageGraphicsView );
00118 }
00119
00120
00121 void AdjQueryDlg::showSolution()
00122 {
00123 resetAllFields();
00124 mw->lev1Field->setText(m_entry->entry()->translation(Prefs::solutionLanguage())->text());
00125 mw->lev2Field->setText(m_entry->entry()->translation(Prefs::solutionLanguage())->comparative());
00126 mw->lev3Field->setText(m_entry->entry()->translation(Prefs::solutionLanguage())->superlative());
00127
00128 mw->dont_know->setDefault(true);
00129 setAnswerTainted();
00130 }
00131
00132
00133 void AdjQueryDlg::verifyClicked()
00134 {
00135 bool all_known = true;
00136
00137 double result = verifyAnswer(mw->lev1Field->text(), m_entry->entry()->translation(Prefs::solutionLanguage())->text());
00138 if ( result == 1.0 ) {
00139 setWidgetStyle( mw->lev1Field, PositiveResult );
00140 } else {
00141 setWidgetStyle( mw->lev1Field, NegativeResult );
00142 all_known = false;
00143 }
00144
00145 result = verifyAnswer(mw->lev2Field->text(), m_entry->entry()->translation(Prefs::solutionLanguage())->comparative());
00146 if ( result == 1.0 ) {
00147 setWidgetStyle( mw->lev2Field, PositiveResult );
00148 } else {
00149 setWidgetStyle( mw->lev2Field, NegativeResult );
00150 all_known = false;
00151 }
00152
00153 result = verifyAnswer(mw->lev3Field->text(), m_entry->entry()->translation(Prefs::solutionLanguage())->superlative());
00154 if ( result == 1.0 ) {
00155 setWidgetStyle( mw->lev3Field, PositiveResult );
00156 } else {
00157 setWidgetStyle( mw->lev3Field, NegativeResult );
00158 all_known = false;
00159 }
00160
00161 if (all_known) {
00162
00163 resultCorrect();
00164 emit showSolutionFinished();
00165 } else {
00166 mw->dont_know->setDefault(true);
00167 setAnswerTainted();
00168 }
00169 }
00170
00171
00172 void AdjQueryDlg::resetAllFields()
00173 {
00174 setWidgetStyle(mw->lev1Field, Default);
00175 setWidgetStyle(mw->lev2Field, Default);
00176 setWidgetStyle(mw->lev3Field, Default);
00177 }
00178
00179
00180 void AdjQueryDlg::lev1Changed(const QString&)
00181 {
00182 mw->verify->setDefault(true);
00183 setWidgetStyle(mw->lev1Field);
00184 }
00185
00186
00187 void AdjQueryDlg::lev2Changed(const QString&)
00188 {
00189 mw->verify->setDefault(true);
00190 setWidgetStyle(mw->lev2Field);
00191 }
00192
00193
00194 void AdjQueryDlg::lev3Changed(const QString&)
00195 {
00196 mw->verify->setDefault(true);
00197 setWidgetStyle(mw->lev3Field);
00198 }
00199
00200
00201 void AdjQueryDlg::setProgressCounter(int current, int total)
00202 {
00203 mw->countbar->setMaximum(total);
00204 mw->countbar->setValue(current);
00205 }
00206
00207 #include "AdjQueryDlg.moc"
00208
00209