• Skip to content
  • Skip to link menu
KDE 4.1 API Reference
  • KDE API Reference
  • kdelibs
  • Sitemap
  • Contact Us
 

KDECore

speller.cpp

Go to the documentation of this file.
00001 // -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*-
00021 #include "speller.h"
00022 
00023 #include "loader_p.h"
00024 #include "settings_p.h"
00025 #include "spellerplugin_p.h"
00026 
00027 #include <kconfig.h>
00028 
00029 namespace Sonnet
00030 {
00031 
00032 class Speller::Private
00033 {
00034 public:
00035     ~Private()
00036     {
00037         delete dict;
00038         dict = 0;
00039     }
00040     void init(const QString &lang)
00041     {
00042         Loader *loader = Loader::openLoader();
00043         settings = loader->settings();
00044 
00045         language = lang;
00046 
00047         if (language.isEmpty())
00048             language = settings->defaultLanguage();
00049 
00050         dict = loader->createSpeller(language);
00051     }
00052     bool isValid()
00053     {
00054         if (settings->modified()) {
00055             recreateDict();
00056             settings->setModified(false);
00057         }
00058         return dict;
00059     }
00060     void recreateDict()
00061     {
00062         delete dict;
00063         dict = Loader::openLoader()->createSpeller(language);
00064     }
00065 
00066     SpellerPlugin *dict;
00067     Settings      *settings;
00068 
00069     QString        language;
00070 };
00071 
00072 Speller::Speller(const QString &lang)
00073     : d(new Private)
00074 {
00075     d->init(lang);
00076 }
00077 
00078 
00079 Speller::~Speller()
00080 {
00081     //qDebug()<<"deleting "<<this;
00082     delete d;
00083 }
00084 
00085 
00086 Speller::Speller(const Speller &speller)
00087     : d(new Private)
00088 {
00089     d->language = speller.language();
00090     d->init(d->language);
00091 }
00092 
00093 
00094 Speller & Speller::operator=(const Speller &speller)
00095 {
00096     d->language = speller.language();
00097     d->recreateDict();
00098     return *this;
00099 }
00100 
00101 
00102 bool Speller::isCorrect(const QString &word) const
00103 {
00104     if (!d->isValid())
00105         return true;
00106     return d->dict->isCorrect(word);
00107 }
00108 
00109 
00110 bool Speller::isMisspelled(const QString &word) const
00111 {
00112     if (!d->isValid())
00113         return false;
00114     return d->dict->isMisspelled(word);
00115 }
00116 
00117 QStringList Speller::suggest(const QString &word) const
00118 {
00119     if (!d->isValid())
00120         return QStringList();
00121     return d->dict->suggest(word);
00122 }
00123 
00124 bool Speller::checkAndSuggest(const QString &word,
00125                               QStringList &suggestions) const
00126 {
00127     if (!d->isValid())
00128         return true;
00129     return d->dict->checkAndSuggest(word, suggestions);
00130 }
00131 
00132 
00133 bool Speller::storeReplacement(const QString &bad,
00134                                const QString &good)
00135 {
00136     if (!d->isValid())
00137         return false;
00138     return d->dict->storeReplacement(bad, good);
00139 }
00140 
00141 
00142 bool Speller::addToPersonal(const QString &word)
00143 {
00144     if (!d->isValid())
00145         return false;
00146     return d->dict->addToPersonal(word);
00147 }
00148 
00149 
00150 bool Speller::addToSession(const QString &word)
00151 {
00152     if (!d->isValid())
00153         return false;
00154     return d->dict->addToSession(word);
00155 }
00156 
00157 
00158 QString Speller::language() const
00159 {
00160     if (!d->isValid())
00161         return QString();
00162     return d->dict->language();
00163 }
00164 
00165 
00166 void Speller::save(KConfig *config)
00167 {
00168     if (d->settings) {
00169         d->settings->save(config);
00170     }
00171 }
00172 
00173 
00174 void Speller::restore(KConfig *config)
00175 {
00176     if (d->settings) {
00177         d->settings->restore(config);
00178         d->recreateDict();
00179     }
00180 }
00181 
00182 
00183 QStringList Speller::availableBackends() const
00184 {
00185     Loader *l = Loader::openLoader();
00186     return l->clients();
00187 }
00188 
00189 
00190 QStringList Speller::availableLanguages() const
00191 {
00192     Loader *l = Loader::openLoader();
00193     return l->languages();
00194 }
00195 
00196 
00197 QStringList Speller::availableLanguageNames() const
00198 {
00199     Loader *l = Loader::openLoader();
00200     return l->languageNames();
00201 }
00202 
00203 
00204 void Speller::setDefaultLanguage(const QString &lang)
00205 {
00206     d->settings->setDefaultLanguage(lang);
00207 }
00208 
00209 
00210 QString Speller::defaultLanguage() const
00211 {
00212     return d->settings->defaultLanguage();
00213 }
00214 
00215 
00216 void Speller::setDefaultClient(const QString &client)
00217 {
00218     d->settings->setDefaultClient(client);
00219 }
00220 
00221 
00222 QString Speller::defaultClient() const
00223 {
00224     return d->settings->defaultClient();
00225 }
00226 
00227 
00228 void Speller::setAttribute(Attribute attr, bool b)
00229 {
00230     switch (attr) {
00231     case CheckUppercase:
00232         d->settings->setCheckUppercase(b);
00233         break;
00234     case SkipRunTogether:
00235         d->settings->setSkipRunTogether(b);
00236         break;
00237     }
00238 }
00239 
00240 
00241 bool Speller::testAttribute(Attribute attr) const
00242 {
00243     switch (attr) {
00244     case CheckUppercase:
00245         return d->settings->checkUppercase();
00246         break;
00247     case SkipRunTogether:
00248         return d->settings->skipRunTogether();
00249         break;
00250     }
00251     return false;
00252 }
00253 
00254 bool Speller::isValid() const
00255 {
00256     return d->dict;
00257 }
00258 
00259 void Speller::setLanguage(const QString &lang)
00260 {
00261     d->language = lang;
00262     d->recreateDict();
00263 }
00264 
00265 }
00266 
00267 
00268 

KDECore

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

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • Kate
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • KIO
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • Kross
  • KUtils
  • Nepomuk
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal