#include "xdxfplugin.h"
#include <QDebug>
-#include "../../common/Notify.h"
+#include "../../include/Notify.h"
XdxfPlugin::XdxfPlugin(QObject *parent) : CommonDictInterface(parent),
_langFrom(""), _langTo(""),_name(""), _infoNote("") {
_settings = new Settings();
- _dictDialog = new XdxfDictDialog(this);
- cachingDialog = new XdxfCachingDialog(this);
+ _dictDialog = new XdxfDictDialog(this, this);
+
+ connect(_dictDialog, SIGNAL(notify(Notify::NotifyType,QString)),
+ this, SIGNAL(notify(Notify::NotifyType,QString)));
+
_settings->setValue("type","xdxf");
- _icon = QIcon(":/icons/xdxf.png");
+ _icon = QIcon("/usr/share/mdictionary/xdxf.png");
_wordsCount = -1;
stopped = false;
- connect(cachingDialog, SIGNAL(cancelCaching()),
- this, SLOT(stop()));
- connect(this, SIGNAL(updateCachingProgress(int,int)),
- cachingDialog, SLOT(updateCachingProgress(int,int)));
initAccents();
}
QTranslator *translator = new QTranslator(this);
- if(locale == "pl_PL")
- translator->load(":/translations/dict_xdxf_pl");
- else
- translator->load(":/translations/dict_xdxf_en");
-
+ if(!translator->load(":/xdxf/translations/" + locale)) {
+ translator->load(":/xdxf/translations/en_US");
+ }
QCoreApplication::installTranslator(translator);
}
XdxfPlugin::~XdxfPlugin() {
delete _settings;
- delete cachingDialog;
delete _dictDialog;
}
QString XdxfPlugin::infoNote() const {
- return _infoNote;
+ return _infoNote;
}
if(ok) { /*add key word to list*/
translations.insert(new TranslationXdxf(
cur.value(0).toString().toLower(),
- _infoNote, this));
+ _dictionaryInfo, this));
i++;
}
}
}
if(ok) { /*add key word to list*/
translations<<(new TranslationXdxf(readKey.toLower(),
- _infoNote,this));
+ _dictionaryInfo,this));
i++;
}
if(i>=limit && limit!=0)
CommonDictInterface* XdxfPlugin::getNew(const Settings *settings) const {
XdxfPlugin *plugin = new XdxfPlugin();
- if(settings && plugin->setSettings(settings))
+
+ connect(plugin, SIGNAL(notify(Notify::NotifyType,QString)),
+ this, SIGNAL(notify(Notify::NotifyType,QString)));
+
+ ((XdxfDictDialog*)plugin->dictDialog())->setLastDialogParent(_dictDialog->lastDialogParent());
+
+
+
+ if(settings && plugin->setSettings(settings)) {
+
+ disconnect(plugin, SIGNAL(notify(Notify::NotifyType,QString)),
+ this, SIGNAL(notify(Notify::NotifyType,QString)));
return plugin;
+ }
else {
+ disconnect(plugin, SIGNAL(notify(Notify::NotifyType,QString)),
+ this, SIGNAL(notify(Notify::NotifyType,QString)));
delete plugin;
- return new XdxfPlugin();
+ return 0;
}
}
}
-void XdxfPlugin::setHash(uint _hash) {
- this->_hash=_hash;
-}
-
-
-uint XdxfPlugin::hash() const {
- return _hash;
-}
-
-
Settings* XdxfPlugin::settings() {
-/*
- Settings *returnSettings=new Settings;
- QStringList list = _settings->keys();
- foreach(QString key, list)
- returnSettings->setValue(key,_settings->value(key));
- return returnSettings;
-*/
return _settings;
}
if(settings) {
bool isPathChange=false;
QString oldPath = _settings->value("path");
+ Settings *oldSettings = new Settings ;
+
if(oldPath != settings->value("path")) {
if(oldPath!="" && _settings->value("cache_path")!="")
clean();
isPathChange=true;
}
+ foreach(QString key, _settings->keys())
+ oldSettings->setValue(key, _settings->value(key));
+
foreach(QString key, settings->keys()) {
if(key != "generateCache")
_settings->setValue(key, settings->value(key));
Q_EMIT notify(Notify::Warning,
QString(tr("XDXF file is in wrong format")));
qDebug()<<"Error: xdxf file is in wrong format";
+ delete _settings;
+ _settings=oldSettings;
return false;
}
reader.readNextStartElement();
if(reader.name()=="full_name")
_name=reader.readElementText();
+ else
+ qDebug()<<"no full_name";
reader.readNextStartElement();
if(reader.name()=="description")
_infoNote=reader.readElementText();
+ else
+ qDebug()<<"no description";
- QString format = "png";
- QString initialPath = QDir::currentPath() + "/xdxf." + format;
+ _dictionaryInfo= _name + " [" + _langFrom + "-"
+ + _langTo + "]";
- _infoNote="path=\""+initialPath+"\"> \n" + _name + " [" + _langFrom + "-"
- + _langTo + "] ( xdxf )";
dictionaryFile.close();
if(okFormat)
return true;
bool XdxfPlugin::makeCache(QString) {
- cachingDialog->setVisible(true);
+
+ XdxfCachingDialog d(_dictDialog->lastDialogParent());
+
+ qDebug()<<_dictDialog->lastDialogParent();
+
+ connect(&d, SIGNAL(cancelCaching()),
+ this, SLOT(stop()));
+
+ connect(this, SIGNAL(updateCachingProgress(int,int)),
+ &d, SLOT(updateCachingProgress(int,int)));
+
+ d.show();
+
QCoreApplication::processEvents();
QFileInfo dictFileN(_settings->value("path"));
QString cachePathN;
db_name = _settings->value("type") + cachePathN;
db = QSqlDatabase::addDatabase("QSQLITE",db_name);
- qDebug()<<QSqlDatabase::connectionNames().size();
- foreach(QString name,QSqlDatabase::connectionNames())
- qDebug()<<name;
/*checke errors (File open and db open)*/
QFile dictionaryFile(dictFileN.filePath());
if (!QFile::exists(_settings->value("path"))
/*add all words to db*/
while (!reader.atEnd() && !stopped) {
+
QCoreApplication::processEvents();
reader.readNext();
if(reader.tokenType() == QXmlStreamReader::StartElement) {
cur.exec();
counter++;
int prog = counter*100/_wordsCount;
- if(prog % 5 == 0 && lastProg != prog) {
+ if(prog % 2 == 0 && lastProg != prog) {
Q_EMIT updateCachingProgress(prog,timer.restart());
lastProg = prog;
}
}
cur.exec("END;");
cur.exec("select count(*) from dict");
- cachingDialog->setVisible(false);
/*checke errors (wrong number of added words)*/
countWords();
_settings->setValue("cache_path", cachePathN);
_settings->setValue("cached", "true");
+
+ disconnect(&d, SIGNAL(cancelCaching()),
+ this, SLOT(stop()));
+
+ disconnect(this, SIGNAL(updateCachingProgress(int,int)),
+ &d, SLOT(updateCachingProgress(int,int)));
+
db.close();
return true;
}