*******************************************************************************/
+/*! \file xdxfplugin.cpp
+*/
+
#include "xdxfplugin.h"
#include <QDebug>
#include <QFile>
_icon = QIcon(":/icons/xdxf.png");
}
+XdxfPlugin::~XdxfPlugin()
+{
+ db.removeDatabase(_type+path);
+}
+
QString XdxfPlugin::langFrom() const {
return _langFrom;
}
}
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 ?");
cur.addBindValue(key);
cur.exec();
- if(cur.next())
- result = cur.value(0).toString();
+ while(cur.next())
+ result += cur.value(0).toString();
db.close();
return result;
}
-
-
-
QString XdxfPlugin::searchFile(QString key) {
key = key.toLower();
QFile dictionaryFile(path);
QXmlStreamReader reader(&dictionaryFile);
+
QString a;
bool match =false;
if(reader.tokenType() == QXmlStreamReader::StartElement) {
if(reader.name()=="k") {
a = reader.readElementText();
- if(a==key)
+ if(a.toLower()==key.toLower())
match = true;
}
}
temp= temp + tr(" c=\"") + reader.attributes().value(tr("c")).toString() + tr("\"");
temp+=tr(">");
}
- temp+= reader.text().toString();
+ temp+= reader.text().toString().replace("<","<").replace(">",">");
reader.readNext();
}
- resultString+=tr("<t>") + temp.replace("\n","") + tr("</t>");
+ if(temp.at(0)==QChar('\n'))
+ temp.remove(0,1);
+ resultString+=tr("<key>") + a +tr("</key>");
+ resultString+=tr("<t>") + temp + tr("</t>");
match=false;
}
this->thread()->yieldCurrentThread();
//getDictionaryInfo();
}
-
CommonDictInterface* XdxfPlugin::getNew(const Settings *settings) const {
XdxfPlugin *plugin = new XdxfPlugin();
+ static int a=0;
if(settings){
plugin->setPath(settings->value("path"));
-
QStringList list = settings->keys();
foreach(QString key, list)
plugin->settings()->setValue(key, settings->value(key));
-
+ a=a+1;
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") {
plugin->makeCache("");
}
}
-
plugin->getDictionaryInfo();
return plugin;
}
emit settingsChanged();
}
-
void XdxfPlugin::getDictionaryInfo() {
QFile dictionaryFile(path);
if(!dictionaryFile.open(QFile::ReadOnly | QFile::Text)) {
if(reader.name()=="description")
_infoNote=reader.readElementText();
- _infoNote="<info path=\""+path+"\">"+"\n" + _name + "(" + _type + ")" + "</info>";
+ QString format = "png";
+ QString initialPath = QDir::currentPath() + tr("/xdxf.") + format;
+// qDebug()<<initialPath;
+// QPixmap test(":/icons/xdxf.png");
+// qDebug()<<QPixmap(test).save(initialPath,format.toAscii());
+// qDebug()<<QPixmap("/home/jakub/star.jpg").save(initialPath,format.toAscii());
+
+ _infoNote="<info path=\""+initialPath+"\">"+"\n" + _name + " [" + _langFrom + "-" + _langTo + "] "+ "(" + _type + ")" + "</info>";
+
+
dictionaryFile.close();
}
return wordsCount;
}
-
-
bool XdxfPlugin::makeCache(QString dir) {
cachingDialog->setVisible(true);
QCoreApplication::processEvents();
temp= temp + tr(" c=\"") + reader.attributes().value(tr("c")).toString() + tr("\"");
temp+=tr(">");
}
- temp+= reader.text().toString();
+ temp+= reader.text().toString().replace("<","<").replace(">",">");;
reader.readNext();
}
- temp += tr("<t>") + temp.replace("\n","") + tr("</t>");
+ if(temp.at(0)==QChar('\n'))
+ temp.remove(0,1);
+ temp=tr("<key>") + a + tr("</key>") + tr("<t>") + temp+ tr("</t>");
match=false;
cur.prepare("insert into dict values(?,?)");
cur.addBindValue(a);
return true;
}
-
Q_EXPORT_PLUGIN2(xdxf, XdxfPlugin)