From kde-commits Sat Oct 06 23:40:10 2007 From: Frederik Gladhorn Date: Sat, 06 Oct 2007 23:40:10 +0000 To: kde-commits Subject: KDE/kdeedu/parley/src/practice Message-Id: <1191714010.148885.15421.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=119171402028215 SVN commit 722239 by gladhorn: Show the solution after the answer was provided. M +28 -23 ArtQueryDlg.cpp M +33 -3 MCQueryDlg.cpp M +4 -0 MCQueryDlg.h M +5 -21 practicedialog.cpp M +1 -4 practicedialog.h M +47 -23 writtenpracticedialog.cpp M +2 -0 writtenpracticedialog.h --- trunk/KDE/kdeedu/parley/src/practice/ArtQueryDlg.cpp #722238:722239 @@ -159,13 +159,13 @@ if (specialSubType == m_doc->wordTypes().specialTypeNounMale()) { mw->maleRadio->setChecked(true); - verifyButton(mw->maleRadio, true); + setWidgetStyle(mw->maleRadio, PositiveResult); } else if (specialSubType == m_doc->wordTypes().specialTypeNounFemale()) { mw->femaleRadio->setChecked(true); - verifyButton(mw->femaleRadio, true); + setWidgetStyle(mw->femaleRadio, PositiveResult); } else if (specialSubType == m_doc->wordTypes().specialTypeNounNeutral()) { mw->neutralRadio->setChecked(true); - verifyButton(mw->neutralRadio, true); + setWidgetStyle(mw->neutralRadio, PositiveResult); } mw->dont_know->setDefault(true); setAnswerTainted(); @@ -176,29 +176,34 @@ { QString specialSubType = m_doc->wordTypes().specialSubType(m_entry->exp->translation(Prefs::toIdentifier()).type(), m_entry->exp->translation(Prefs::toIdentifier()).subType()); - bool known = false; - if (specialSubType == m_doc->wordTypes().specialTypeNounMale()) - known = mw->maleRadio->isChecked(); - else if (specialSubType == m_doc->wordTypes().specialTypeNounFemale()) - known = mw->femaleRadio->isChecked(); - else if (specialSubType == m_doc->wordTypes().specialTypeNounNeutral()) - known = mw->neutralRadio->isChecked(); + bool correct = false; - if (mw->femaleRadio->isChecked()) { - verifyButton(mw->femaleRadio, known); - setWidgetStyle(mw->maleRadio); - setWidgetStyle(mw->neutralRadio); - } else if (mw->maleRadio->isChecked()) { - verifyButton(mw->maleRadio, known); - setWidgetStyle(mw->femaleRadio); - setWidgetStyle(mw->neutralRadio); - } else if (mw->neutralRadio->isChecked()) { - verifyButton(mw->neutralRadio, known); - setWidgetStyle(mw->maleRadio); - setWidgetStyle(mw->femaleRadio); + if (specialSubType == m_doc->wordTypes().specialTypeNounMale()) { + if ( mw->maleRadio->isChecked() ) { + setWidgetStyle(mw->maleRadio, PositiveResult); + correct = true; + } else { + setWidgetStyle(mw->maleRadio, NegativeResult); + } } + if (specialSubType == m_doc->wordTypes().specialTypeNounFemale()) { + if ( mw->femaleRadio->isChecked() ) { + setWidgetStyle(mw->femaleRadio, PositiveResult); + correct = true; + } else { + setWidgetStyle(mw->femaleRadio, NegativeResult); + } + } + if (specialSubType == m_doc->wordTypes().specialTypeNounNeutral()) { + if ( mw->neutralRadio->isChecked() ) { + setWidgetStyle(mw->neutralRadio, PositiveResult); + correct = true; + } else { + setWidgetStyle(mw->neutralRadio, NegativeResult); + } + } - if (known) { + if (correct) { resultCorrect(); emit nextEntry(); } else { --- trunk/KDE/kdeedu/parley/src/practice/MCQueryDlg.cpp #722238:722239 @@ -48,8 +48,6 @@ mw = new Ui::MCQueryDlgForm(); mw->setupUi(mainWidget()); - // only shown when the solution is displayed - mw->continueButton->setVisible(false); mw->continueButton->setIcon(KIcon("ok")); // connecting to SIGNAL nextEntry - emits the signal! connect(mw->continueButton, SIGNAL(clicked()), SIGNAL(nextEntry())); @@ -308,9 +306,41 @@ mw->show_all->setVisible(!show); mw->continueButton->setVisible(show); - mw->continueButton->setDefault(show); + + if ( show ) { + mw->continueButton->setDefault(true); + } else { + mw->dont_know->setDefault(true); + } } +/** + * Used to paint a radio button in result color. + * @todo rename, rewrite... + * This doesn't even verify - it needs to be told if the result is correct. + * @param radio + * @param is_ok + * @param widget2 + */ +void MCQueryDlg::verifyButton(QRadioButton *radio, bool is_ok, QWidget *widget2) +{ + if (!radio->isEnabled()) + return; + + if (is_ok) { + setWidgetStyle(radio, PositiveResult); + if (widget2 != 0) { + setWidgetStyle(widget2, PositiveResult); + } + } else { + setWidgetStyle(radio, NegativeResult); + if (widget2 != 0) { + setWidgetStyle(widget2, NegativeResult); + } + } +} + + #include "MCQueryDlg.moc" --- trunk/KDE/kdeedu/parley/src/practice/MCQueryDlg.h #722238:722239 @@ -46,6 +46,10 @@ void verifyClicked(); private: + /** Set style for QRadioButton + @todo rewrite, rename */ + void verifyButton(QRadioButton *radio, bool is_ok, QWidget *widget2 = 0); + void showContinueButton(bool show); void setStatusText(const QString &statusText) { mw->status->setText(statusText); } QProgressBar* timebar() { return mw->timebar; } --- trunk/KDE/kdeedu/parley/src/practice/practicedialog.cpp #722238:722239 @@ -75,39 +75,23 @@ */ bool PracticeDialog::verifyField(QLineEdit *field, const QString &really) { - /** @todo the colors should not be hard coded here. */ - if (!field->isEnabled()) + kDebug() << "Compare: " << field->text() << really; + + if (!field->isEnabled()) { return true; + } if (smartCompare(really, field->text())) { // answer was right - green text setWidgetStyle(field, PositiveResult); return true; } + // wrong - red text setWidgetStyle(field, NegativeResult); return false; // right/wrong } -void PracticeDialog::verifyButton(QRadioButton *radio, bool is_ok, QWidget *widget2) -{ - if (!radio->isEnabled()) - return; - - if (is_ok) { - setWidgetStyle(radio, PositiveResult); - if (widget2 != 0) { - setWidgetStyle(widget2, PositiveResult); - } - } else { - setWidgetStyle(radio, NegativeResult); - if (widget2 != 0) { - setWidgetStyle(widget2, NegativeResult); - } - } -} - - QString PracticeDialog::getOKComment(int percent_done) { return i18n("Well done, you knew the correct answer. %1% done.", percent_done); --- trunk/KDE/kdeedu/parley/src/practice/practicedialog.h #722238:722239 @@ -140,15 +140,12 @@ void imageShowFile(QGraphicsView* view, const QString& url); void imageShowFromEntry(QGraphicsView* view, const TestEntry* entry); - /** compare two strings with simplified applied first */ + /** compare two strings with simplified applied first (pretty smart huh?) */ bool smartCompare(const QString&, const QString&) const; /** compare lineEdit and string, set lineEdit style */ bool verifyField(QLineEdit *field, const QString &really); - /** the same for QRadioButton */ - void verifyButton(QRadioButton *radio, bool is_ok, QWidget *widget2 = 0); - /** * Set the color scheme of a widget to WidgetStyle. * @param widget the widget to be modified --- trunk/KDE/kdeedu/parley/src/practice/writtenpracticedialog.cpp #722238:722239 @@ -51,6 +51,10 @@ mw = new Ui::WrittenPracticeDialog(); mw->setupUi(mainWidget()); + mw->continueButton->setIcon(KIcon("ok")); + // connecting to SIGNAL nextEntry - emits the signal! + connect(mw->continueButton, SIGNAL(clicked()), SIGNAL(nextEntry())); + mw->stopPracticeButton->setIcon( KIcon("list-remove") ); mw->editEntryButton->setIcon( KIcon("edit") ); mw->verify->setIcon(KIcon("ok")); @@ -69,15 +73,8 @@ connect(mw->show_all, SIGNAL(clicked()), SLOT(showSolution())); connect(mw->show_more, SIGNAL(clicked()), SLOT(showMoreClicked())); - mw->show_more->setVisible(Prefs::showMore()); - mw->know_it->setVisible(Prefs::iKnow()); + showContinueButton(false); - // only shown when the solution is displayed - mw->continueButton->setVisible(false); - mw->continueButton->setIcon(KIcon("ok")); - // connecting to SIGNAL nextEntry - emits the signal! - connect(mw->continueButton, SIGNAL(clicked()), SIGNAL(nextEntry())); - mw->countbar->setFormat("%v/%m"); mw->timebar->setFormat("%v"); @@ -177,7 +174,7 @@ void WrittenPracticeDialog::setEntry( TestEntry* entry ) { PracticeDialog::setEntry(entry); - mw->continueButton->setVisible(false); + showContinueButton(false); QString trans = entry->exp->translation( Prefs::toIdentifier() ).text(); if (Prefs::split()) @@ -321,21 +318,24 @@ int j; if (Prefs::suggestions()) { QList combos(transCombos); - for (i = combos.count() - 1; i >= translations.count(); i --) + for (i = combos.count() - 1; i >= translations.count(); i --) { combos.removeAt(i); - for (i = 0; i < combos.count(); i ++) - for (j = 0; j < trans.count(); j ++) + } + for (i = 0; i < combos.count(); i ++) { + for (j = 0; j < trans.count(); j ++) { if (smartCompare(trans[j], combos.at(i)->currentText())) { verifyField(combos.at(i)->lineEdit(), trans[j]); trans.removeAt(j); combos.removeAt(i --); break; } + } + } if (trans.count() == 0) { int percent = ((int)((double)mw->countbar->value()/mw->countbar->maximum() * 100.0)); mw->status->setText(getOKComment(percent)); resultCorrect(); - emit nextEntry(); + showContinueButton(true); } else { for (i = 0; i < combos.count(); i ++) { verifyField(combos.at(i)->lineEdit(), "a\na"); @@ -345,13 +345,15 @@ setAnswerTainted(); } } else { + // suggestions off QList fields(transFields); - for (i = fields.count() - 1; i >= translations.count(); i --) + for (i = fields.count() - 1; i >= translations.count(); i --) { fields.removeAt(i); + } for (i = 0; i < fields.count(); i ++) { for (j = 0; j < trans.count(); j ++) { if (smartCompare(trans[j], fields.at(i)->text())) { - verifyField(fields.at(i), "a\na"); // always fail + verifyField(fields.at(i), trans[j]); trans.removeAt(j); fields.removeAt(i --); break; @@ -362,7 +364,7 @@ if (trans.count() == 0) { mw->status->setText(getOKComment((int)((double)mw->countbar->value()/mw->countbar->maximum() * 100.0))); resultCorrect(); - emit nextEntry(); + showContinueButton(true); } else { for (i = 0; i < fields.count(); i ++) { verifyField(fields.at(i), trans[i]); @@ -408,7 +410,7 @@ if (length >= translations[i].length()) { field->setText(translations[i]); verifyField(field, translations[i]); - mw->verify->setEnabled(false); + showContinueButton(true); } else { field->setText(translations[i].left(length)); setWidgetStyle(field); @@ -436,8 +438,9 @@ transFields.at(i)->setText(translations[i]); verifyField(transFields.at(i), translations[i]); } - mw->verify->setEnabled(false); - mw->dont_know->setDefault(true); + + showContinueButton(true); + mw->status->clear(); suggestion_hint = false; } @@ -571,14 +574,17 @@ case Qt::Key_Return: case Qt::Key_Enter: - if (mw->dont_know->isDefault()) + if (mw->dont_know->isDefault()) { skipUnknown(); - else if (mw->know_it->isDefault()) + } else if (mw->know_it->isDefault()) { skipKnown(); - else if (mw->show_all->isDefault()) + } else if (mw->show_all->isDefault()) { showSolution(); - else if (mw->verify->isDefault()) + } else if (mw->verify->isDefault()) { verifyClicked(); + } else if (mw->continueButton->isDefault()) { + emit nextEntry(); + } break; default: @@ -593,4 +599,22 @@ mw->countbar->setValue(current); } +void WrittenPracticeDialog::showContinueButton(bool show) +{ + mw->dont_know->setVisible(!show); + mw->know_it->setVisible(!show && Prefs::iKnow()); + mw->show_more->setVisible(!show && Prefs::showMore()); + mw->show_all->setVisible(!show); + mw->verify->setVisible(!show); + + + mw->continueButton->setVisible(show); + + if ( show ) { + mw->continueButton->setDefault(true); + } else { + mw->verify->setDefault(true); + } +} + #include "writtenpracticedialog.moc" --- trunk/KDE/kdeedu/parley/src/practice/writtenpracticedialog.h #722238:722239 @@ -68,6 +68,8 @@ void setHintFields(); QStringList extractTranslations(const QString &); + void showContinueButton(bool show); + QList transCombos; QList transFields;