• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

parley

  • sources
  • kde-4.14
  • kdeedu
  • parley
  • src
  • practice
writtenpracticewidget.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  Copyright 2009-2010 Frederik Gladhorn <gladhorn@kde.org>
3  Copyright 2009-2010 Daniel Laidig <laidig@kde.org>
4  ***************************************************************************/
5 
6 /***************************************************************************
7  * *
8  * This program is free software; you can redistribute it and/or modify *
9  * it under the terms of the GNU General Public License as published by *
10  * the Free Software Foundation; either version 2 of the License, or *
11  * (at your option) any later version. *
12  * *
13  ***************************************************************************/
14 
15 #include "writtenpracticewidget.h"
16 #include "ui_practice_widget_written.h"
17 
18 #include "guifrontend.h"
19 #include "latexrenderer.h"
20 
21 #include "prefs.h"
22 
23 #include <kcolorscheme.h>
24 
25 #include <QTimer>
26 #include <QDebug>
27 
28 using namespace Practice;
29 
30 WrittenPracticeWidget::WrittenPracticeWidget(GuiFrontend *frontend, QWidget *parent, bool isExampleSentenceMode)
31  : AbstractModeWidget(frontend, parent), m_latexRenderer(0)
32 {
33  m_ui = new Ui::WrittenPracticeWidget();
34  m_ui->setupUi(this);
35  m_ui->mixedSolutionLabel->setVisible(false);
36  this->isExampleSentenceMode = isExampleSentenceMode;
37  connect(m_ui->answerEdit, SIGNAL(returnPressed()), this, SLOT(continueClicked()));
38  connect(frontend, SIGNAL(continueAction()), this, SIGNAL(stopAudio()));
39  connect(frontend, SIGNAL(skipAction()), this, SIGNAL(stopAudio()));
40 }
41 
42 void WrittenPracticeWidget::objectDestroyed(QObject *) {
66  m_ui->helpLabel->setFocus();
67  delete m_ui;
68  m_ui = 0;
69 }
70 
71 
72 void WrittenPracticeWidget::setQuestionFont(const QFont& font)
73 {
74  m_ui->questionLabel->setFont(font);
75 }
76 
77 void WrittenPracticeWidget::setSolutionFont(const QFont& font)
78 {
79  m_ui->answerEdit->setFont(font);
80  m_ui->solutionLabel->setFont(font);
81  m_ui->mixedSolutionLabel->setFont(font);
82 }
83 
84 void WrittenPracticeWidget::continueClicked()
85 {
86  emit continueAction();
87 }
88 
89 QVariant WrittenPracticeWidget::userInput()
90 {
91  return QVariant(m_ui->answerEdit->text());
92 }
93 
94 void WrittenPracticeWidget::setQuestion(const QVariant& question)
95 {
96  m_ui->questionLabel->setMinimumSize(QSize(0, 0));
97  if (LatexRenderer::isLatex(question.toString())) {
98  if (!m_latexRenderer) {
99  m_latexRenderer = new LatexRenderer(this);
100  m_latexRenderer->setResultLabel(m_ui->questionLabel);
101  }
102  m_latexRenderer->renderLatex(question.toString());
103  } else {
104  m_ui->questionLabel->setText(question.toString());
105  }
106 }
107 
108 void WrittenPracticeWidget::showQuestion()
109 {
110  m_ui->answerEdit->setEnabled(true);
111  m_ui->answerEdit->clear();
112  QTimer::singleShot(0, m_ui->answerEdit, SLOT(setFocus()));
113  m_ui->answerEdit->setPalette(palette());
114  m_ui->solutionLabel->setText(QString());
115  m_ui->helpLabel->clear();
116 
117  foreach(QWidget * child, synonymWidgets) {
118  m_ui->synonymList->removeWidget(child);
119  delete child;
120  }
121  synonymWidgets.clear();
122 
123  if (isExampleSentenceMode == false) {
124  m_ui->questionPronunciationLabel->setVisible(m_ui->questionPronunciationLabel->isEnabled());
125  m_ui->questionSoundButton->setVisible(m_ui->questionSoundButton->isEnabled());
126  } else {
127  m_ui->questionPronunciationLabel->setVisible(false);
128  m_ui->questionSoundButton->setVisible(false);
129  }
130  m_ui->solutionPronunciationLabel->setVisible(false);
131  m_ui->solutionSoundButton->setVisible(false);
132 }
133 
134 void WrittenPracticeWidget::setSolution(const QVariant& solution)
135 {
136  m_solution = solution.toString();
137 }
138 
139 void WrittenPracticeWidget::showSolution()
140 {
141  m_ui->solutionLabel->setText(m_solution);
142  m_ui->answerEdit->setEnabled(false);
143  if (m_feedbackState == AbstractFrontend::AnswerCorrect) {
144  m_ui->answerEdit->setPalette(m_correctPalette);
145  } else {
146  m_ui->answerEdit->setPalette(m_wrongPalette);
147  }
148  m_ui->solutionLabel->setPalette(m_correctPalette);
149 
150  m_ui->solutionPronunciationLabel->setVisible(m_ui->solutionPronunciationLabel->isEnabled());
151  m_ui->solutionSoundButton->setVisible(m_ui->solutionSoundButton->isEnabled());
152 }
153 
154 void WrittenPracticeWidget::setSynonym(const QString &synonym)
155 {
156  m_synonym = synonym;
157 }
158 
159 void WrittenPracticeWidget::showSynonym()
160 {
161  QLabel* synonym = new QLabel();
162  QFont font;
163  //TODO: use slightly smaller font for synonyms
164  //font.setPointSize(9);
165  synonym->setAlignment(Qt::AlignCenter);
166  synonym->setFont(font);
167  synonym->setText(i18n("Synonym: ") + m_synonym);
168  synonymWidgets.append(synonym);
169  m_ui->synonymList->addWidget(synonym);
170  m_ui->answerEdit->clear();
171 }
172 
173 void WrittenPracticeWidget::setHint(const QVariant& hint)
174 {
175  m_ui->helpLabel->setText(hint.toString());
176 }
177 
178 void WrittenPracticeWidget::setFeedback(const QVariant& feedback)
179 {
180  m_ui->helpLabel->setText(feedback.toString());
181 }
182 
183 void WrittenPracticeWidget::setFeedbackState(AbstractFrontend::ResultState feedbackState)
184 {
185  m_feedbackState = feedbackState;
186 }
187 
188 void WrittenPracticeWidget::setResultState(AbstractFrontend::ResultState resultState)
189 {
190  m_resultState = resultState;
191 }
192 
193 void WrittenPracticeWidget::setQuestionSound(const KUrl& soundUrl)
194 {
195  m_ui->questionSoundButton->setSoundFile(soundUrl);
196 }
197 
198 void WrittenPracticeWidget::setSolutionSound(const KUrl& soundUrl)
199 {
200  m_ui->solutionSoundButton->setSoundFile(soundUrl);
201 }
202 
203 void WrittenPracticeWidget::setSolutionPronunciation(const QString& pronunciationText)
204 {
205  m_ui->solutionPronunciationLabel->setText('[' + pronunciationText + ']');
206  m_ui->solutionPronunciationLabel->setEnabled(!pronunciationText.isNull());
207 }
208 
209 void WrittenPracticeWidget::setQuestionPronunciation(const QString& pronunciationText)
210 {
211  m_ui->questionPronunciationLabel->setText('[' + pronunciationText + ']');
212  m_ui->questionPronunciationLabel->setEnabled(!pronunciationText.isNull());
213 }
214 
215 #include "writtenpracticewidget.moc"
Practice::WrittenPracticeWidget::setSolutionSound
virtual void setSolutionSound(const KUrl &soundUrl)
Definition: writtenpracticewidget.cpp:198
QObject::child
QObject * child(const char *objName, const char *inheritsClass, bool recursiveSearch) const
QList::clear
void clear()
Practice::WrittenPracticeWidget::setQuestion
virtual void setQuestion(const QVariant &question)
Definition: writtenpracticewidget.cpp:94
QWidget
QWidget::palette
const QPalette & palette() const
Practice::GuiFrontend
Definition: guifrontend.h:35
Practice::WrittenPracticeWidget::continueClicked
void continueClicked()
Definition: writtenpracticewidget.cpp:84
Practice::WrittenPracticeWidget::setSolutionFont
virtual void setSolutionFont(const QFont &font)
Definition: writtenpracticewidget.cpp:77
Practice::WrittenPracticeWidget::setQuestionPronunciation
virtual void setQuestionPronunciation(const QString &pronunciationText)
Definition: writtenpracticewidget.cpp:209
Practice::WrittenPracticeWidget::setQuestionFont
virtual void setQuestionFont(const QFont &font)
Definition: writtenpracticewidget.cpp:72
Practice::WrittenPracticeWidget::setFeedback
virtual void setFeedback(const QVariant &feedback)
Definition: writtenpracticewidget.cpp:178
QFont
Practice::AbstractModeWidget::continueAction
void continueAction()
QLabel::setAlignment
void setAlignment(QFlags< Qt::AlignmentFlag >)
Practice::LatexRenderer
Definition: latexrenderer.h:27
Practice::WrittenPracticeWidget::setSynonym
virtual void setSynonym(const QString &entry)
Definition: writtenpracticewidget.cpp:154
prefs.h
Practice::LatexRenderer::setResultLabel
void setResultLabel(QLabel *label)
Definition: latexrenderer.h:33
Practice::AbstractModeWidget
Definition: abstractwidget.h:27
QString::isNull
bool isNull() const
Practice::AbstractModeWidget::skipAction
void skipAction()
Practice::WrittenPracticeWidget::WrittenPracticeWidget
WrittenPracticeWidget(GuiFrontend *frontend, QWidget *parent=0, bool isExampleSentenceMode=false)
Definition: writtenpracticewidget.cpp:30
Practice::WrittenPracticeWidget::setResultState
virtual void setResultState(AbstractFrontend::ResultState resultState)
Definition: writtenpracticewidget.cpp:188
Practice::WrittenPracticeWidget::showSolution
void showSolution()
Definition: writtenpracticewidget.cpp:139
Practice::WrittenPracticeWidget::setQuestionSound
virtual void setQuestionSound(const KUrl &soundUrl)
Definition: writtenpracticewidget.cpp:193
QList::append
void append(const T &value)
QObject
QWidget::setFocus
void setFocus()
Practice::AbstractModeWidget::m_correctPalette
QPalette m_correctPalette
Definition: abstractwidget.h:76
Practice::AbstractFrontend::ResultState
ResultState
Definition: abstractfrontend.h:41
QLabel::setText
void setText(const QString &)
QString
Practice::AbstractModeWidget::m_wrongPalette
QPalette m_wrongPalette
Definition: abstractwidget.h:77
Practice::WrittenPracticeWidget::setHint
virtual void setHint(const QVariant &hint)
Definition: writtenpracticewidget.cpp:173
QSize
QWidget::font
const QFont & font() const
Practice::AbstractFrontend::AnswerCorrect
Definition: abstractfrontend.h:43
writtenpracticewidget.h
guifrontend.h
latexrenderer.h
Practice::WrittenPracticeWidget::setSolutionPronunciation
virtual void setSolutionPronunciation(const QString &pronunciationText)
Definition: writtenpracticewidget.cpp:203
Practice::WrittenPracticeWidget::showSynonym
void showSynonym()
Definition: writtenpracticewidget.cpp:159
Practice::WrittenPracticeWidget::setFeedbackState
virtual void setFeedbackState(AbstractFrontend::ResultState feedbackState)
Definition: writtenpracticewidget.cpp:183
Practice::WrittenPracticeWidget::setSolution
virtual void setSolution(const QVariant &solution)
Definition: writtenpracticewidget.cpp:134
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QLabel
Practice::WrittenPracticeWidget::userInput
virtual QVariant userInput()
Definition: writtenpracticewidget.cpp:89
QVariant::toString
QString toString() const
Practice::LatexRenderer::renderLatex
void renderLatex(QString tex)
Definition: latexrenderer.cpp:51
Practice::AbstractModeWidget::stopAudio
void stopAudio()
Practice::LatexRenderer::isLatex
static bool isLatex(const QString &tex)
Definition: latexrenderer.cpp:96
Practice::WrittenPracticeWidget::m_ui
Ui::WrittenPracticeWidget * m_ui
Definition: writtenpracticewidget.h:72
Practice::WrittenPracticeWidget::showQuestion
void showQuestion()
Definition: writtenpracticewidget.cpp:108
Practice::WrittenPracticeWidget::objectDestroyed
virtual void objectDestroyed(QObject *)
To be called prior to focus change during deletion to switch focus away from the KLineEdit answer are...
QTimer::singleShot
singleShot
QVariant
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:15:56 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

parley

Skip menu "parley"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal