change comment's and fix bug (xslt transform)
[mdictionary] / src / plugins / google / GooglePlugin.cpp
index 50df74e..ee25c53 100644 (file)
@@ -18,8 +18,8 @@
     Copyright 2010 Comarch S.A.
 
 *******************************************************************************/
-
-/*! \file GooglePlugin.cpp
+/*!
+    \file GooglePlugin.cpp
     \author Jakub Jaszczynski <j.j.jaszczynski@gmail.com>
 */
 
@@ -44,15 +44,16 @@ GooglePlugin::GooglePlugin(QObject *parent): CommonDictInterface(parent),
     stopped = false;
     initLanguages();
 
-    http = new QHttp(this);
+    http = new QHttp();
     connect(http, SIGNAL(done(bool)), this, SLOT(done()));
+    threa=new QThread();
+    http->moveToThread(threa);
+    threa->start();
 }
 
 void GooglePlugin::retranslate() {
     QString locale = QLocale::system().name();
-
     QTranslator *translator = new QTranslator(this);
-
     if(!translator->load(":/google/translations/" + locale)) {
         translator->load(":/google/translations/en_US");
     }
@@ -157,7 +158,7 @@ CommonDictInterface* GooglePlugin::getNew(const Settings* settings) const {
 
 
 QString GooglePlugin::search(QString) {
-    qDebug() << "function is not used in this plugin";
+    qDebug() << "function is not used in google plugin";
     return QString("");
 }
 
@@ -171,8 +172,10 @@ QList<Translation*> GooglePlugin::searchWordList(QString word, int ) {
     QList<Translation*> translations;
     if(isAvailable()) {
         QString error("");
-        word.replace("*","");   /*remove wildcard*/
-        word.replace("?","");
+        char wrongChar[]={"*?&<>"};
+        for(unsigned int a=0;a<sizeof(wrongChar);a++)    /*remove wrong char*/
+            word.replace(wrongChar[a],"");
+
         QString url=QString("/translate_a/t?client=t&sl=%1&tl=%2").arg(
                                               _settings->value("lang_from"),
                                               _settings->value("lang_to"));
@@ -189,10 +192,16 @@ QList<Translation*> GooglePlugin::searchWordList(QString word, int ) {
 
         wait=true;      /* bool - change in slot done (initiate by http) */
         stopped=false;  /* bool - change in slot stop (initiate in gui)  */
+        int lastState=0;
         http->request(head, data);
-        while(wait && (error=="" || error=="Unknown error") && !stopped)
+        while(wait && (error=="" || error=="Unknown error") && !stopped){
             error=http->errorString();
-
+            if(lastState!=http->state()) {
+                lastState=http->state();
+                if(lastState==0)
+                    done();
+            }
+        }
         if(error!="" && error!="Unknown error") {
             if(!noNetworkErrorShowed) {
                 noNetworkErrorShowed = true;
@@ -276,9 +285,8 @@ QString GooglePlugin::jsonParse(QString result) {
     }
     returnLang=list1.at(index*2+1);
     if(partOfSpeach.size()==0){
-        if(translation.toLower()==original.toLower()){
+        if(translation.toLower()==original.toLower())
             return QString(""); // word doesn't exist";
-        }
         else
             return "\""+translation+"\"";
     }