Merge branch 'master' into qmake
[mdictionary] / src / plugins / xdxf / xdxfplugin.cpp
index ba143b9..9a29f8a 100644 (file)
@@ -49,6 +49,7 @@ XdxfPlugin::XdxfPlugin(QObject *parent) : CommonDictInterface(parent),
 XdxfPlugin::~XdxfPlugin() {
     delete _settings;
     delete cachingDialog;
+    delete _dictDialog;
 }
 
 
@@ -93,7 +94,6 @@ QList<Translation*> XdxfPlugin::searchWordListCache(QString word, int limit) {
     QSet<Translation*> translations;
     QString cacheFilePath = _settings->value("cache_path");
 
-//  QSqlDatabase::removeDatabase(cacheFilePath);
     db.setDatabaseName(cacheFilePath);
     if(!QFile::exists(cacheFilePath) || !db.open()) {
         qDebug() << "Database error" << db.lastError().text() << endl;
@@ -309,8 +309,12 @@ DictDialog* XdxfPlugin::dictDialog() {
 
 
 CommonDictInterface* XdxfPlugin::getNew(const Settings *settings) const {
+
+    qDebug()<<"tu";
     XdxfPlugin *plugin = new XdxfPlugin();
+    qDebug()<<"tu2";
     if(settings){
+            qDebug()<<"tu3";
         plugin->setSettings(settings);
     }
     return  plugin;
@@ -333,6 +337,13 @@ uint XdxfPlugin::hash() const {
 
 
 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;
 }
 
@@ -345,8 +356,9 @@ bool XdxfPlugin::isCached() {
 
 
 void XdxfPlugin::setSettings(const Settings *settings) {
+    qDebug()<<"tu4";
     if(settings) {
-
+        qDebug()<<"tu5";
         bool isPathChange=false;
         QString oldPath = _settings->value("path");
         if(oldPath != settings->value("path")) {
@@ -362,12 +374,14 @@ void XdxfPlugin::setSettings(const Settings *settings) {
 
         if(isPathChange) {
             _wordsCount=0;
-            if(oldPath!="") {
+            if(oldPath!="")
                 _settings->setValue("cached","false");
-                QSqlDatabase::removeDatabase(db_name);
+            if(_settings->value("cached")=="true"
+                    && _settings->value("cache_path")!="") {
+                db_name = _settings->value("type")
+                        + _settings->value("cache_path");
+                db = QSqlDatabase::addDatabase("QSQLITE",db_name);
             }
-            db_name = _settings->value("type") + _settings->value("path");
-            db = QSqlDatabase::addDatabase("QSQLITE",db_name);
         }
 
         if((_settings->value("cached") == "false" ||
@@ -472,6 +486,12 @@ bool XdxfPlugin::makeCache(QString) {
         i++;
     } while(QFile::exists(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"))
@@ -509,7 +529,7 @@ bool XdxfPlugin::makeCache(QString) {
     timer.start();
     countWords();
     int lastProg = -1;
-    settings()->setValue("strip_accents", "true");
+    _settings->setValue("strip_accents", "true");
     counter=0;
 
     /*add all words to db*/
@@ -583,8 +603,10 @@ bool XdxfPlugin::makeCache(QString) {
 
 
 void XdxfPlugin::clean() {
-    if(QFile::exists(_settings->value("cache_path")))
+    if(QFile::exists(_settings->value("cache_path"))) {
         QFile(_settings->value("cache_path")).remove();
+        QSqlDatabase::removeDatabase(db_name);
+    }
 }