src/hbcore/inputfw/hbinputextradictionarycollection.cpp
changeset 6 c3690ec91ef8
parent 0 16d8024aca5e
child 30 80e4d18b72f5
equal deleted inserted replaced
5:627c4a0fd0e7 6:c3690ec91ef8
    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.
   237 
   246 
   238     QList<int> results;
   247     QList<int> results;
   239 
   248 
   240     for (int i = 0; i < d->dictionaries.count(); i++) {
   249     for (int i = 0; i < d->dictionaries.count(); i++) {
   241         results.append(d->dictionaries[i]->id());
   250         results.append(d->dictionaries[i]->id());
   242         }
   251     }
   243 
   252 
   244     return QList<int>(results);
   253     return QList<int>(results);
   245 }
   254 }
   246 
   255 
   247 /*!
   256 /*!
   270     Q_D(const HbExtraDictionaryCollection);
   279     Q_D(const HbExtraDictionaryCollection);
   271 
   280 
   272     int ret = 0;
   281     int ret = 0;
   273 
   282 
   274     for (int i = 0; i < d->dictionaries.count(); i++) {
   283     for (int i = 0; i < d->dictionaries.count(); i++) {
   275         ret += d->dictionaries[i]->numberOfWords();        
   284         ret += d->dictionaries[i]->numberOfWords();
   276     }
   285     }
   277 
   286 
   278     return ret;
   287     return ret;
   279 }
   288 }
   280 
   289 
   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.
   338 {
   347 {
   339     Q_D(const HbExtraDictionaryCollection);
   348     Q_D(const HbExtraDictionaryCollection);
   340 
   349 
   341     int index =  d->dictionaryIndex(dictionaryId);
   350     int index =  d->dictionaryIndex(dictionaryId);
   342     if (index >= 0) {
   351     if (index >= 0) {
   343         return d->isDisabled(index); 
   352         return d->isDisabled(index);
   344     }
   353     }
   345     
   354 
   346     return false;
   355     return false;
   347 }
   356 }
   348 
   357 
   349 /*!
   358 /*!
   350 Returns word at the given index in the set of enabled dictionaries. Returns empty string
   359 Returns word at the given index in the set of enabled dictionaries. Returns empty string
   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)) {