]> Git trees. - qtvoc.git/commitdiff
add multiple choice
authorReto Zingg <g.d0b3rm4n@gmail.com>
Fri, 26 Mar 2010 23:53:34 +0000 (01:53 +0200)
committerReto Zingg <g.d0b3rm4n@gmail.com>
Fri, 26 Mar 2010 23:53:34 +0000 (01:53 +0200)
TinyVocTrainer/TinyVocTrainer.pro
TinyVocTrainer/tinyvoctrainer.cpp
TinyVocTrainer/tinyvoctrainer.h

index 2f330f9a9f42a6bf0c5b62b5df4d3c3c98171b5e..ebfea40d214fee0008382b04422c4e84a6abb40c 100644 (file)
@@ -3,13 +3,13 @@
 # -------------------------------------------------
 TARGET = TinyVocTrainer
 TEMPLATE = app
-LIBS += -L/home/rzingg/kedu/git/lib \
+LIBS += -L../lib \
     -lkeduvocdocument
 DEPENDPATH += . \
-    /home/rzingg/kedu/git/lib
+    ../lib
 INCLUDEPATH += . \
     /home/rzingg/kedu/git/lib
-QMAKE_LFLAGS += -Wl,-rpath,/home/rzingg/kedu/git/lib
+QMAKE_LFLAGS += -Wl,-rpath,../lib
 SOURCES += main.cpp \
     tinyvoctrainer.cpp
 HEADERS += tinyvoctrainer.h
index 6c28f8e3984366553fdea86e41153bd13160276f..beafc72156032a29c40cb80ad8f76989d15ef7dd 100644 (file)
@@ -19,27 +19,42 @@ TinyVocTrainer::TinyVocTrainer(QWidget *parent)
     QHBoxLayout *hbox_less = new QHBoxLayout();
     QHBoxLayout *hbox_question_lang = new QHBoxLayout();
     QHBoxLayout *hbox_answer_lang = new QHBoxLayout();
-    QHBoxLayout *hbox_buttons = new QHBoxLayout();
-    QHBoxLayout *hbox_label = new QHBoxLayout();
+    QVBoxLayout *vbox_label = new QVBoxLayout();
 
-    QPushButton *button = new QPushButton("Next");
-
-    hbox_buttons->addWidget(button);
-
-    connect(button, SIGNAL(clicked(bool)), this, SLOT(slotNext(bool)));
 
     bgroup_lesson = new QButtonGroup();
     bgroup_question_lang = new QButtonGroup();
     bgroup_answer_lang =  new QButtonGroup();
+    bgroup_choice =  new QButtonGroup();
 
     QuestionLabel = new QLabel();
     QuestionLabel->setText("Here comes...");
-    hbox_label->addWidget(QuestionLabel);
-
+    vbox_label->addWidget(QuestionLabel);
+
+    answer1 = new QPushButton;
+    answer2 = new QPushButton;
+    answer3 = new QPushButton;
+    vbox_label->addWidget(answer1);
+    vbox_label->addWidget(answer2);
+    vbox_label->addWidget(answer3);
+    answerButtonsList.append(answer1);
+    answerButtonsList.append(answer2);
+    answerButtonsList.append(answer3);
+    bgroup_choice->addButton(answer1);
+    bgroup_choice->setId(answer1, 0);
+    bgroup_choice->addButton(answer2);
+    bgroup_choice->setId(answer2, 1);
+    bgroup_choice->addButton(answer3);
+    bgroup_choice->setId(answer3, 2);
+
+    connect(answer1,SIGNAL(clicked(bool)),this,SLOT(slotAnswer1(bool)));
+    connect(answer2,SIGNAL(clicked(bool)),this,SLOT(slotAnswer2(bool)));
+    connect(answer3,SIGNAL(clicked(bool)),this,SLOT(slotAnswer3(bool)));
 
     questionID = 0;
     answerID = 0;
     lessonID = 0;
+    CorrectID = 0;
 
     QLabel *label_question = new QLabel("Question:");
     hbox_question_lang->addWidget(label_question);
@@ -76,6 +91,9 @@ TinyVocTrainer::TinyVocTrainer(QWidget *parent)
         connect(radio_answer_lang, SIGNAL(toggled(bool)), this, SLOT(reactToToggleAnswerLang(bool)));
     }
 
+    bgroup_question_lang->button(0)->click();;
+    bgroup_answer_lang->button(1)->click();
+
     int lessonId = 0;
     foreach(KEduVocContainer * c, lessons) {
         if (c->containerType() == KEduVocLesson::Lesson) {
@@ -97,13 +115,15 @@ TinyVocTrainer::TinyVocTrainer(QWidget *parent)
         ++lessonId;
     }
 
+    bgroup_lesson->button(0)->click();
+
     vbox->addLayout(hbox_less);
     vbox->addLayout(hbox_question_lang);
     vbox->addLayout(hbox_answer_lang);
-    vbox->addLayout(hbox_label);
-    vbox->addLayout(hbox_buttons);
+    vbox->addLayout(vbox_label);
     setLayout(vbox);
 
+    slotInit();
 }
 
 TinyVocTrainer::~TinyVocTrainer()
@@ -111,11 +131,12 @@ TinyVocTrainer::~TinyVocTrainer()
 
 }
 
-QString TinyVocTrainer::getAnyEntryFromLesson(KEduVocLesson *lesson, int language)
+KEduVocExpression * TinyVocTrainer::getAnyEntryFromLesson(KEduVocLesson *lesson, int language)
 {
+    Q_UNUSED(language);
     int random_int = ( rand() %  ( lesson->entries().size() - 1 ) ) + 0;
-    qDebug() << "random_int: " << random_int << "Lesson Size: " << lesson->entries().size();
-    return lesson->entry(random_int)->translation(language)->text();
+    qDebug() << "anyEntry random_int: " << random_int << "Lesson Size: " << lesson->entries().size();
+    return lesson->entry(random_int);
 }
 
 
@@ -125,6 +146,7 @@ void TinyVocTrainer::reactToToggleQuestionLang(bool checked)
     if(checked){   
         qDebug() << "bgroup_question_lang: " << bgroup_question_lang->checkedId();
         questionID = bgroup_question_lang->checkedId();
+        // slotInit();
     }
 }
 
@@ -134,6 +156,7 @@ void TinyVocTrainer::reactToToggleAnswerLang(bool checked)
     if(checked){
         qDebug() << "bgroup_answer_lang: " << bgroup_answer_lang->checkedId();
         answerID = bgroup_answer_lang->checkedId();
+        // slotInit();
     }
 }
 
@@ -143,11 +166,51 @@ void TinyVocTrainer::reactToToggleLesson(bool checked)
     if(checked){
         qDebug() << "bgroup_lesson: " << bgroup_lesson->checkedId();
         lessonID = bgroup_lesson->checkedId();
+        // slotInit();
+    }
+}
+
+void TinyVocTrainer::slotAnswer1(bool clicked){
+    Q_UNUSED(clicked);
+    slotCheck(0);
+}
+
+void TinyVocTrainer::slotAnswer2(bool clicked){
+    Q_UNUSED(clicked);
+    slotCheck(1);
+}
+
+void TinyVocTrainer::slotAnswer3(bool clicked){
+    Q_UNUSED(clicked);
+    slotCheck(2);
+}
+
+void TinyVocTrainer::slotCheck(int buttonID){
+    qDebug() << "slotCheck(): buton id: " << buttonID << "Correct Id: " << CorrectID;
+
+    if(buttonID == CorrectID){
+        qDebug() << "\\o/ correct answer...";
+        slotInit();
+        return;
+    }
+    else{
+        qDebug() << ":-( sorry wrong...";
     }
+
 }
 
-void TinyVocTrainer::slotNext(bool clicked){
-    qDebug() << "lessonsList count: " << lessonsList.count();
-    qDebug() << "lessonsList Name: " << lessonsList.at(lessonID)->name();
-    QuestionLabel->setText( getAnyEntryFromLesson(lessonsList.at(lessonID), questionID) );
+void TinyVocTrainer::slotInit(){
+
+    choiceList.clear();
+    for (int i=0; i < 3; ++i){
+        choiceList.append( getAnyEntryFromLesson(lessonsList.at(lessonID), questionID) );
+        answerButtonsList.at(i)->setText( choiceList.at(i)->translation(questionID)->text() );
+    }
+
+    int random_int = rand() %  3  + 0;
+    qDebug() << "ask for random_int: " <<  random_int;
+
+    QuestionLabel->setText(choiceList.at(random_int)->translation(answerID)->text());
+    CorrectID = random_int;
+
 }
index af58cdb48b495dd87f1ffb7faf2fc4f30acb23c8..46bbef88891aeb466c0e1d2d241717473d3a622d 100644 (file)
@@ -5,6 +5,7 @@
 #include <QButtonGroup>
 #include <QList>
 #include <QLabel>
+#include <QPushButton>
 
 #include "keduvocdocument.h"
 #include "keduvoclesson.h"
@@ -18,25 +19,37 @@ class TinyVocTrainer : public QWidget
 public:
     TinyVocTrainer(QWidget *parent = 0);
     ~TinyVocTrainer();
-    QString getAnyEntryFromLesson(KEduVocLesson *lesson = 0, int language = 0);
+    KEduVocExpression * getAnyEntryFromLesson(KEduVocLesson *lesson = 0, int language = 0);
 
     QButtonGroup *bgroup_lesson;
     QButtonGroup *bgroup_question_lang;
     QButtonGroup *bgroup_answer_lang;
+    QButtonGroup *bgroup_choice;
     QList<KEduVocContainer *>  lessons;
     QList<KEduVocLesson *> lessonsList;
     KEduVocDocument *docRead;
     QLabel *QuestionLabel;
+    QPushButton *answer1;
+    QPushButton *answer2;
+    QPushButton *answer3;
+    QList<KEduVocExpression *> choiceList;
+    QList<QPushButton *> answerButtonsList;
+
 
     int questionID;
     int answerID;
     int lessonID;
+    int CorrectID;
 
 private slots:
     void reactToToggleQuestionLang(bool checked = 0);
     void reactToToggleAnswerLang(bool checked = 0);
     void reactToToggleLesson(bool checked = 0);
-    void slotNext(bool clicked = 0);
+    void slotCheck(int buttonID = 0);
+    void slotAnswer1(bool clicked = 0);
+    void slotAnswer2(bool clicked = 0);
+    void slotAnswer3(bool clicked = 0);
+    void slotInit();
 
 };