parley
ArtQueryDlg.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 "ArtQueryDlg.h"
00026
00027 #include <keduvocwordtype.h>
00028 #include <keduvocdocument.h>
00029 #include <KLocale>
00030 #include <QTimer>
00031 #include <QRadioButton>
00032 #include <QLabel>
00033 #include <QPushButton>
00034 #include <QButtonGroup>
00035
00036 ArtQueryDlg::ArtQueryDlg(KEduVocDocument *doc, QWidget *parent) : PracticeDialog(i18nc("@title:window", "Article Training"), doc, parent)
00037 {
00038 mw = new Ui::ArtQueryDlgForm();
00039 mw->setupUi(mainWidget());
00040
00041 mw->stopPracticeButton->setIcon( KIcon("process-stop") );
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
00047 articles = m_doc->identifier(Prefs::solutionLanguage()).article();
00048
00049 connect(mw->dont_know, SIGNAL(clicked()), SLOT(skipUnknown()()));
00050 connect(mw->know_it, SIGNAL(clicked()), SLOT(skipKnown()));
00051 connect(mw->show_all, SIGNAL(clicked()), SLOT(showSolution()));
00052
00053 connect(mw->maleRadio, SIGNAL(clicked()), SLOT(verifyClicked()));
00054 connect(mw->femaleRadio, SIGNAL(clicked()), SLOT(verifyClicked()));
00055 connect(mw->neutralRadio, SIGNAL(clicked()), SLOT(verifyClicked()));
00056
00057 mw->dont_know->setShortcut(QKeySequence(Qt::Key_Escape));
00058
00059 mw->countbar->setFormat("%v/%m");
00060 mw->timebar->setFormat("%v");
00061
00062 mw->know_it->setVisible(Prefs::skipKnownEnabled());
00063 mw->imageGraphicsView->setVisible(false);
00064
00065 KConfigGroup cg(KGlobal::config(), "ArtQueryDlg");
00066 restoreDialogSize(cg);
00067 }
00068
00069
00070 ArtQueryDlg::~ArtQueryDlg()
00071 {
00072 KConfigGroup cg(KGlobal::config(), "ArtQueryDlg");
00073 KDialog::saveDialogSize(cg);
00074 }
00075
00076
00077 void ArtQueryDlg::setEntry(TestEntry* entry)
00078 {
00079 PracticeDialog::setEntry(entry);
00080
00081 mw->timebar->setVisible(Prefs::practiceTimeout());
00082 mw->timelabel->setVisible(Prefs::practiceTimeout());
00083 mw->show_all->setDefault(true);
00084
00085 QString def, indef;
00086
00087 KEduVocWordFlag::Flags singular = KEduVocWordFlag::Singular;
00088 KEduVocWordFlag::Flags definite = KEduVocWordFlag::Definite;
00089 KEduVocWordFlag::Flags indefinite = KEduVocWordFlag::Indefinite;
00090 KEduVocWordFlag::Flags male = KEduVocWordFlag::Masculine;
00091 KEduVocWordFlag::Flags female = KEduVocWordFlag::Feminine;
00092 KEduVocWordFlag::Flags neutral = KEduVocWordFlag::Neuter;
00093
00094
00095 QString noun = m_entry->entry()->translation(Prefs::solutionLanguage())->text();
00096
00097
00098 QStringList qsl = noun.split(QRegExp("\\s"), QString::SkipEmptyParts);
00099 QMutableStringListIterator qsli(qsl);
00100 while (qsli.hasNext())
00101 if (articles.isArticle(qsli.next()))
00102 qsli.remove();
00103
00104 noun = qsl.join(" ");
00105
00106 mw->orgField->setText(noun);
00107 mw->progCount->setText(QString::number(entry->statisticCount()));
00108
00109
00110
00111 if(articles.isEmpty()) {
00112 mw->maleRadio->setText(i18nc("@label the gender of the word: masculine", "&masculine"));
00113 mw->femaleRadio->setText(i18nc("@label the gender of the word: feminine", "&feminine"));
00114 mw->neutralRadio->setText(i18nc("@label the gender of the word: neuter", "&neuter"));
00115 } else {
00116 def = articles.article( singular | definite | male );
00117 indef = articles.article( singular | indefinite | male );
00118 bool male = !(def.isEmpty() && indef.isEmpty());
00119 QString article;
00120 if((!def.isEmpty()) && (!indef.isEmpty())) {
00121 article = def + " / " + indef;
00122 } else {
00123 article = def + indef;
00124 }
00125 mw->maleRadio->setText(i18nc("@label the gender of the word: masculine", "&masculine:\t") + article);
00126
00127 def = articles.article( singular | definite | female );
00128 indef = articles.article( singular | indefinite | female );
00129 bool female = !(def.isEmpty() && indef.isEmpty());
00130 if((!def.isEmpty()) && (!indef.isEmpty())) {
00131 article = def + " / " + indef;
00132 } else {
00133 article = def + indef;
00134 }
00135 mw->femaleRadio->setText(i18nc("@label the gender of the word: feminine", "&feminine:\t") + article);
00136
00137 def = articles.article( singular | definite | neutral );
00138 indef = articles.article( singular | indefinite | neutral );
00139 bool neutral = !(def.isEmpty() && indef.isEmpty());
00140 if((!def.isEmpty()) && (!indef.isEmpty())) {
00141 article = def + " / " + indef;
00142 } else {
00143 article = def + indef;
00144 }
00145 if (!neutral && male && female) {
00146 mw->neutralRadio->setVisible(false);
00147 } else {
00148 mw->neutralRadio->setText(i18nc("@label the gender of the word: neuter", "&neuter:\t") + article);
00149 mw->neutralRadio->setVisible(true);
00150 }
00151 }
00152
00153 setWidgetStyle(mw->maleRadio);
00154 setWidgetStyle(mw->femaleRadio);
00155 setWidgetStyle(mw->neutralRadio);
00156
00157
00158 mw->maleRadio->setChecked(true);
00159 mw->maleRadio->setAutoExclusive ( false );
00160 mw->maleRadio->setChecked(false);
00161 mw->maleRadio->setAutoExclusive ( true );
00162
00163 mw->dont_know->setFocus();
00164
00165 imageShowFromEntry( mw->imageGraphicsView );
00166 }
00167
00168
00169 void ArtQueryDlg::showSolution()
00170 {
00171 setWidgetStyle(mw->maleRadio);
00172 setWidgetStyle(mw->femaleRadio);
00173 setWidgetStyle(mw->neutralRadio);
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189 }
00190
00191
00192 void ArtQueryDlg::verifyClicked()
00193 {
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230 }
00231
00232
00233 void ArtQueryDlg::setProgressCounter(int current, int total)
00234 {
00235 mw->countbar->setMaximum(total);
00236 mw->countbar->setValue(current);
00237 }
00238
00239
00240 #include "ArtQueryDlg.moc"
00241
00242