Added tohtml handling in separate thread
[mdictionary] / trunk / src / base / backbone / backbone.cpp
index f49dff4..b1f9421 100644 (file)
@@ -39,8 +39,9 @@ void Backbone::init() {
    loadPlugins();
    loadDicts();
 
-   if(!connect(&_timer, SIGNAL(timeout()), this, SLOT(translation())))
-       qDebug() << "Timer signal not connected";
+   connect(&_timerSearch, SIGNAL(timeout()), this, SLOT(translationReady()));
+   connect(&_timerHtmlSearch, SIGNAL(timeout()), this,
+           SLOT(htmlTranslationReady()));
 }
 
 Backbone::Backbone(QString pluginPath, QString configPath, QObject *parent)
@@ -120,7 +121,7 @@ QMultiHash<QString, Translation*> Backbone::result() {
 
 
 void Backbone::stopSearching() {
-    _timer.stop();
+    _timerSearch.stop();
     _innerResult.clear();
     foreach(CommonDictInterface* dict, _dicts.keys())
         dict->stop();
@@ -130,11 +131,11 @@ void Backbone::stopSearching() {
 
 
 void Backbone::search(QStringList words) {
-    _timer.stop();
+    _timerSearch.stop();
     _result.clear();
     _innerResult.clear();
 
-    _timer.start(_interval);
+    _timerSearch.start(_interval);
     foreach(QString word, words)
         foreach(CommonDictInterface* dict, _dicts.keys())
             if(_dicts[dict] == 1) {
@@ -195,7 +196,7 @@ int Backbone::activeSearches() const {
 
 
 
-void Backbone::translation() {
+void Backbone::translationReady() {
     foreach(QFuture<QList<Translation*> > trans, _innerResult) {
         if(!trans.isFinished())
             continue;
@@ -206,7 +207,7 @@ void Backbone::translation() {
         _innerResult.removeOne(trans);
     }
     if(!_innerResult.size()) {
-        _timer.stop();
+        _timerSearch.stop();
         Q_EMIT ready();
     }
 }
@@ -301,6 +302,8 @@ void Backbone::loadDicts() {
     }
 }
 
+
+
 void Backbone::dictUpdated() {
     QDir confDir(_configPath);
     if(!confDir.exists())
@@ -310,6 +313,8 @@ void Backbone::dictUpdated() {
         saveState(&set, dict->settings(), _dicts[dict], dict->hash());
 }
 
+
+
 void Backbone::saveState(QSettings* set, Settings* plugSet, bool active
                          , uint hash) {
     if(!set || !plugSet)
@@ -321,3 +326,26 @@ void Backbone::saveState(QSettings* set, Settings* plugSet, bool active
         set->setValue(section + "/" + key, plugSet->value(key));
     set->setValue(section + "/active", active);
 }
+
+
+
+QStringList Backbone::htmls() {
+    return _htmlResult;
+}
+
+
+
+void Backbone::searchHtml(QList<Translation *> translations) {
+    _timerHtmlSearch.stop();
+    _htmlResult.clear();
+    _innerHtmlResult.clear();
+    _timerHtmlSearch.start();
+
+    foreach(Translation* trans, translations)
+       _innerHtmlResult.append(
+               QtConcurrent::run(trans, &Translation::toHtml()));
+}
+
+void Backbone::htmlTranslationReady() {
+
+}