[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdeedu/parley/src/practice
From: Frederik Gladhorn <frederik.gladhorn () gmx ! de>
Date: 2007-10-06 23:40:10
Message-ID: 1191714010.148885.15421.nullmailer () svn ! kde ! org
[Download RAW message or body]
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<KComboBox*> 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<KLineEdit*> 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<KComboBox*> transCombos;
QList<KLineEdit*> transFields;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic