Merge branch 'gui' into searching
authorMateusz Półrola <mateusz.polrola@comarch.pl>
Tue, 10 Aug 2010 07:09:29 +0000 (09:09 +0200)
committerMateusz Półrola <mateusz.polrola@comarch.pl>
Tue, 10 Aug 2010 07:09:29 +0000 (09:09 +0200)
trunk/src/base/backbone/backbone.cpp
trunk/src/base/backbone/backbone.h
trunk/tests/mDictionaryTests/CommonDictInterfaceMock.h
trunk/tests/mDictionaryTests/tst_Backbone.cpp

index aa95817..0278b2e 100644 (file)
@@ -29,22 +29,20 @@ void Backbone::init() {
    _interval = 250; //msec
    if(!_pluginPath.size())
        _pluginPath = "/usr/lib/mdictionary/";
+
+   if(!_configPath.size())
+       _configPath = "~/mdictrc";
    loadPlugins();
 
    if(!connect(&_timer, SIGNAL(timeout()), this, SLOT(translation())))
        qDebug() << "Timer signal not connected";
 }
 
-Backbone::Backbone(QObject *parent)
-    : QObject(parent)
-{
-    init();
-}
-
-Backbone::Backbone(QString pluginPath, QObject *parent)
+Backbone::Backbone(QString pluginPath, QString configPath, QObject *parent)
     : QObject(parent)
 {
     _pluginPath = pluginPath;
+    _configPath = configPath;
     init();
 }
 
@@ -126,20 +124,21 @@ void Backbone::stopSearching() {
 
 
 
-void Backbone::search(QString word) {
+void Backbone::search(QStringList words) {
     _timer.stop();
     _result.clear();
     _innerResult.clear();
 
     _timer.start(_interval);
-    foreach(CommonDictInterface* dict, _dicts.keys())
-        if(_dicts[dict] == 1) {
-            QFuture<QList<Translation*> > tr =
-                    QtConcurrent::run(dict,
+    foreach(QString word, words)
+        foreach(CommonDictInterface* dict, _dicts.keys())
+            if(_dicts[dict] == 1) {
+                QFuture<QList<Translation*> > tr =
+                        QtConcurrent::run(dict,
                                       &CommonDictInterface::searchWordList,word,
                                                              searchLimit());
-            _innerResult.append(tr);
-        }
+                _innerResult.append(tr);
+            }
 
 }
 
@@ -158,7 +157,6 @@ void Backbone::search(QString word) {
 
 
  void Backbone::addDictionary(CommonDictInterface* dict) {
-     qDebug()<<"add";
      dict->setHash(_dicts.size()+1);
      _dicts[dict] = 1;
  }
@@ -188,8 +186,9 @@ void Backbone::translation() {
         if(!trans.isFinished())
             continue;
         QList<Translation*> tList = trans.result();
-        foreach(Translation* t, tList)
-            _result.insert(t->key(), t);
+        foreach(Translation* t, tList) {
+            _result.insert(t->key().toLower(), t);
+        }
         _innerResult.removeOne(trans);
     }
     if(!_innerResult.size()) {
@@ -198,24 +197,28 @@ void Backbone::translation() {
     }
 }
 
+QStringList Backbone::getFilesFromDir(QString dir, QStringList nameFilter) {
+    QDir plug(QDir::toNativeSeparators(dir));
+    if(!plug.exists()) {
+        qDebug() << plug.absolutePath() << " folder dosen't exists";
+        return QStringList();
+    }
+    plug.setFilter(QDir::Files);
+    QStringList list = plug.entryList(nameFilter);
 
+    for(int i = 0; i < list.size(); i++)
+        list[i] = plug.absoluteFilePath(list.at(i));
+    return list;
+}
 
 
 void Backbone::loadPlugins() {
-    QDir plug(QDir::toNativeSeparators(_pluginPath));
-    if(!plug.exists()) {
-        qDebug() << plug.absolutePath() << " folder dosen't exists";
-        return;
-    }
     QStringList nameFilter;
     nameFilter << "*.so";
-    plug.setFilter(QDir::Files);
-    QStringList files = plug.entryList(nameFilter);
-    qDebug() << files;
-
+    QStringList files = getFilesFromDir(_pluginPath, nameFilter);
 
     foreach(QString file, files) {
-        QPluginLoader loader(plug.absoluteFilePath(file));
+        QPluginLoader loader(file);
         if(!loader.load()) {
             qDebug()<< file << " " << loader.errorString();
             continue;
index 0ee15cf..20c1bcc 100644 (file)
@@ -53,9 +53,9 @@ class Backbone : public QObject
     Q_OBJECT
 
 public:
-    Backbone(QObject *parent = 0);
-    //! \param pluginPath path to plugins
-    Backbone(QString pluginPath, QObject *parent = 0);
+    /*!\param pluginPath path to plugins (leave blank for default)
+      \param configPath path to folder with configuration files*/
+    Backbone(QString pluginPath="", QString configPath="", QObject *parent = 0);
     ~Backbone();
     Backbone(const Backbone& b);
 
@@ -82,9 +82,9 @@ public Q_SLOTS:
     void stopSearching();
 
     /*! search for a word translation
-       \param word word to be translated
+       \param word list of words to be translated
       */
-    void search(QString word);
+    void search(QStringList word);
 
     /*! sets active dictionaries (searches are performed only in active dicts
        \param List of dictionaris to be activated
@@ -125,7 +125,6 @@ Q_SIGNALS:
 
 
 private:
-    void loadPlugins(); //< locate and load plugins
     QHash<CommonDictInterface*, bool> _dicts;
     QList<CommonDictInterface*> _plugins;
     QList<QFuture<QList<Translation*> > > _innerResult;
@@ -136,8 +135,12 @@ private:
     QTime _time;
     int _interval; //Search fetching timer.timeout interval in msec
     QString _pluginPath;
+    QString _configPath;
 
     void init();
+    QStringList getFilesFromDir(QString dir, QStringList nameFilter);
+    void loadPlugins(); //< locate and load plugins
+    //void writeConfig(QString key, QString value);
 
 };
 
index c627190..ad2fbbc 100644 (file)
@@ -51,7 +51,7 @@ public:
     uint hash() const { return _hash;}
     void setHash(uint h) {_hash = h;}
     void stop() {stopped = 1;}
-    QString search(QString key) {}
+    QString search(QString key) {return "";}
     QList<Translation*> searchWordList(QString word, int limit) {
         qDebug() << "search " << this->thread()->currentThreadId();
         stopped = 0;
@@ -67,8 +67,8 @@ public:
 
         return list;
     }
-    DictDialog* dictDialog() {}
-    Settings* settings() {}
+    DictDialog* dictDialog() {return 0;}
+    Settings* settings() {return 0;}
 
 };
 
index 57b9233..1867828 100644 (file)
@@ -105,7 +105,7 @@ void BackboneTest::removeDictionaryTest() {
         back->removeDictionary(dict[i]);
 
     QVERIFY2(back->getDictionaries().contains(dict[total-1]) == 1,
-             "Deletet wrong dictionaries");
+             "Deleted wrong dictionaries");
 
 }
 
@@ -169,7 +169,10 @@ void BackboneTest::searchTest() {
     }
 
     qDebug() << "main " << this->thread()->currentThreadId();
-    back->search("pigwa");
+    QStringList list;
+    list << "pigwa";
+
+    back->search(list);
     usleep(2000);
 
     for(int i = 0; i < total; i++) {
@@ -189,7 +192,9 @@ void BackboneTest::translationTest() {
 
     QTime time;
     time.start();
-    back->search("nic");
+    QStringList list;
+    list << "nic";
+    back->search(list);
     qDebug() << "Time for backbone.search: " << time.elapsed();
     usleep(2000);
     time.start();