Added scanning catalogs for plugins
authorBartosz Szatkowski <bulislaw@linux.com>
Fri, 6 Aug 2010 07:19:50 +0000 (09:19 +0200)
committerBartosz Szatkowski <bulislaw@linux.com>
Fri, 6 Aug 2010 07:19:50 +0000 (09:19 +0200)
trunk/src/base/backbone/backbone.cpp
trunk/src/base/backbone/backbone.h
trunk/tests/mDictionaryTests/CommonDictInterfaceMock.h

index f0251c5..f8c84d6 100644 (file)
@@ -27,7 +27,9 @@
 void Backbone::init() {
    _searchLimit = 10;
    _interval = 250; //msec
+   _pluginPath = "../lib/mdictionary/";
    loadPlugins();
+
    if(!connect(&_timer, SIGNAL(timeout()), this, SLOT(translation())))
        qDebug() << "Timer signal not connected";
 }
@@ -187,17 +189,30 @@ void Backbone::translation() {
 
 
 void Backbone::loadPlugins() {
-    QPluginLoader loader("xdxf.so");
-    if(!loader.load()) {
-        qDebug()<<loader.errorString();
+    QDir plug(QDir::toNativeSeparators(_pluginPath));
+    if(!plug.exists()) {
+        qDebug() << plug.absolutePath() << " folder dosen't exists";
         return;
     }
-    QObject *pl = loader.instance();
+    QStringList nameFilter;
+    nameFilter << "*.so";
+    plug.setFilter(QDir::Files);
+    QStringList files = plug.entryList(nameFilter);
+    qDebug() << files;
+
+
+    foreach(QString file, files) {
+        QPluginLoader loader(file);
+        if(!loader.load()) {
+            qDebug()<< file << " " << loader.errorString();
+            continue;
+        }
+        QObject *pl = loader.instance();
 
-    qDebug()<<"loaded";
-    CommonDictInterface *plugin = qobject_cast<CommonDictInterface*>(pl);
-    _plugins.append(plugin);
-    addDictionary(plugin->getNew(0)); //TODO change 0 to real settings
+        CommonDictInterface *plugin = qobject_cast<CommonDictInterface*>(pl);
+        _plugins.append(plugin);
+        addDictionary(plugin->getNew(0)); //TODO change 0 to real settings
+    }
 }
 
 
index fa4cba8..966c4fe 100644 (file)
@@ -32,6 +32,7 @@
 #include <QtConcurrentRun>
 #include <QTimer>
 #include <QTime>
+#include <QDir>
 #include "../../includes/CommonDictInterface.h"
 #include "../../includes/settings.h"
 #include "../../includes/translation.h"
@@ -111,6 +112,7 @@ private:
     int _activeSearchNum;
     QTime _time;
     int _interval; //Search fetching timer.timeout interval in msec
+    QString _pluginPath;
 
     void init();
 
index c4d0db0..c627190 100644 (file)
@@ -67,6 +67,8 @@ public:
 
         return list;
     }
+    DictDialog* dictDialog() {}
+    Settings* settings() {}
 
 };