• 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
conjugationmodewidget.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  Copyright 2010 Frederik Gladhorn <gladhorn@kde.org>
3  ***************************************************************************/
4 
5 /***************************************************************************
6  * *
7  * This program is free software; you can redistribute it and/or modify *
8  * it under the terms of the GNU General Public License as published by *
9  * the Free Software Foundation; either version 2 of the License, or *
10  * (at your option) any later version. *
11  * *
12  ***************************************************************************/
13 
14 #include "conjugationmodewidget.h"
15 #include "conjugationdata.h"
16 
17 #include "ui_practice_widget_conjugation.h"
18 
19 #include <KDebug>
20 #include <kcolorscheme.h>
21 #include <QtGui/QRadioButton>
22 #include <QTimer>
23 
24 namespace Practice
25 {
26 struct PersonConjugationSolutionWidgets {
27  QLabel* person;
28  QLineEdit* input;
29  QLabel* solution;
30 
31  PersonConjugationSolutionWidgets(QGridLayout* layout, QWidget* parent = 0) {
32  person = new QLabel(parent);
33  person->setAlignment(Qt::AlignRight);
34  input = new QLineEdit(parent);
35  solution = new QLabel(parent);
36  int row = layout->rowCount();
37  layout->addWidget(person, row, 0);
38  layout->addWidget(input, row, 1);
39  layout->addWidget(solution, row, 2);
40  }
41 
42  void setVisible(bool visible) {
43  person->setVisible(visible);
44  input->setVisible(visible);
45  solution->setVisible(visible);
46  }
47 };
48 }
49 
50 using namespace Practice;
51 
52 ConjugationModeWidget::ConjugationModeWidget(GuiFrontend *frontend, QWidget* parent)
53  : AbstractModeWidget(frontend, parent)
54 {
55  m_ui = new Ui::ConjugationPracticeWidget();
56  m_ui->setupUi(this);
57 }
58 
59 ConjugationModeWidget::~ConjugationModeWidget()
60 {
61  qDeleteAll(m_personWidgets);
62 }
63 
64 void ConjugationModeWidget::setQuestionFont(const QFont& font)
65 {
66  m_ui->questionLabel->setFont(font);
67 }
68 
69 void ConjugationModeWidget::setSolutionFont(const QFont& font)
70 {
71  m_ui->infinitiveEdit->setFont(font);
72  m_solutionFont = font;
73 }
74 
75 void ConjugationModeWidget::setQuestion(const QVariant& question)
76 {
77  if (!question.canConvert<ConjugationData>()) {
78  kWarning() << "expected ConjugationData";
79  return;
80  }
81  ConjugationData data = question.value<ConjugationData>();
82 
83  // It's annoying to have to search for information, so put everything into one place if
84  // there`s only one pronoun
85  if (data.personalPronouns.size() > 1) {
86  m_ui->tenseLabel->setText(data.tense);
87  } else {
88  m_ui->tenseLabel->clear();
89  }
90 
91  m_ui->questionLabel->setText(data.questionInfinitive);
92  m_ui->infinitiveEdit->setText(data.solutionInfinitive);
93 
94  setNumberOfConjugationWidgets(data.personalPronouns.size());
95  int i = 0;
96  foreach(QString pp, data.personalPronouns) {
97  if (data.personalPronouns.size() == 1) {
98  pp += " (" + data.tense + ")";
99  }
100  m_personWidgets.at(i)->person->setText(pp);
101  m_personWidgets.at(i)->person->setFont(m_solutionFont);
102  m_personWidgets.at(i)->input->clear();
103  m_personWidgets.at(i)->input->setPalette(QApplication::palette());
104  m_personWidgets.at(i)->input->setFont(m_solutionFont);
105  m_personWidgets.at(i)->solution->clear();
106  m_personWidgets.at(i)->solution->setFont(m_solutionFont);
107  connect(m_personWidgets.at(i)->input, SIGNAL(returnPressed()), this, SLOT(nextConjugationForm()));
108  ++i;
109  }
110 }
111 
112 void ConjugationModeWidget::showQuestion()
113 {
114  Q_ASSERT(!m_personWidgets.isEmpty());
115  QTimer::singleShot(0, m_personWidgets.at(0)->input, SLOT(setFocus()));
116  m_ui->feedbackLabel->setText(i18n("Enter all conjugation forms."));
117 }
118 
119 void ConjugationModeWidget::setSolution(const QVariant& solution)
120 {
121  m_solution = solution.toStringList();
122 }
123 
124 void ConjugationModeWidget::setFeedback(const QVariant& feedback)
125 {
126  m_ui->feedbackLabel->setText(feedback.toString());
127 }
128 
129 void ConjugationModeWidget::showSolution()
130 {
131  for (int i = 0; i < m_solution.size() && i < m_personWidgets.size(); ++i) {
132  if (m_personWidgets.at(i)->input->text() == m_solution.at(i)) {
133  m_personWidgets.at(i)->input->setPalette(m_correctPalette);
134  } else {
135  m_personWidgets.at(i)->input->setPalette(m_wrongPalette);
136  m_personWidgets.at(i)->solution->setPalette(m_correctPalette);
137  m_personWidgets.at(i)->solution->setText(m_solution.at(i));
138  }
139  }
140 }
141 
142 QVariant ConjugationModeWidget::userInput()
143 {
144  QStringList answers;
145  for (int i = 0; i < m_personWidgets.size(); ++i) {
146  answers.append(m_personWidgets.at(i)->input->text());
147  }
148  return answers;
149 }
150 
151 void ConjugationModeWidget::setHint(const QVariant& /*hint*/)
152 {
153 }
154 
155 void ConjugationModeWidget::setNumberOfConjugationWidgets(const int numberOfForms)
156 {
157  while (m_personWidgets.size() < numberOfForms) {
158  PersonConjugationSolutionWidgets* w = new PersonConjugationSolutionWidgets(m_ui->conjugationsLayout, this);
159  m_personWidgets.append(w);
160  }
161  for (int i = 0; i < m_personWidgets.size(); ++i) {
162  m_personWidgets[i]->setVisible(i < numberOfForms);
163  }
164 }
165 
166 void ConjugationModeWidget::nextConjugationForm()
167 {
168  for (int i = 0; i < m_personWidgets.count(); ++i) {
169  if (sender() == m_personWidgets.at(i)->input) {
170  if ((i + 1 < m_personWidgets.count()) && (m_personWidgets.at(i + 1)->input->isVisible())) {
171  // move to the next input widget
172  m_personWidgets.at(i + 1)->input->setFocus();
173  } else {
174  emit continueAction();
175  }
176  return;
177  }
178  }
179 }
180 
181 void ConjugationModeWidget::setQuestionPronunciation(const QString& /*pronunciationText*/)
182 {
183 }
184 
185 void ConjugationModeWidget::setSolutionPronunciation(const QString& /*pronunciationText*/)
186 {
187 }
188 
189 void ConjugationModeWidget::setQuestionSound(const KUrl& /*soundUrl*/)
190 {
191 
192 }
193 void ConjugationModeWidget::setSolutionSound(const KUrl& /*soundUrl*/)
194 {
195 }
196 
197 
198 #include "conjugationmodewidget.moc"
QVariant::canConvert
bool canConvert(Type t) const
QWidget
Practice::ConjugationModeWidget::showQuestion
virtual void showQuestion()
Definition: conjugationmodewidget.cpp:112
Practice::GuiFrontend
Definition: guifrontend.h:35
Practice::ConjugationModeWidget::setFeedback
virtual void setFeedback(const QVariant &feedback)
Definition: conjugationmodewidget.cpp:124
Practice::ConjugationModeWidget::setSolutionSound
virtual void setSolutionSound(const KUrl &soundUrl)
Definition: conjugationmodewidget.cpp:193
QGridLayout::addWidget
void addWidget(QWidget *widget, int row, int column, QFlags< Qt::AlignmentFlag > alignment)
Practice::ConjugationModeWidget::setQuestionSound
virtual void setQuestionSound(const KUrl &soundUrl)
Definition: conjugationmodewidget.cpp:189
QObject::sender
QObject * sender() const
QFont
QList::at
const T & at(int i) const
Practice::AbstractModeWidget::continueAction
void continueAction()
Practice::ConjugationModeWidget::setQuestionPronunciation
virtual void setQuestionPronunciation(const QString &pronunciationText)
Definition: conjugationmodewidget.cpp:181
QVariant::value
T value() const
QGridLayout
Practice::ConjugationModeWidget::showSolution
virtual void showSolution()
Definition: conjugationmodewidget.cpp:129
Practice::ConjugationModeWidget::setQuestion
virtual void setQuestion(const QVariant &question)
Definition: conjugationmodewidget.cpp:75
Practice::AbstractModeWidget
Definition: abstractwidget.h:27
Practice::ConjugationData::tense
QString tense
Definition: conjugationdata.h:30
Practice::ConjugationModeWidget::~ConjugationModeWidget
virtual ~ConjugationModeWidget()
Definition: conjugationmodewidget.cpp:59
Practice::ConjugationModeWidget::setSolutionFont
virtual void setSolutionFont(const QFont &font)
Definition: conjugationmodewidget.cpp:69
QList::size
int size() const
QList::count
int count(const T &value) const
QList::append
void append(const T &value)
Practice::ConjugationData::personalPronouns
QStringList personalPronouns
Definition: conjugationdata.h:31
Practice::ConjugationData::questionInfinitive
QString questionInfinitive
Definition: conjugationdata.h:28
QWidget::setFocus
void setFocus()
QList::isEmpty
bool isEmpty() const
Practice::AbstractModeWidget::m_correctPalette
QPalette m_correctPalette
Definition: abstractwidget.h:76
Practice::ConjugationModeWidget::setQuestionFont
virtual void setQuestionFont(const QFont &font)
Definition: conjugationmodewidget.cpp:64
QString
QApplication::palette
QPalette palette()
QStringList
Practice::AbstractModeWidget::m_wrongPalette
QPalette m_wrongPalette
Definition: abstractwidget.h:77
QWidget::font
const QFont & font() const
QGridLayout::rowCount
int rowCount() const
QVariant::toStringList
QStringList toStringList() const
Practice::ConjugationModeWidget::setSolutionPronunciation
virtual void setSolutionPronunciation(const QString &pronunciationText)
Definition: conjugationmodewidget.cpp:185
conjugationmodewidget.h
conjugationdata.h
Practice::ConjugationData::solutionInfinitive
QString solutionInfinitive
Definition: conjugationdata.h:29
Practice::ConjugationModeWidget::ConjugationModeWidget
ConjugationModeWidget(GuiFrontend *frontend, QWidget *parent=0)
Definition: conjugationmodewidget.cpp:52
QLineEdit
Practice::ConjugationModeWidget::userInput
virtual QVariant userInput()
Definition: conjugationmodewidget.cpp:142
Practice::ConjugationData
Definition: conjugationdata.h:27
Practice::ConjugationModeWidget::setHint
virtual void setHint(const QVariant &hint)
Definition: conjugationmodewidget.cpp:151
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QLabel
Practice::ConjugationModeWidget::setSolution
virtual void setSolution(const QVariant &solution)
Definition: conjugationmodewidget.cpp:119
QVariant::toString
QString toString() const
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