[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