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

KDECore

  • sources
  • kde-4.14
  • kdelibs
  • kdecore
  • sonnet
speller.cpp
Go to the documentation of this file.
1 // -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*-
21 #include "speller.h"
22 
23 #include "loader_p.h"
24 #include "settings_p.h"
25 #include "spellerplugin_p.h"
26 
27 #include <kconfig.h>
28 #include <kglobal.h>
29 #include <klocale.h>
30 #include <QLocale>
31 #include <QSet>
32 #include <QDebug>
33 
34 namespace Sonnet
35 {
36 
37 class Speller::Private
38 {
39 public:
40  ~Private()
41  {
42  delete dict;
43  dict = 0;
44  }
45  void init(const QString &lang)
46  {
47  Loader *loader = Loader::openLoader();
48  settings = loader->settings();
49 
50  language = lang;
51 
52  if (language.isEmpty())
53  language = settings->defaultLanguage();
54 
55  dict = loader->createSpeller(language);
56  }
57  bool isValid()
58  {
59  if (settings->modified()) {
60  recreateDict();
61  settings->setModified(false);
62  }
63  return dict;
64  }
65  void recreateDict()
66  {
67  delete dict;
68  dict = Loader::openLoader()->createSpeller(language);
69  }
70 
71  SpellerPlugin *dict;
72  Settings *settings;
73 
74  QString language;
75 };
76 
77 Speller::Speller(const QString &lang)
78  : d(new Private)
79 {
80  d->init(lang);
81 }
82 
83 
84 Speller::~Speller()
85 {
86  //qDebug()<<"deleting "<<this;
87  delete d;
88 }
89 
90 
91 Speller::Speller(const Speller &speller)
92  : d(new Private)
93 {
94  d->language = speller.language();
95  d->init(d->language);
96 }
97 
98 
99 Speller & Speller::operator=(const Speller &speller)
100 {
101  d->language = speller.language();
102  d->recreateDict();
103  return *this;
104 }
105 
106 
107 bool Speller::isCorrect(const QString &word) const
108 {
109  if (!d->isValid())
110  return true;
111  return d->dict->isCorrect(word);
112 }
113 
114 
115 bool Speller::isMisspelled(const QString &word) const
116 {
117  if (!d->isValid())
118  return false;
119  return d->dict->isMisspelled(word);
120 }
121 
122 QStringList Speller::suggest(const QString &word) const
123 {
124  if (!d->isValid())
125  return QStringList();
126  return d->dict->suggest(word);
127 }
128 
129 bool Speller::checkAndSuggest(const QString &word,
130  QStringList &suggestions) const
131 {
132  if (!d->isValid())
133  return true;
134  return d->dict->checkAndSuggest(word, suggestions);
135 }
136 
137 
138 bool Speller::storeReplacement(const QString &bad,
139  const QString &good)
140 {
141  if (!d->isValid())
142  return false;
143  return d->dict->storeReplacement(bad, good);
144 }
145 
146 
147 bool Speller::addToPersonal(const QString &word)
148 {
149  if (!d->isValid())
150  return false;
151  return d->dict->addToPersonal(word);
152 }
153 
154 
155 bool Speller::addToSession(const QString &word)
156 {
157  if (!d->isValid())
158  return false;
159  return d->dict->addToSession(word);
160 }
161 
162 
163 QString Speller::language() const
164 {
165  if (!d->isValid())
166  return QString();
167  return d->dict->language();
168 }
169 
170 
171 void Speller::save(KConfig *config)
172 {
173  if (d->settings) {
174  d->settings->save(config);
175  }
176 }
177 
178 
179 void Speller::restore(KConfig *config)
180 {
181  if (d->settings) {
182  d->settings->restore(config);
183  d->recreateDict();
184  }
185 }
186 
187 
188 QStringList Speller::availableBackends() const
189 {
190  Loader *l = Loader::openLoader();
191  return l->clients();
192 }
193 
194 
195 QStringList Speller::availableLanguages() const
196 {
197  Loader *l = Loader::openLoader();
198  return l->languages();
199 }
200 
201 
202 QStringList Speller::availableLanguageNames() const
203 {
204  Loader *l = Loader::openLoader();
205  return l->languageNames();
206 }
207 
208 
209 void Speller::setDefaultLanguage(const QString &lang)
210 {
211  d->settings->setDefaultLanguage(lang);
212 }
213 
214 
215 QString Speller::defaultLanguage() const
216 {
217  return d->settings->defaultLanguage();
218 }
219 
220 
221 void Speller::setDefaultClient(const QString &client)
222 {
223  d->settings->setDefaultClient(client);
224 }
225 
226 
227 QString Speller::defaultClient() const
228 {
229  return d->settings->defaultClient();
230 }
231 
232 
233 void Speller::setAttribute(Attribute attr, bool b)
234 {
235  switch (attr) {
236  case CheckUppercase:
237  d->settings->setCheckUppercase(b);
238  break;
239  case SkipRunTogether:
240  d->settings->setSkipRunTogether(b);
241  break;
242  }
243 }
244 
245 
246 bool Speller::testAttribute(Attribute attr) const
247 {
248  switch (attr) {
249  case CheckUppercase:
250  return d->settings->checkUppercase();
251  break;
252  case SkipRunTogether:
253  return d->settings->skipRunTogether();
254  break;
255  }
256  return false;
257 }
258 
259 bool Speller::isValid() const
260 {
261  return d->dict;
262 }
263 
264 void Speller::setLanguage(const QString &lang)
265 {
266  d->language = lang;
267  d->recreateDict();
268 }
269 
270 QMap<QString, QString> Sonnet::Speller::availableDictionaries() const
271 {
272  Loader *l = Loader::openLoader();
273  const QStringList lst = l->languages();
274  QMap<QString, QString> langs;
275 
276  foreach(QString tag, lst) { // krazy:exclude=foreach (no const& because tag is modified below)
277  tag = tag.mid(0, tag.indexOf(QLatin1Char('-')));
278  int underscorePos = tag.indexOf(QLatin1Char('_'));
279  QString cIsoName, lIsoName;
280  if (underscorePos != -1 && underscorePos <= 3) {
281  cIsoName = tag.mid(underscorePos + 1, 2);
282  lIsoName = tag.left(underscorePos);
283  } else {
284  lIsoName = tag;
285  }
286  //QLocale loc(tag);
287  QString description;
288 
289  if (!cIsoName.isEmpty())
290  description= QString::fromLatin1("%1 (%2)")
291  .arg(KGlobal::locale()->languageCodeToName(lIsoName))
292  .arg(KGlobal::locale()->countryCodeToName(cIsoName));
293  else
294  description= KGlobal::locale()->languageCodeToName(lIsoName);
295  //qDebug()<<"Dict is "<<tag<<" ( "<<loc.name()<<")"<<", descr = "<<description;
296  langs.insert(description, tag);
297  }
298 
299  return langs;
300 }
301 
302 }
QString::indexOf
int indexOf(QChar ch, int from, Qt::CaseSensitivity cs) const
Sonnet::Speller::testAttribute
bool testAttribute(Attribute attr) const
Definition: speller.cpp:246
Sonnet::Speller::setDefaultLanguage
void setDefaultLanguage(const QString &lang)
Definition: speller.cpp:209
Sonnet::Speller::storeReplacement
bool storeReplacement(const QString &bad, const QString &good)
Stores user defined good replacement for the bad word.
Definition: speller.cpp:138
Sonnet::Speller::save
void save(KConfig *config)
Definition: speller.cpp:171
kconfig.h
QMap
Sonnet::Speller::defaultClient
QString defaultClient() const
Definition: speller.cpp:227
settings_p.h
Sonnet::Speller::isValid
bool isValid() const
Returns true if the speller supports currently selected language.
Definition: speller.cpp:259
klocale.h
Sonnet::Speller::isCorrect
bool isCorrect(const QString &word) const
Checks the given word.
Definition: speller.cpp:107
Sonnet::Speller::checkAndSuggest
bool checkAndSuggest(const QString &word, QStringList &suggestions) const
Convience method calling isCorrect() and suggest() if the word isn't correct.
Definition: speller.cpp:129
KLocale::languageCodeToName
QString languageCodeToName(const QString &language) const
Convert a known language code to a human readable, localized form.
Definition: klocale.cpp:670
KGlobal::config
KSharedConfigPtr config()
Returns the general config object.
Definition: kglobal.cpp:139
kglobal.h
Sonnet::Loader::clients
QStringList clients() const
Returns names of all supported clients (e.g.
Definition: loader.cpp:118
Sonnet::Speller::suggest
QStringList suggest(const QString &word) const
Fetches suggestions for the word.
Definition: speller.cpp:122
QString::isEmpty
bool isEmpty() const
spellerplugin_p.h
speller.h
Sonnet::Speller::CheckUppercase
Definition: speller.h:109
Sonnet::Speller::availableBackends
QStringList availableBackends() const
Returns names of all supported backends (e.g.
Definition: speller.cpp:188
Sonnet::Speller::availableLanguageNames
QStringList availableLanguageNames() const
Returns a localized list of names of supported languages.
Definition: speller.cpp:202
QString
Sonnet::Loader::languageNames
QStringList languageNames() const
Returns a localized list of names of supported languages.
Definition: loader.cpp:228
Sonnet::Speller::setDefaultClient
void setDefaultClient(const QString &client)
Definition: speller.cpp:221
QStringList
Sonnet::Speller
Spell checker object.
Definition: speller.h:38
Sonnet::Loader::languages
QStringList languages() const
Returns a list of supported languages.
Definition: loader.cpp:123
loader_p.h
Sonnet::Speller::setAttribute
void setAttribute(Attribute attr, bool b=true)
Definition: speller.cpp:233
QLatin1Char
Sonnet::Speller::SkipRunTogether
Definition: speller.h:110
Sonnet::Speller::~Speller
~Speller()
Definition: speller.cpp:84
KGlobal::locale
KLocale * locale()
Returns the global locale object.
Definition: kglobal.cpp:170
KConfig
The central class of the KDE configuration data system.
Definition: kconfig.h:70
Sonnet::Speller::defaultLanguage
QString defaultLanguage() const
Definition: speller.cpp:215
Sonnet::Speller::availableDictionaries
QMap< QString, QString > availableDictionaries() const
Returns a map of all available language descriptions and their codes.
Definition: speller.cpp:270
QString::mid
QString mid(int position, int n) const
Sonnet::Speller::restore
void restore(KConfig *config)
Definition: speller.cpp:179
Sonnet::Speller::Speller
Speller(const QString &lang=QString())
Definition: speller.cpp:77
Sonnet::Loader::openLoader
static Loader * openLoader()
Constructs the loader.
Definition: loader.cpp:55
Sonnet::Speller::operator=
Speller & operator=(const Speller &speller)
Definition: speller.cpp:99
Sonnet::Speller::isMisspelled
bool isMisspelled(const QString &word) const
Checks the given word.
Definition: speller.cpp:115
Sonnet::Loader::createSpeller
SpellerPlugin * createSpeller(const QString &language=QString(), const QString &client=QString()) const
Returns dictionary for the given language and preferred client.
Definition: loader.cpp:81
QString::left
QString left(int n) const
Sonnet::Speller::Attribute
Attribute
Definition: speller.h:108
QString::fromLatin1
QString fromLatin1(const char *str, int size)
Sonnet::Loader
Class used to deal with dictionaries.
Definition: loader_p.h:45
Sonnet::Speller::addToPersonal
bool addToPersonal(const QString &word)
Adds word to the list of of personal words.
Definition: speller.cpp:147
QMap::insert
iterator insert(const Key &key, const T &value)
Sonnet::Speller::addToSession
bool addToSession(const QString &word)
Adds word to the words recognizable in the current session.
Definition: speller.cpp:155
Sonnet::Speller::language
QString language() const
Returns language supported by this speller.
Definition: speller.cpp:163
Sonnet::Speller::availableLanguages
QStringList availableLanguages() const
Returns a list of supported languages.
Definition: speller.cpp:195
QString::arg
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
Sonnet::Speller::setLanguage
void setLanguage(const QString &lang)
Sets the language supported by this speller.
Definition: speller.cpp:264
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:22:12 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDECore

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

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

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