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

libkdeedu/keduvocdocument

  • sources
  • kde-4.12
  • kdeedu
  • libkdeedu
  • keduvocdocument
keduvoccontainer.cpp
Go to the documentation of this file.
1 /***************************************************************************
2 
3  Copyright 2007 Jeremy Whiting <jpwhiting@kde.org>
4  Copyright 2007 Frederik Gladhorn <frederik.gladhorn@kdemail.net>
5 
6  ***************************************************************************/
7 
8 /***************************************************************************
9  * *
10  * This program is free software; you can redistribute it and/or modify *
11  * it under the terms of the GNU General Public License as published by *
12  * the Free Software Foundation; either version 2 of the License, or *
13  * (at your option) any later version. *
14  * *
15  ***************************************************************************/
16 
17 #include "keduvoccontainer.h"
18 
19 #include "keduvocexpression.h"
20 
21 #include <KDebug>
22 #include <QList>
23 
25 class KEduVocContainer::Private
26 {
27 public:
28  ~Private();
29 
30  // properties for this lesson
31  QString m_name;
32  bool m_inPractice;
33 
34  // other lessons in the tree
35  KEduVocContainer *m_parentContainer;
36  QList < KEduVocContainer * > m_childContainers;
37 
38  EnumContainerType m_type;
39 
40  QList < KEduVocExpression* > m_childLessonEntries;
41  bool m_childLessonEntriesValid;
42 
44  KUrl m_imageUrl;
45 };
46 
47 KEduVocContainer::Private::~Private()
48 {
49  qDeleteAll(m_childContainers);
50 }
51 
52 KEduVocContainer::KEduVocContainer(const QString& name, EnumContainerType type, KEduVocContainer *parent)
53  : d( new Private )
54 {
55  d->m_parentContainer = parent;
56  d->m_name = name;
57  d->m_inPractice = true;
58  d->m_type = type;
59  d->m_childLessonEntriesValid = false;
60 }
61 
62 KEduVocContainer::KEduVocContainer( const KEduVocContainer &other )
63  : d( new Private )
64 {
65  d->m_name = other.d->m_name;
66  d->m_inPractice = other.d->m_inPractice;
67  d->m_type = other.d->m_type;
68  d->m_parentContainer = other.d->m_parentContainer;
69  d->m_childLessonEntriesValid = false;
70 }
71 
72 KEduVocContainer::~KEduVocContainer()
73 {
74  delete d;
75 }
76 
77 void KEduVocContainer::appendChildContainer(KEduVocContainer * child)
78 {
79  d->m_childContainers.append(child);
80  child->d->m_parentContainer = this;
81 
82  invalidateChildLessonEntries();
83 }
84 
85 KEduVocContainer * KEduVocContainer::childContainer(int row)
86 {
87  return d->m_childContainers.value(row);
88 }
89 
90 
91 KEduVocContainer * KEduVocContainer::childContainer(const QString & name)
92 {
93  if (d->m_name == name) {
94  return this;
95  }
96 
97  foreach (KEduVocContainer *container, d->m_childContainers) {
98  KEduVocContainer *found = container->childContainer(name);
99  if (found) {
100  return found;
101  }
102  }
103  return 0;
104 }
105 
106 
107 void KEduVocContainer::deleteChildContainer(int row)
108 {
109  kDebug() << "Delete of container - check entry deletion!";
110  delete d->m_childContainers.takeAt(row);
111 
112  invalidateChildLessonEntries();
113 }
114 
115 void KEduVocContainer::removeChildContainer(int row)
116 {
117  d->m_childContainers.removeAt(row);
118  invalidateChildLessonEntries();
119 }
120 
121 
122 int KEduVocContainer::childContainerCount() const
123 {
124  return d->m_childContainers.count();
125 }
126 
127 int KEduVocContainer::row() const
128 {
129  if (d->m_parentContainer) {
130  return d->m_parentContainer->d->m_childContainers.indexOf(const_cast<KEduVocContainer*>(this));
131  }
132  return 0;
133 }
134 
135 
136 KEduVocContainer& KEduVocContainer::operator= ( const KEduVocContainer &other )
137 {
138  d->m_name = other.d->m_name;
139  d->m_inPractice = other.d->m_inPractice;
140  return *this;
141 }
142 
143 bool KEduVocContainer::operator==(const KEduVocContainer &other)
144 {
145  return d->m_name == other.d->m_name &&
146  d->m_inPractice == other.d->m_inPractice
148  ;
149 }
150 
151 void KEduVocContainer::setName( const QString &name )
152 {
153  d->m_name = name;
154 }
155 
156 QString KEduVocContainer::name()
157 {
158  return d->m_name;
159 }
160 
161 bool KEduVocContainer::inPractice()
162 {
163  return d->m_inPractice;
164 }
165 
166 void KEduVocContainer::setInPractice(bool inPractice)
167 {
168  d->m_inPractice = inPractice;
169 }
170 
171 void KEduVocContainer::removeTranslation(int translation)
172 {
173  foreach(KEduVocContainer *childContainer, d->m_childContainers) {
174  childContainer->removeTranslation(translation);
175  }
176 
177  foreach(KEduVocExpression *entry, entries() ) {
178  entry->removeTranslation( translation );
179  }
180 }
181 
182 QList< KEduVocExpression * > KEduVocContainer::entriesRecursive()
183 {
184  if (!d->m_childLessonEntriesValid) {
185  updateChildLessonEntries();
186  }
187  return d->m_childLessonEntries;
188 }
189 
190 QList< KEduVocContainer * > KEduVocContainer::childContainers()
191 {
192  return d->m_childContainers;
193 }
194 
195 KEduVocContainer * KEduVocContainer::parent()
196 {
197  return d->m_parentContainer;
198 }
199 
200 void KEduVocContainer::setContainerType(KEduVocContainer::EnumContainerType type)
201 {
202  d->m_type = type;
203 }
204 
205 KEduVocContainer::EnumContainerType KEduVocContainer::containerType()
206 {
207  return d->m_type;
208 }
209 
210 
211 KUrl KEduVocContainer::imageUrl()
212 {
213  return d->m_imageUrl;
214 }
215 
216 void KEduVocContainer::setImageUrl(const KUrl &url)
217 {
218  d->m_imageUrl = url;
219 }
220 
221 void KEduVocContainer::insertChildContainer(int row, KEduVocContainer * child)
222 {
223  d->m_childContainers.insert(row, child);
224  child->d->m_parentContainer = this;
225 
226  invalidateChildLessonEntries();
227 }
228 
229 void KEduVocContainer::updateChildLessonEntries()
230 {
231  QList < KEduVocExpression* > entriesRecursive = entries();
232 
233  foreach(KEduVocContainer *childContainer, d->m_childContainers)
234  foreach(KEduVocExpression * expr, childContainer->entries(Recursive))
235  entriesRecursive.append(expr);
236 
237  d->m_childLessonEntries = entriesRecursive;
238  d->m_childLessonEntriesValid = true;
239 }
240 
241 void KEduVocContainer::invalidateChildLessonEntries()
242 {
243  d->m_childLessonEntriesValid = false;
244  // propagate to parent
245  if (d->m_parentContainer) {
246  d->m_parentContainer->invalidateChildLessonEntries();
247  }
248 }
249 
250 double KEduVocContainer::averageGrade(int translation, EnumEntriesRecursive recursive)
251 {
252  // grades range from 0..7 right now
253  int sum = 0;
254  foreach (KEduVocExpression *entry, entries(recursive)) {
255  sum += entry->translation(translation)->grade();
256  }
257  // make that a percentage
258  return (sum * 100.0/7.0)/entryCount(recursive);
259 }
260 
261 int KEduVocContainer::expressionsOfGrade(int translation, grade_t grade, EnumEntriesRecursive recursive)
262 {
263  int sum = 0;
264  foreach (KEduVocExpression *entry, entries(recursive)) {
265  if (entry->translation(translation)->grade() == grade) {
266  sum++;
267  }
268  }
269  return sum;
270 }
271 
272 void KEduVocContainer::resetGrades(int translation, EnumEntriesRecursive recursive)
273 {
274  foreach (KEduVocExpression *entry, entries(recursive)) {
275  entry->resetGrades(translation);
276  }
277 }
278 
KEduVocContainer::childContainers
QList< KEduVocContainer * > childContainers()
Definition: keduvoccontainer.cpp:190
KEduVocContainer::~KEduVocContainer
virtual ~KEduVocContainer()
destructor
Definition: keduvoccontainer.cpp:72
keduvocexpression.h
KEduVocContainer::inPractice
bool inPractice()
Definition: keduvoccontainer.cpp:161
KEduVocContainer
class to store information about a container - that can be a lesson or word types ...
Definition: keduvoccontainer.h:30
KEduVocContainer::entries
virtual QList< KEduVocExpression * > entries(EnumEntriesRecursive recursive=NotRecursive)=0
get a list of all entries in the container
KEduVocContainer::setName
void setName(const QString &name)
set the container name
Definition: keduvoccontainer.cpp:151
KEduVocExpression::removeTranslation
void removeTranslation(int index)
removes a translation
Definition: keduvocexpression.cpp:117
KEduVocContainer::EnumContainerType
EnumContainerType
Definition: keduvoccontainer.h:35
KEduVocContainer::childContainer
KEduVocContainer * childContainer(int row)
Definition: keduvoccontainer.cpp:85
KEduVocExpression::resetGrades
void resetGrades(int index)
reset all grades of the entry
Definition: keduvocexpression.cpp:162
KEduVocContainer::containerType
KEduVocContainer::EnumContainerType containerType()
The type of this container.
Definition: keduvoccontainer.cpp:205
KEduVocContainer::KEduVocContainer
KEduVocContainer(const QString &name, EnumContainerType type, KEduVocContainer *parent=0)
default constructor
Definition: keduvoccontainer.cpp:52
KEduVocContainer::entry
virtual KEduVocExpression * entry(int row, EnumEntriesRecursive recursive=NotRecursive)=0
KEduVocContainer::setContainerType
void setContainerType(KEduVocContainer::EnumContainerType type)
Set the type of container.
Definition: keduvoccontainer.cpp:200
KEduVocContainer::invalidateChildLessonEntries
void invalidateChildLessonEntries()
Set the child entry cache to invalid.
Definition: keduvoccontainer.cpp:241
KEduVocContainer::operator=
KEduVocContainer & operator=(const KEduVocContainer &)
assignment operator
Definition: keduvoccontainer.cpp:136
KEduVocContainer::EnumEntriesRecursive
EnumEntriesRecursive
Definition: keduvoccontainer.h:42
KEduVocContainer::entryCount
virtual int entryCount(EnumEntriesRecursive recursive=NotRecursive)=0
KEduVocContainer::operator==
bool operator==(const KEduVocContainer &other)
equality operator
Definition: keduvoccontainer.cpp:143
KEduVocContainer::childContainerCount
int childContainerCount() const
Find a child container.
Definition: keduvoccontainer.cpp:122
KEduVocContainer::resetGrades
void resetGrades(int translation, EnumEntriesRecursive recursive)
Remove grades from all entries of this lessons.
Definition: keduvoccontainer.cpp:272
KEduVocContainer::imageUrl
KUrl imageUrl()
get the image url for this container if it exists
Definition: keduvoccontainer.cpp:211
KEduVocContainer::setInPractice
void setInPractice(bool inPractice)
Definition: keduvoccontainer.cpp:166
KEduVocContainer::parent
virtual KEduVocContainer * parent()
Definition: keduvoccontainer.cpp:195
KEduVocContainer::removeTranslation
void removeTranslation(int translation)
Removes a translation.
Definition: keduvoccontainer.cpp:171
KEduVocContainer::updateChildLessonEntries
void updateChildLessonEntries()
Recreate the cache of entries in this lesson's child lessons.
Definition: keduvoccontainer.cpp:229
grade_t
unsigned short grade_t
Definition: keduvoctext.h:49
KEduVocContainer::deleteChildContainer
void deleteChildContainer(int row)
Definition: keduvoccontainer.cpp:107
KEduVocContainer::Recursive
Definition: keduvoccontainer.h:44
KEduVocContainer::insertChildContainer
void insertChildContainer(int row, KEduVocContainer *child)
Definition: keduvoccontainer.cpp:221
KEduVocContainer::setImageUrl
void setImageUrl(const KUrl &url)
set the image url for this container
Definition: keduvoccontainer.cpp:216
KEduVocContainer::name
QString name()
get the container name
Definition: keduvoccontainer.cpp:156
KEduVocExpression
This class contains one vocabulary expression as an original with one or more translations.
Definition: keduvocexpression.h:37
KEduVocContainer::expressionsOfGrade
int expressionsOfGrade(int translation, grade_t grade, EnumEntriesRecursive recursive)
Definition: keduvoccontainer.cpp:261
KEduVocContainer::appendChildContainer
void appendChildContainer(KEduVocContainer *child)
Definition: keduvoccontainer.cpp:77
KEduVocExpression::translation
KEduVocTranslation * translation(int index)
Get a pointer to the translation.
Definition: keduvocexpression.cpp:182
KEduVocContainer::entriesRecursive
QList< KEduVocExpression * > entriesRecursive()
Definition: keduvoccontainer.cpp:182
KEduVocContainer::averageGrade
double averageGrade(int translation, EnumEntriesRecursive recursive)
Definition: keduvoccontainer.cpp:250
KEduVocContainer::row
int row() const
Definition: keduvoccontainer.cpp:127
keduvoccontainer.h
KEduVocText::grade
grade_t grade() const
returns grade as int
Definition: keduvoctext.cpp:77
KEduVocContainer::removeChildContainer
void removeChildContainer(int row)
Definition: keduvoccontainer.cpp:115
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:37:21 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

libkdeedu/keduvocdocument

Skip menu "libkdeedu/keduvocdocument"
  • 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
  • kstars
  • libkdeedu
  •   keduvocdocument
  • 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