Merge branch 'master' into google
[mdictionary] / src / plugins / xdxf / xdxfplugin.cpp
index 533350b..aad8274 100644 (file)
@@ -32,11 +32,8 @@ XdxfPlugin::XdxfPlugin(QObject *parent) : CommonDictInterface(parent),
     _settings = new Settings();
     _dictDialog = new XdxfDictDialog(this, this);
 
-    connect(_dictDialog, SIGNAL(notify(Notify::NotifyType,QString, QWidget*)),
-            this, SIGNAL(notify(Notify::NotifyType,QString, QWidget*)));
-
-    cachingDialog = new XdxfCachingDialog(this);
-
+    connect(_dictDialog, SIGNAL(notify(Notify::NotifyType,QString)),
+            this, SIGNAL(notify(Notify::NotifyType,QString)));
 
 
     _settings->setValue("type","xdxf");
@@ -44,10 +41,6 @@ XdxfPlugin::XdxfPlugin(QObject *parent) : CommonDictInterface(parent),
     _wordsCount = -1;
     stopped = false;
 
-    connect(cachingDialog, SIGNAL(cancelCaching()),
-            this, SLOT(stop()));
-    connect(this, SIGNAL(updateCachingProgress(int,int)),
-            cachingDialog, SLOT(updateCachingProgress(int,int)));
     initAccents();
 }
 
@@ -56,18 +49,15 @@ void XdxfPlugin::retranslate() {
 
     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;
 }
 
@@ -93,7 +83,7 @@ QString XdxfPlugin::type() const {
 
 
 QString XdxfPlugin::infoNote() const {
-    return  _infoNote;
+    return _infoNote;
 }
 
 
@@ -152,7 +142,7 @@ QList<Translation*> XdxfPlugin::searchWordListCache(QString word, int limit) {
         if(ok) {  /*add key word to list*/
             translations.insert(new TranslationXdxf(
                     cur.value(0).toString().toLower(),
-                    _infoNote, this));
+                    _dictionaryInfo, this));
             i++;
         }
     }
@@ -203,7 +193,7 @@ QList<Translation*> XdxfPlugin::searchWordListFile(QString word, int limit) {
                 }
                 if(ok) {  /*add key word to list*/
                     translations<<(new TranslationXdxf(readKey.toLower(),
-                                    _infoNote,this));
+                                    _dictionaryInfo,this));
                     i++;
                 }
                 if(i>=limit && limit!=0)
@@ -329,10 +319,23 @@ DictDialog* XdxfPlugin::dictDialog() {
 
 CommonDictInterface* XdxfPlugin::getNew(const Settings *settings) const {
     XdxfPlugin *plugin = new XdxfPlugin();
+
+    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 0;
     }
@@ -344,24 +347,7 @@ bool XdxfPlugin::isAvailable() const {
 }
 
 
-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;
 }
 
@@ -455,14 +441,17 @@ bool XdxfPlugin::getDictionaryInfo() {
     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 initialPath = "/usr/share/mdictionary/xdxf.png";
-
-    _infoNote=" path=\""+initialPath+"\"> \n" + _name + " [" + _langFrom + "-"
+    _dictionaryInfo= _name + " [" + _langFrom + "-"
                 + _langTo + "]";
+
     dictionaryFile.close();
     if(okFormat)
         return true;
@@ -506,7 +495,19 @@ int XdxfPlugin::countWords() {
 
 
 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;
@@ -566,6 +567,7 @@ bool XdxfPlugin::makeCache(QString) {
 
     /*add all words to db*/
     while (!reader.atEnd() && !stopped) {
+
         QCoreApplication::processEvents();
         reader.readNext();
         if(reader.tokenType() == QXmlStreamReader::StartElement) {
@@ -606,7 +608,7 @@ bool XdxfPlugin::makeCache(QString) {
             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;
             }
@@ -614,7 +616,6 @@ bool XdxfPlugin::makeCache(QString) {
     }
     cur.exec("END;");
     cur.exec("select count(*) from dict");
-    cachingDialog->setVisible(false);
 
     /*checke errors (wrong number of added words)*/
     countWords();
@@ -629,6 +630,13 @@ bool XdxfPlugin::makeCache(QString) {
     _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;
 }