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