Fixed doubling google translations
authorBartosz Szatkowski <bulislaw@linux.com>
Thu, 26 Aug 2010 12:02:55 +0000 (14:02 +0200)
committerBartosz Szatkowski <bulislaw@linux.com>
Thu, 26 Aug 2010 12:02:55 +0000 (14:02 +0200)
trunk/src/base/backbone/backbone.cpp
trunk/src/base/backbone/backbone.h
trunk/src/plugins/google/src/TranslationGoogle.cpp

index 6f55e4d..a1e8917 100644 (file)
@@ -516,6 +516,11 @@ void Backbone::searchHtml(QList<Translation *> translations) {
     foreach(Translation* tr, translations) {
         if(containsDict(tr->dict()) || !tr->dict())
             dummy.append(TranslationPtr(tr));
+        foreach(CommonDictInterface* dict, activeDicts()) {
+            Translation* trans = dict->getTranslationFor(tr->key());
+            if(trans)
+                dummy.append(TranslationPtr(trans));
+        }
   }
 
    _innerHtmlResult = QtConcurrent::mapped(dummy,
@@ -528,8 +533,11 @@ void Backbone::searchHtml(QList<Translation *> translations) {
 void Backbone::htmlTranslationReady() {
 
     QFutureIterator<QString> it(_innerHtmlResult);
+    QSet<QString> uniqe;
     while(it.hasNext())
-       _htmlResult.append(it.next());
+        uniqe.insert(it.next());
+    _htmlResult.clear();
+    _htmlResult = uniqe.toList();
 
     if(!stopped)
         Q_EMIT htmlReady();
index fe3b178..5affa3a 100644 (file)
@@ -32,6 +32,7 @@
 #include <QObject>
 #include <QList>
 #include <QHash>
+#include <QSet>
 #include <QPluginLoader>
 #include <QFuture>
 #include <QtConcurrentRun>
index 4a0ea9e..01528d6 100644 (file)
@@ -59,8 +59,12 @@ QString TranslationGoogle::toHtml() const {
         return result+=_dictionaryInfo+ "</info>"+_trans +"</dict>";
 
     QList<Translation*> translations=googlePlugin->searchWordList(_key);
-    if(translations.size()>0)
-        return translations.at(0)->toHtml();
+    if(translations.size()>0 && translations.at(0)) {
+        QString res =  translations.at(0)->toHtml();
+        return res;
+   }
+   return "";
+
 }
 
 void TranslationGoogle::setKey(QString) {