}
stopped = false;
- if(word.indexOf("*")==-1 && word.indexOf("?")== 0)
- word+="%";
word = word.toLower();
word = word.replace("*", "%");
word = word.replace("?", "_");
word = removeAccents(word);
- qDebug() << word;
+ //qDebug() << word;
QSqlQuery cur(db);
- cur.prepare("select word from dict where word like ? limit ?");
+ if(limit !=0)
+ cur.prepare("select word from dict where word like ? limit ?");
+ else
+ cur.prepare("select word from dict where word like ?");
cur.addBindValue(word);
- cur.addBindValue(limit);
+ if(limit !=0)
+ cur.addBindValue(limit);
cur.exec();
- while(cur.next())
- translations.insert(new TranslationXdxf(
+ while(cur.next()){
+ bool ok=true;
+ Translation *tran;
+ foreach(tran,translations) {
+ if(tran->key().toLower()==cur.value(0).toString().toLower())
+ ok=false;
+ }
+ if(ok) /*add key word to list*/
+ translations.insert(new TranslationXdxf(
cur.value(0).toString().toLower(),
_infoNote, this));
+ }
db.close();
return translations.toList();
}
-
-
QList<Translation*> XdxfPlugin::searchWordListFile(QString word, int limit) {
QSet<Translation*> translations;
QFile dictionaryFile(path);
bool ok=true;
Translation *tran;
foreach(tran,translations) {
- if(tran->key()==a)
+ if(tran->key().toLower()==a.toLower())
ok=false; /*if key word is in the dictionary more that one */
}
if(ok) /*add key word to list*/
return searchFile(key);
}
-
-
QString XdxfPlugin::searchCache(QString key) {
- QString result;
+ QString result("");
QString cacheFilePath = _settings->value("cache_path");
db.setDatabaseName(cacheFilePath);
key = key.toLower();
}
QSqlQuery cur(db);
- cur.prepare("select translation from dict where word like ? limit 1");
+// cur.prepare("select translation from dict where word like ? limit 1");
+ cur.prepare("select translation from dict where word like ?");
cur.addBindValue(key);
cur.exec();
- if(cur.next())
- result = cur.value(0).toString();
+// if(cur.next())
+ while(cur.next())
+// result = cur.value(0).toString();
+ result += cur.value(0).toString();
db.close();
return result;
}
-
-
-
QString XdxfPlugin::searchFile(QString key) {
key = key.toLower();
QFile dictionaryFile(path);
if(reader.tokenType() == QXmlStreamReader::StartElement) {
if(reader.name()=="k") {
a = reader.readElementText();
- if(a==key)
+ if(a.toLower()==key.toLower())
match = true;
}
}
//getDictionaryInfo();
}
-
CommonDictInterface* XdxfPlugin::getNew(const Settings *settings) const {
XdxfPlugin *plugin = new XdxfPlugin();
if(settings){
plugin->db_name = plugin->_settings->value("type")
+ plugin->_settings->value("path");
- if(!plugin->db.connectionName().isEmpty())
- plugin->db = QSqlDatabase::addDatabase("QSQLITE", plugin->db_name);
+ // if(!plugin->db.connectionName().isEmpty() || settings->value("generateCache")=="true")
+ plugin->db = QSqlDatabase::addDatabase("QSQLITE", plugin->db_name);
if(settings->value("cached").isEmpty() &&
settings->value("generateCache") == "true") {
emit settingsChanged();
}
-
void XdxfPlugin::getDictionaryInfo() {
QFile dictionaryFile(path);
if(!dictionaryFile.open(QFile::ReadOnly | QFile::Text)) {
return wordsCount;
}
-
-
bool XdxfPlugin::makeCache(QString dir) {
cachingDialog->setVisible(true);
QCoreApplication::processEvents();
temp+= reader.text().toString();
reader.readNext();
}
- temp += tr("<t>") + temp.replace("\n","") + tr("</t>");
+ temp=tr("<t>") + temp.replace("\n","") + tr("</t>");
match=false;
cur.prepare("insert into dict values(?,?)");
cur.addBindValue(a);
return true;
}
-
Q_EXPORT_PLUGIN2(xdxf, XdxfPlugin)
#include <QSignalSpy>
void XdxfTest::getNew() {
+
XdxfPlugin xdxfPlugin(this);
Settings *settings=new Settings;
settings->setValue("path","../tests/dict.xdxf");
-
CommonDictInterface *xdxfPlugin2 = xdxfPlugin.getNew(settings);
+
QList<Translation*> te6=xdxfPlugin2->searchWordList("*",8);
- QCOMPARE(te6.size(),8);
+ QCOMPARE(te6.size(),8);
}
-void XdxfTest::search() {
- /*test for English-Polish dictionary */
+void XdxfTest::searchFile() {
+
XdxfPlugin xdxfPluginB(this);
+ Settings *settings=new Settings;
+ settings->setValue("path","../tests/dict.xdxf");
+ CommonDictInterface *xdxfPlugin = xdxfPluginB.getNew(settings);
+ QCOMPARE(xdxfPlugin->search("."), QString("<t>kropka</t>"));
+ QCOMPARE(xdxfPlugin->search("1"), QString("<t>one</t>"));
+ QCOMPARE(xdxfPlugin->search("test"), QString("<t><c c=\"FF00FF\">kro</c>test01<pos>krowa</pos></t>"));
+}
+void XdxfTest::makeCache()
+{
+ XdxfPlugin xdxfPluginB(this);
+ Settings *settings=new Settings;
+ settings->setValue("path","../tests/dict.xdxf");
+ settings->setValue("generateCache", "true");
+ CommonDictInterface *xdxfPlugin = xdxfPluginB.getNew(settings);
+ QCOMPARE(xdxfPlugin->settings()->value("cached"),tr("true"));
+}
+void XdxfTest::searchCache() {
+ XdxfPlugin xdxfPluginB(this);
Settings *settings=new Settings;
settings->setValue("path","../tests/dict.xdxf");
+ settings->setValue("generateCache", "true");
CommonDictInterface *xdxfPlugin = xdxfPluginB.getNew(settings);
- xdxfPlugin->search("wino");
+ QCOMPARE(xdxfPlugin->settings()->value("cached"),tr("true"));
QCOMPARE(xdxfPlugin->search("."), QString("<t>kropka</t>"));
QCOMPARE(xdxfPlugin->search("1"), QString("<t>one</t>"));
-
QCOMPARE(xdxfPlugin->search("test"), QString("<t><c c=\"FF00FF\">kro</c>test01<pos>krowa</pos></t>"));
}
-void XdxfTest::searchWordList() {
- /*test for English-Polish dictionary */
+void XdxfTest::searchWordListCache(){
XdxfPlugin xdxfPluginB(this);
+ Settings *settings=new Settings;
+ settings->setValue("path","../tests/dict.xdxf");
+ settings->setValue("generateCache", "true");
+ CommonDictInterface *xdxfPlugin = xdxfPluginB.getNew(settings);
+
+ QList<Translation*> te = xdxfPlugin->searchWordList(".", 10);
+ if(te.size()>0)
+ QCOMPARE(te.size(), 9);
+ QList<Translation*> te2 = xdxfPlugin->searchWordList("1",10);
+ QCOMPARE(te2.size(), 5);
+
+ QList<Translation*> te3 = xdxfPlugin->searchWordList("1", 2);
+ QCOMPARE(te3.size(), 2);
+ QList<Translation*> te4 = xdxfPlugin->searchWordList("ho*SE", 10);
+ QCOMPARE(te4.at(0)->key(), QString("house"));
+
+ QList<Translation*> te5 = xdxfPlugin->searchWordList("*");
+ QCOMPARE(te5.size(), 9);
+
+ QList<Translation*> te6 = xdxfPlugin->searchWordList("*", 8);
+ QCOMPARE(te6.size(), 8);
+
+ QList<Translation*> te7 = xdxfPlugin->searchWordList("*ou*");
+ QCOMPARE(te7.at(0)->key(), QString("house"));
+
+ QList<Translation*> te8 = xdxfPlugin->searchWordList("1?");
+ QCOMPARE(te8.at(0)->key(), QString("10"));
+
+ QList<Translation*> te9 = xdxfPlugin->searchWordList("1???");
+ QCOMPARE(te9.at(0)->key(), QString("1000"));
+
+ QList<Translation*> te10 = xdxfPlugin->searchWordList("1????*");
+ QCOMPARE(te10.at(0)->key(), QString("1 000 000"));
+
+ QList<Translation*> te11 = xdxfPlugin->searchWordList("h**?*?**e");
+ QCOMPARE(te11.at(0)->key(), QString("house"));
+}
+
+void XdxfTest::searchWordListFile() {
+
+ XdxfPlugin xdxfPluginB(this);
Settings *settings=new Settings;
settings->setValue("path","../tests/dict.xdxf");
CommonDictInterface *xdxfPlugin = xdxfPluginB.getNew(settings);
+
QList<Translation*> te = xdxfPlugin->searchWordList(".", 10);
if(te.size()>0)
QCOMPARE(te.size(), 9);
}
void XdxfTest::stop() {
- /*test for English-Polish dictionary */
+
XdxfPlugin xdxfPluginB(this);
-// xdxfPlugin.setPatch("dict.xdxf");
+// xdxfPlugin.setPatch("dict.xdxf");
Settings *settings=new Settings;
settings->setValue("path","../tests/dict.xdxf");
QString string("*");
QFuture<QList<Translation*> > future = QtConcurrent::run(xdxfPlugin, &CommonDictInterface::searchWordList, string, 10);
QList<Translation*> te5 = future.result();
-
QCOMPARE(te5.size(), 9);
}
void XdxfTest::langFrom() {
- /*test for English-Polish dictionary */
- XdxfPlugin xdxfPluginB(this);
-// xdxfPlugin.setPatch("dict.xdxf");
+ XdxfPlugin xdxfPluginB(this);
Settings *settings=new Settings;
settings->setValue("path","../tests/dict.xdxf");
CommonDictInterface *xdxfPlugin = xdxfPluginB.getNew(settings);
- xdxfPlugin->searchWordList("rope", 10);
+
QCOMPARE(xdxfPlugin->langFrom(), QString("ENG"));
}