31 #include "templates/quiz/quizsimulator.h"
33 #include "core/templatecore.h"
34 #include "templates/quiz/quizcore.h"
35 #include "templates/quiz/quizeditor.h"
36 #include "templates/quiz/quizitem.h"
37 #include "definitions/definitions.h"
39 #include <QMessageBox>
41 #include <QPushButton>
42 #include <QRadioButton>
45 QuizSimulator::QuizSimulator(
TemplateCore *core, QWidget *parent)
49 QFont caption_font = m_ui->m_lblHeading->font();
50 caption_font.setPointSize(caption_font.pointSize() + SIMULATOR_HEADING_SIZE_INCREASE);
51 m_ui->m_lblHeading->setFont(caption_font);
53 connect(m_ui->m_btnStart, SIGNAL(clicked()),
this, SLOT(start()));
54 connect(m_ui->m_btnRestart, SIGNAL(clicked()),
this, SLOT(restart()));
55 connect(m_ui->m_btnExit, SIGNAL(clicked()),
this, SLOT(exit()));
58 QuizSimulator::~QuizSimulator() {
59 qDebug(
"Destroying QuizSimulator instance.");
64 bool QuizSimulator::startSimulation() {
74 while (m_ui->m_phoneWidget->count() > 3) {
75 QWidget *question_widget = m_ui->m_phoneWidget->widget(2);
77 m_ui->m_phoneWidget->removeWidget(question_widget);
78 question_widget->deleteLater();
82 m_ui->m_btnStart->setEnabled(
true);
83 m_ui->m_lblAuthor->setText(editor->m_ui->m_txtAuthor->lineEdit()->text());
84 m_ui->m_lblHeading->setText(editor->m_ui->m_txtName->lineEdit()->text());
86 int question_number = 1;
92 connect(item, SIGNAL(questionSubmitted()),
this, SLOT(questionSubmitted()));
94 item->
setQuestion(question, question_number++, questions.size());
95 m_ui->m_phoneWidget->insertWidget(m_ui->m_phoneWidget->count() - 1, item);
98 m_ui->m_phoneWidget->setCurrentIndex(1);
102 bool QuizSimulator::stopSimulation() {
103 m_ui->m_phoneWidget->setCurrentIndex(0);
110 bool QuizSimulator::goBack() {
114 void QuizSimulator::start() {
115 m_ui->m_phoneWidget->setCurrentIndex(2);
118 void QuizSimulator::prepareSummary() {
119 int answered_correctly = 0;
120 int answered_wrongly = 0;
123 for (
int i = 2; i < m_ui->m_phoneWidget->count() - 1; i++) {
126 switch (widget->
state()) {
127 case QuizItem::AnsweredCorrectly:
128 answered_correctly++;
131 case QuizItem::AnsweredWrongly:
135 case QuizItem::Unanswered:
142 m_ui->m_lblTotalCorrect->setText(tr(
"Total correct %1").arg(answered_correctly));
143 m_ui->m_lblTotalWrong->setText(tr(
"Total wrong %1").arg(answered_wrongly));
144 m_ui->m_lblTotalUnanswered->setText(tr(
"Total unanswered %1").arg(unanswered));
147 void QuizSimulator::questionSubmitted() {
148 int current_index = m_ui->m_phoneWidget->currentIndex();
150 if (current_index == m_ui->m_phoneWidget->count() - 2) {
155 m_ui->m_phoneWidget->setCurrentIndex(current_index + 1);
158 void QuizSimulator::restart() {
160 for (
int i = 2; i < m_ui->m_phoneWidget->count() - 1; i++) {
161 static_cast<QuizItem*
>(m_ui->m_phoneWidget->widget(i))->reset();
164 m_ui->m_phoneWidget->setCurrentIndex(1);
167 void QuizSimulator::exit() {
bool canGenerateApplications()
Specifies if template can generate applications or not.
virtual TemplateEditor * editor() const
Access to editor widget of the template.
Simulator for Quiz template.
Widget which represents single question in Quiz.
void canGoBackChanged(bool can_go_back)
Emitted if "can go back" status of simulator changes.
State state() const
Access to state of quiz question widget.
QList< QuizQuestion > activeQuestions() const
Access to list of added questions.
void setQuestion(const QuizQuestion &question, int question_number, int total_questions)
Sets new question for this widget.
TemplateCore * core() const
Access to associated template core.
void simulationStopRequested()
Emitted if simulation is stopped from template itself.
The core class container for single template.
Container for one question.
Base widget which represents simulator of the template.