_wordsCount = -1;
_settings = new Settings();
_dictDialog = new XdxfDictDialog(this, this);
+ cachingDialog = new XdxfCachingDialog(this);
+
_settings->setValue("type","xdxf");
if(isCached())
_settings->setValue("cached","true");
QList<Translation*> XdxfPlugin::searchWordListCache(QString word, int limit) {
+ qDebug() << "search cache";
+ QSet<Translation*> translations;
+ QString cacheFilePath = _settings->value("cache_path");
+ QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
+ db.setDatabaseName(cacheFilePath);
+ if(!db.open()) {
+ qDebug() << "Database error" << endl;
+ return searchWordListFile(word, limit);
+ }
+ stopped = false;
+ word = removeAccents(word);
+ if(word.indexOf("*")==-1)
+ word+="%";
+ word = word.replace("*", "%");
+
+ QSqlQuery cur;
+ cur.prepare("select word from dict where word like ? limit ?");
+ cur.addBindValue(word);
+ cur.addBindValue(limit);
+ cur.exec();
+ while(cur.next())
+ translations.insert(new TranslationXdxf(cur.value(0).toString(),
+ _infoNote, this));
+ return translations.toList();
}
QList<Translation*> XdxfPlugin::searchWordListFile(QString word, int limit) {
+ qDebug() << "search file";
QSet<Translation*> translations;
QFile dictionaryFile(path);
QStringList list = settings->keys();
foreach(QString key, list)
plugin->settings()->setValue(key, settings->value(key));
- plugin->makeCache("");
+ if(plugin->settings()->value("cached") != "true")
+ plugin->makeCache("");
}
return plugin;
}
bool XdxfPlugin::makeCache(QString dir) {
+ cachingDialog->setVisible(true);
QFileInfo dictFileN(_settings->value("path"));
QString cachePathN;
cachePathN = dictFileN.dir().absolutePath() + "/"
counter=0;
while (!reader.atEnd()) {
+ QCoreApplication::processEvents();
+ //usleep(50);
reader.readNext();
if(reader.tokenType() == QXmlStreamReader::StartElement) {
counter++;
int prog = counter*100/_wordsCount;
if(prog % 5 == 0)
- Q_EMIT update(prog);
+ Q_EMIT updateCachingProgress(prog);
}
}
}
+ cachingDialog->setVisible(false);
+
qDebug()<<counter;
cur.exec("END;");
cur.exec("select count(*) from dict");
qDebug() << "ŻLEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE";
return false;
}
+ _settings->setValue("cache_path", cachePathN);
+ _settings->setValue("cached", "true");
return true;
}