enchantdict.cpp00001
00021 #include "enchantdict.h"
00022 #include "enchantclient.h"
00023
00024 #include <qtextcodec.h>
00025 #include <kdebug.h>
00026
00027 using namespace KSpell2;
00028
00029 QSpellEnchantDict::QSpellEnchantDict(QSpellEnchantClient *client,
00030 EnchantBroker *broker,
00031 EnchantDict *dict,
00032 const QString &language)
00033 : Dictionary(language),
00034 m_broker(broker),
00035 m_dict(dict),
00036 m_client(client)
00037 {
00038 kdDebug()<<"Enchant dict for"<<language << dict << endl;
00039 }
00040
00041 QSpellEnchantDict::~QSpellEnchantDict()
00042 {
00043
00044
00045
00046 m_client->removeDictRef(m_dict);
00047 }
00048
00049 bool QSpellEnchantDict::check(const QString &word)
00050 {
00051 int wrong = enchant_dict_check(m_dict, word.utf8(),
00052 word.utf8().length());
00053 return !wrong;
00054 }
00055
00056 QStringList QSpellEnchantDict::suggest(const QString &word)
00057 {
00058
00059 QTextCodec *codec = QTextCodec::codecForName("utf8");
00060
00061 size_t number = 0;
00062 char **suggestions =
00063 enchant_dict_suggest(m_dict, word.utf8(), word.utf8().length(),
00064 &number);
00065
00066 QStringList qsug;
00067 for (size_t i = 0; i < number; ++i) {
00068 qsug.append(codec->toUnicode(suggestions[i]));
00069 }
00070
00071 if (suggestions && number)
00072 enchant_dict_free_string_list(m_dict, suggestions);
00073 return qsug;
00074 }
00075
00076 bool QSpellEnchantDict::checkAndSuggest(const QString& word,
00077 QStringList& suggestions)
00078 {
00079 bool c = check(word);
00080 if (c)
00081 suggestions = suggest(word);
00082 return c;
00083 }
00084
00085 bool QSpellEnchantDict::storeReplacement(const QString &bad,
00086 const QString &good)
00087 {
00088 enchant_dict_store_replacement(m_dict,
00089 bad.utf8(), bad.utf8().length(),
00090 good.utf8(), good.utf8().length());
00091 return true;
00092 }
00093
00094 bool QSpellEnchantDict::addToPersonal(const QString &word)
00095 {
00096 kdDebug() << "QSpellEnchantDict::addToPersonal: word = "
00097 << word << endl;
00098 enchant_dict_add_to_pwl(m_dict, word.utf8(),
00099 word.utf8().length());
00100 return true;
00101 }
00102
00103 bool QSpellEnchantDict::addToSession(const QString &word)
00104 {
00105 enchant_dict_add_to_session(m_dict, word.utf8(),
00106 word.utf8().length());
00107 return true;
00108 }
|