20 ** |
20 ** |
21 ** If you have questions regarding the use of this file, please contact |
21 ** If you have questions regarding the use of this file, please contact |
22 ** Nokia at developer.feedback@nokia.com. |
22 ** Nokia at developer.feedback@nokia.com. |
23 ** |
23 ** |
24 ****************************************************************************/ |
24 ****************************************************************************/ |
|
25 #include "hbinputextradictionarycollection.h" |
|
26 |
25 #include "hbinputextrauserdictionary.h" |
27 #include "hbinputextrauserdictionary.h" |
26 #include "hbinputextradictionaryfactory.h" |
28 #include "hbinputextradictionaryfactory.h" |
27 #include "hbinputextradictionarycollection.h" |
|
28 |
29 |
29 /*! |
30 /*! |
30 @proto |
31 @proto |
31 @hbcore |
32 @hbcore |
32 \class HbExtraDictionaryCollection |
33 \class HbExtraDictionaryCollection |
53 HbExtraDictionaryCollectionPrivate(); |
54 HbExtraDictionaryCollectionPrivate(); |
54 ~HbExtraDictionaryCollectionPrivate(); |
55 ~HbExtraDictionaryCollectionPrivate(); |
55 |
56 |
56 void addDictionaries(QList<int>& newOnes); |
57 void addDictionaries(QList<int>& newOnes); |
57 void addDictionary(int newId); |
58 void addDictionary(int newId); |
58 void addDictionary(HbExtraUserDictionary* newOne); |
59 void addDictionary(HbExtraUserDictionary *newOne); |
59 |
60 |
60 void removeDictionary(int dictId); |
61 void removeDictionary(int dictId); |
61 void removeDictionary(HbExtraUserDictionary* dict); |
62 void removeDictionary(HbExtraUserDictionary *dict); |
62 |
63 |
63 bool isAlreadyInList(int dictId) const; |
64 bool isAlreadyInList(int dictId) const; |
64 |
65 |
65 int isDisabled(int index) const { return ((0x0001 << index) & deactivated); } |
66 int isDisabled(int index) const { |
66 void enable(int index) { deactivated &= !(0x0001 << index); } |
67 return ((0x0001 << index) & deactivated); |
67 void disable(int index) { deactivated |= (0x0001 << index); } |
68 } |
|
69 |
|
70 void enable(int index) { |
|
71 deactivated &= !(0x0001 << index); |
|
72 } |
|
73 |
|
74 void disable(int index) { |
|
75 deactivated |= (0x0001 << index); |
|
76 } |
68 |
77 |
69 int dictionaryIndex(int id) const; |
78 int dictionaryIndex(int id) const; |
70 |
79 |
71 public: |
80 public: |
72 QList<HbExtraUserDictionary*> dictionaries; |
81 QList<HbExtraUserDictionary *> dictionaries; |
73 unsigned short deactivated; // Bit vector |
82 unsigned short deactivated; // Bit vector |
74 }; |
83 }; |
75 |
84 |
76 |
85 |
77 HbExtraDictionaryCollectionPrivate::HbExtraDictionaryCollectionPrivate() : deactivated(0) |
86 HbExtraDictionaryCollectionPrivate::HbExtraDictionaryCollectionPrivate() : deactivated(0) |
102 dictionaries.append(newDict); |
111 dictionaries.append(newDict); |
103 } |
112 } |
104 } |
113 } |
105 } |
114 } |
106 |
115 |
107 void HbExtraDictionaryCollectionPrivate::addDictionary(HbExtraUserDictionary* newOne) |
116 void HbExtraDictionaryCollectionPrivate::addDictionary(HbExtraUserDictionary *newOne) |
108 { |
117 { |
109 if (newOne && !isAlreadyInList(newOne->id())) { |
118 if (newOne && !isAlreadyInList(newOne->id())) { |
110 dictionaries.append(newOne); |
119 dictionaries.append(newOne); |
111 } |
120 } |
112 } |
121 } |
113 |
122 |
114 void HbExtraDictionaryCollectionPrivate::removeDictionary(int dictId) |
123 void HbExtraDictionaryCollectionPrivate::removeDictionary(int dictId) |
115 { |
124 { |
116 int index = dictionaryIndex(dictId); |
125 int index = dictionaryIndex(dictId); |
117 if (index >= 0) { |
126 if (index >= 0) { |
118 dictionaries.removeAt(index); |
127 dictionaries.removeAt(index); |
119 |
128 |
120 } |
129 } |
121 } |
130 } |
122 |
131 |
123 void HbExtraDictionaryCollectionPrivate::removeDictionary(HbExtraUserDictionary* dict) |
132 void HbExtraDictionaryCollectionPrivate::removeDictionary(HbExtraUserDictionary *dict) |
124 { |
133 { |
125 for (int i = 0; i < dictionaries.count(); i++) { |
134 for (int i = 0; i < dictionaries.count(); i++) { |
126 if (dictionaries[i] == dict) { |
135 if (dictionaries[i] == dict) { |
127 dictionaries.removeAt(i); |
136 dictionaries.removeAt(i); |
128 } |
137 } |
165 loading dictionaries. |
174 loading dictionaries. |
166 */ |
175 */ |
167 HbExtraDictionaryCollection::HbExtraDictionaryCollection(QList<int> dictionaries) : d_ptr(new HbExtraDictionaryCollectionPrivate) |
176 HbExtraDictionaryCollection::HbExtraDictionaryCollection(QList<int> dictionaries) : d_ptr(new HbExtraDictionaryCollectionPrivate) |
168 { |
177 { |
169 Q_D(HbExtraDictionaryCollection); |
178 Q_D(HbExtraDictionaryCollection); |
170 d->addDictionaries(dictionaries); |
179 d->addDictionaries(dictionaries); |
171 } |
180 } |
172 |
181 |
173 /*! |
182 /*! |
174 Destructs the object. |
183 Destructs the object. |
175 */ |
184 */ |
178 delete d_ptr; |
187 delete d_ptr; |
179 } |
188 } |
180 |
189 |
181 /*! |
190 /*! |
182 Adds given dictionary to the collection if it is avaivale. Uses HbExtraDictionaryFactory |
191 Adds given dictionary to the collection if it is avaivale. Uses HbExtraDictionaryFactory |
183 for loading the dictionary. Returns true if dictionary was found and succesfully added. |
192 for loading the dictionary. Returns true if dictionary was found and succesfully added. |
184 */ |
193 */ |
185 bool HbExtraDictionaryCollection::addDictionary(int id) |
194 bool HbExtraDictionaryCollection::addDictionary(int id) |
186 { |
195 { |
187 Q_D(HbExtraDictionaryCollection); |
196 Q_D(HbExtraDictionaryCollection); |
188 |
197 |
189 if (d->dictionaries.count() < HbMaxDictionariesInCollection) { |
198 if (d->dictionaries.count() < HbMaxDictionariesInCollection) { |
190 d->addDictionary(id); |
199 d->addDictionary(id); |
191 return true; |
200 return true; |
192 } |
201 } |
193 |
202 |
194 return false; |
203 return false; |
195 } |
204 } |
196 |
205 |
197 /*! |
206 /*! |
198 Adds given dictionary to the collection. |
207 Adds given dictionary to the collection. |
199 */ |
208 */ |
200 bool HbExtraDictionaryCollection::addDictionary(HbExtraUserDictionary *dictionary) |
209 bool HbExtraDictionaryCollection::addDictionary(HbExtraUserDictionary *dictionary) |
201 { |
210 { |
202 Q_D(HbExtraDictionaryCollection); |
211 Q_D(HbExtraDictionaryCollection); |
203 |
212 |
204 if (d->dictionaries.count() < HbMaxDictionariesInCollection) { |
213 if (d->dictionaries.count() < HbMaxDictionariesInCollection) { |
205 d->addDictionary(dictionary); |
214 d->addDictionary(dictionary); |
206 return true; |
215 return true; |
207 } |
216 } |
208 |
217 |
209 return false; |
218 return false; |
210 } |
219 } |
211 |
220 |
212 /*! |
221 /*! |
213 Removes dictionary from the collection. |
222 Removes dictionary from the collection. |
214 */ |
223 */ |
215 void HbExtraDictionaryCollection::removeDictionary(int id) |
224 void HbExtraDictionaryCollection::removeDictionary(int id) |
216 { |
225 { |
217 Q_D(HbExtraDictionaryCollection); |
226 Q_D(HbExtraDictionaryCollection); |
218 d->removeDictionary(id); |
227 d->removeDictionary(id); |
219 } |
228 } |
220 |
229 |
221 /*! |
230 /*! |
222 Removes dictionary from the collection. |
231 Removes dictionary from the collection. |
223 */ |
232 */ |
224 void HbExtraDictionaryCollection::removeDictionary(HbExtraUserDictionary *dictionary) |
233 void HbExtraDictionaryCollection::removeDictionary(HbExtraUserDictionary *dictionary) |
225 { |
234 { |
226 Q_D(HbExtraDictionaryCollection); |
235 Q_D(HbExtraDictionaryCollection); |
227 d->removeDictionary(dictionary); |
236 d->removeDictionary(dictionary); |
228 } |
237 } |
229 |
238 |
230 /*! |
239 /*! |
231 Returns list of all dictionaries in the collection. Also disabled dictionaries |
240 Returns list of all dictionaries in the collection. Also disabled dictionaries |
232 will be included. |
241 will be included. |
282 /*! |
291 /*! |
283 Returns all the words in the collection that begin with contents of searchString. |
292 Returns all the words in the collection that begin with contents of searchString. |
284 Search is case insensitive. Only enabled dictionaries are part of the search. |
293 Search is case insensitive. Only enabled dictionaries are part of the search. |
285 Empty string will match to all words. |
294 Empty string will match to all words. |
286 */ |
295 */ |
287 QStringList HbExtraDictionaryCollection::findMatches(const QString& aSearchString, Qt::CaseSensitivity caseSensitivity) |
296 QStringList HbExtraDictionaryCollection::findMatches(const QString &aSearchString, Qt::CaseSensitivity caseSensitivity) |
288 { |
297 { |
289 Q_D(HbExtraDictionaryCollection); |
298 Q_D(HbExtraDictionaryCollection); |
290 |
299 |
291 QStringList results; |
300 QStringList results; |
292 |
301 |
300 } |
309 } |
301 |
310 |
302 /*! |
311 /*! |
303 Diables given dictionary, but still keeps it as part of the collection. |
312 Diables given dictionary, but still keeps it as part of the collection. |
304 All access and search operators will skip disabled dictionary until it is |
313 All access and search operators will skip disabled dictionary until it is |
305 enabled again. |
314 enabled again. |
306 |
315 |
307 \sa enableDictionary |
316 \sa enableDictionary |
308 */ |
317 */ |
309 void HbExtraDictionaryCollection::disableDictionary(int id) |
318 void HbExtraDictionaryCollection::disableDictionary(int id) |
310 { |
319 { |
311 Q_D(HbExtraDictionaryCollection); |
320 Q_D(HbExtraDictionaryCollection); |
312 |
321 |
313 int index = d->dictionaryIndex(id); |
322 int index = d->dictionaryIndex(id); |
314 if (index >= 0) { |
323 if (index >= 0) { |
315 d->disable(index); |
324 d->disable(index); |
316 } |
325 } |
317 } |
326 } |
318 |
327 |
319 /*! |
328 /*! |
320 Enables given dictionary. |
329 Enables given dictionary. |
321 |
330 |
322 \sa disableDictionary |
331 \sa disableDictionary |
323 */ |
332 */ |
324 void HbExtraDictionaryCollection::enableDictionary(int id) |
333 void HbExtraDictionaryCollection::enableDictionary(int id) |
325 { |
334 { |
326 Q_D(HbExtraDictionaryCollection); |
335 Q_D(HbExtraDictionaryCollection); |
327 |
336 |
328 int index = d->dictionaryIndex(id); |
337 int index = d->dictionaryIndex(id); |
329 if (index >= 0) { |
338 if (index >= 0) { |
330 d->enable(index); |
339 d->enable(index); |
331 } |
340 } |
332 } |
341 } |
333 |
342 |
334 /*! |
343 /*! |
335 Returns true if given dictionary is disabled. |
344 Returns true if given dictionary is disabled. |
370 } |
379 } |
371 |
380 |
372 /*! |
381 /*! |
373 Returns true if given word exists in any of the active dictionaries in the collection. |
382 Returns true if given word exists in any of the active dictionaries in the collection. |
374 */ |
383 */ |
375 bool HbExtraDictionaryCollection::hasWord(const QString& word) const |
384 bool HbExtraDictionaryCollection::hasWord(const QString &word) const |
376 { |
385 { |
377 Q_D(const HbExtraDictionaryCollection); |
386 Q_D(const HbExtraDictionaryCollection); |
378 |
387 |
379 for (int i = 0; i < d->dictionaries.count(); i++) { |
388 for (int i = 0; i < d->dictionaries.count(); i++) { |
380 if (!d->isDisabled(i)) { |
389 if (!d->isDisabled(i)) { |
389 |
398 |
390 /*! |
399 /*! |
391 Increments use count (frequency) for given word. Applied to all the instances of given word |
400 Increments use count (frequency) for given word. Applied to all the instances of given word |
392 in enabled part of the collection. |
401 in enabled part of the collection. |
393 */ |
402 */ |
394 void HbExtraDictionaryCollection::incrementUseCount(const QString& word) |
403 void HbExtraDictionaryCollection::incrementUseCount(const QString &word) |
395 { |
404 { |
396 Q_D(const HbExtraDictionaryCollection); |
405 Q_D(const HbExtraDictionaryCollection); |
397 |
406 |
398 for (int i = 0; i < d->dictionaries.count(); i++) { |
407 for (int i = 0; i < d->dictionaries.count(); i++) { |
399 if (!d->isDisabled(i)) { |
408 if (!d->isDisabled(i)) { |