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

KDECore

  • 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
34namespace Sonnet
35{
36
37class Speller::Private
38{
39public:
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
77Speller::Speller(const QString &lang)
78 : d(new Private)
79{
80 d->init(lang);
81}
82
83
84Speller::~Speller()
85{
86 //qDebug()<<"deleting "<<this;
87 delete d;
88}
89
90
91Speller::Speller(const Speller &speller)
92 : d(new Private)
93{
94 d->language = speller.language();
95 d->init(d->language);
96}
97
98
99Speller & Speller::operator=(const Speller &speller)
100{
101 d->language = speller.language();
102 d->recreateDict();
103 return *this;
104}
105
106
107bool Speller::isCorrect(const QString &word) const
108{
109 if (!d->isValid())
110 return true;
111 return d->dict->isCorrect(word);
112}
113
114
115bool Speller::isMisspelled(const QString &word) const
116{
117 if (!d->isValid())
118 return false;
119 return d->dict->isMisspelled(word);
120}
121
122QStringList Speller::suggest(const QString &word) const
123{
124 if (!d->isValid())
125 return QStringList();
126 return d->dict->suggest(word);
127}
128
129bool 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
138bool 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
147bool Speller::addToPersonal(const QString &word)
148{
149 if (!d->isValid())
150 return false;
151 return d->dict->addToPersonal(word);
152}
153
154
155bool Speller::addToSession(const QString &word)
156{
157 if (!d->isValid())
158 return false;
159 return d->dict->addToSession(word);
160}
161
162
163QString Speller::language() const
164{
165 if (!d->isValid())
166 return QString();
167 return d->dict->language();
168}
169
170
171void Speller::save(KConfig *config)
172{
173 if (d->settings) {
174 d->settings->save(config);
175 }
176}
177
178
179void Speller::restore(KConfig *config)
180{
181 if (d->settings) {
182 d->settings->restore(config);
183 d->recreateDict();
184 }
185}
186
187
188QStringList Speller::availableBackends() const
189{
190 Loader *l = Loader::openLoader();
191 return l->clients();
192}
193
194
195QStringList Speller::availableLanguages() const
196{
197 Loader *l = Loader::openLoader();
198 return l->languages();
199}
200
201
202QStringList Speller::availableLanguageNames() const
203{
204 Loader *l = Loader::openLoader();
205 return l->languageNames();
206}
207
208
209void Speller::setDefaultLanguage(const QString &lang)
210{
211 d->settings->setDefaultLanguage(lang);
212}
213
214
215QString Speller::defaultLanguage() const
216{
217 return d->settings->defaultLanguage();
218}
219
220
221void Speller::setDefaultClient(const QString &client)
222{
223 d->settings->setDefaultClient(client);
224}
225
226
227QString Speller::defaultClient() const
228{
229 return d->settings->defaultClient();
230}
231
232
233void 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
246bool 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
259bool Speller::isValid() const
260{
261 return d->dict;
262}
263
264void Speller::setLanguage(const QString &lang)
265{
266 d->language = lang;
267 d->recreateDict();
268}
269
270QMap<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}
KConfig
The central class of the KDE configuration data system.
Definition: kconfig.h:71
KLocale::languageCodeToName
QString languageCodeToName(const QString &language) const
Convert a known language code to a human readable, localized form.
Definition: klocale.cpp:670
QMap
QStringList
QString
Sonnet::Loader
Class used to deal with dictionaries.
Definition: loader_p.h:46
Sonnet::Loader::clients
QStringList clients() const
Returns names of all supported clients (e.g.
Definition: loader.cpp:118
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
Sonnet::Loader::languageNames
QStringList languageNames() const
Returns a localized list of names of supported languages.
Definition: loader.cpp:228
Sonnet::Loader::languages
QStringList languages() const
Returns a list of supported languages.
Definition: loader.cpp:123
Sonnet::Loader::openLoader
static Loader * openLoader()
Constructs the loader.
Definition: loader.cpp:55
Sonnet::Speller
Spell checker object.
Definition: speller.h:39
Sonnet::Speller::Speller
Speller(const QString &lang=QString())
Definition: speller.cpp:77
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
Sonnet::Speller::Attribute
Attribute
Definition: speller.h:108
Sonnet::Speller::CheckUppercase
@ CheckUppercase
Definition: speller.h:109
Sonnet::Speller::SkipRunTogether
@ SkipRunTogether
Definition: speller.h:110
Sonnet::Speller::addToSession
bool addToSession(const QString &word)
Adds word to the words recognizable in the current session.
Definition: speller.cpp:155
Sonnet::Speller::availableBackends
QStringList availableBackends() const
Returns names of all supported backends (e.g.
Definition: speller.cpp:188
Sonnet::Speller::testAttribute
bool testAttribute(Attribute attr) const
Definition: speller.cpp:246
Sonnet::Speller::availableLanguageNames
QStringList availableLanguageNames() const
Returns a localized list of names of supported languages.
Definition: speller.cpp:202
Sonnet::Speller::isMisspelled
bool isMisspelled(const QString &word) const
Checks the given word.
Definition: speller.cpp:115
Sonnet::Speller::suggest
QStringList suggest(const QString &word) const
Fetches suggestions for the word.
Definition: speller.cpp:122
Sonnet::Speller::language
QString language() const
Returns language supported by this speller.
Definition: speller.cpp:163
Sonnet::Speller::availableDictionaries
QMap< QString, QString > availableDictionaries() const
Returns a map of all available language descriptions and their codes.
Definition: speller.cpp:270
Sonnet::Speller::defaultClient
QString defaultClient() const
Definition: speller.cpp:227
Sonnet::Speller::defaultLanguage
QString defaultLanguage() const
Definition: speller.cpp:215
Sonnet::Speller::addToPersonal
bool addToPersonal(const QString &word)
Adds word to the list of of personal words.
Definition: speller.cpp:147
Sonnet::Speller::isCorrect
bool isCorrect(const QString &word) const
Checks the given word.
Definition: speller.cpp:107
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::restore
void restore(KConfig *config)
Definition: speller.cpp:179
Sonnet::Speller::isValid
bool isValid() const
Returns true if the speller supports currently selected language.
Definition: speller.cpp:259
Sonnet::Speller::setLanguage
void setLanguage(const QString &lang)
Sets the language supported by this speller.
Definition: speller.cpp:264
Sonnet::Speller::save
void save(KConfig *config)
Definition: speller.cpp:171
Sonnet::Speller::~Speller
~Speller()
Definition: speller.cpp:84
Sonnet::Speller::setDefaultLanguage
void setDefaultLanguage(const QString &lang)
Definition: speller.cpp:209
Sonnet::Speller::setAttribute
void setAttribute(Attribute attr, bool b=true)
Definition: speller.cpp:233
Sonnet::Speller::operator=
Speller & operator=(const Speller &speller)
Definition: speller.cpp:99
Sonnet::Speller::availableLanguages
QStringList availableLanguages() const
Returns a list of supported languages.
Definition: speller.cpp:195
Sonnet::Speller::setDefaultClient
void setDefaultClient(const QString &client)
Definition: speller.cpp:221
kconfig.h
kglobal.h
klocale.h
loader_p.h
KGlobal::locale
KLocale * locale()
Returns the global locale object.
Definition: kglobal.cpp:170
Sonnet
The sonnet namespace.
Definition: backgroundchecker.h:34
settings_p.h
speller.h
spellerplugin_p.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 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-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 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
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