Merge branch 'master' of ssh://drop.maemo.org/git/mdictionary
[mdictionary] / trunk / src / plugins / google / src / GooglePlugin.cpp
index 607c41c..d05b1cc 100644 (file)
 #include <QDebug>
 #include "GoogleDictDialog.h"
 
-
 GooglePlugin::GooglePlugin(QObject *parent): CommonDictInterface(parent),
-                    _langFrom(tr("")), _langTo(tr("")),_name(tr("")),
-                    _type("google"), _infoNote(tr("")) {
-
-    stopped = false;
-    _connectionAccept = false;
+                    _name(tr("")),_infoNote(tr("")) {
     _settings = new Settings();
+    _settings->setValue("lang_to","");
+    _settings->setValue("lang_from","");
+    _settings->setValue("type","google");
+    _settings->setValue("connection_acepted","true");
     _dictDialog = new GoogleDictDialog(this,this);
-
     _icon = QIcon(":/icons/drawing.png");
+    _hash=123456;
+
+    stopped = false;
     languages=initLanguages();
-    _settings->setValue("type","google");
-    _settings->setValue("connectionAcepted","false");
 
     http = new QHttp(this);
     connect(http, SIGNAL(done(bool)), this, SLOT(done()));
 }
 
+
 GooglePlugin::~GooglePlugin() {
     delete _settings;
 }
 
+
 QString GooglePlugin::langFrom() const {
-    return languages.key(_langFrom);
+    return languages.key(_settings->value("lang_from"));
 }
+
+
 QString GooglePlugin::langTo() const {
-    return languages.key(_langTo);
+    return languages.key(_settings->value("lang_to"));
 }
 
+
 QString GooglePlugin::name() const {
     return QString("dictionary");
 }
 
+
 QString GooglePlugin::type() const {
-    return _type;
+    return QString("google");
 }
 
+
 QString GooglePlugin::infoNote() const {
     return _infoNote;
 }
 
+
 void GooglePlugin::setLangTo(QString langTo){
-    _langTo=langTo;
+    _settings->setValue("lang_to",langTo);
 }
 
+
 void GooglePlugin::setLangFrom(QString langFrom){
-    _langFrom=langFrom;
+    _settings->setValue("lang_from",langFrom);;
 }
 
+
 DictDialog* GooglePlugin::dictDialog() {
     return _dictDialog;
 }
 
+
 bool GooglePlugin::isAvailable() const {
-    if(_connectionAccept)
-        return true;
-    else
-        return false;
+    return isConnectionAccept();
 }
 
+
 void GooglePlugin::setConnectionAccept(QString connectionAcepted) {
     if(connectionAcepted=="true")
-        _connectionAccept=true;
+        _settings->setValue("connection_acepted","true");
     else
-        _connectionAccept=false;
+        _settings->setValue("connection_acepted","false");
 }
 
-bool GooglePlugin::isConnectionAccept() {
-    return _connectionAccept;
+bool GooglePlugin::isConnectionAccept() const {
+    if(_settings->value("connection_acepted")=="true")
+        return true;
+    else
+        return false;
 }
 
-QString GooglePlugin::search(QString) {
-    /*function is not used on this plagin */
-    return QString("");
-}
 
 uint GooglePlugin::hash() const {
     return _hash;
 }
 
-void GooglePlugin::setHash(uint) {
+
+void GooglePlugin::setHash(uint _hash) {
     this->_hash=_hash;
 }
 
+
 Settings* GooglePlugin::settings() {
-    return _settings;
+    Settings *returnSettings=new Settings;
+    QStringList list = _settings->keys();
+    foreach(QString key, list)
+            returnSettings->setValue(key,_settings->value(key));
+    return returnSettings;
 }
 
-QIcon* GooglePlugin::icon() {
-    return &_icon;
-}
 
-CommonDictInterface* GooglePlugin::getNew(const Settings* settings) const
-{
-    GooglePlugin *plugin = new GooglePlugin();
+void GooglePlugin::setSettings(const Settings* settings) {
     if(settings) {
-        plugin->setLangFrom(settings->value("langFrom"));
-        plugin->setLangTo(settings->value("langTo"));
-        plugin->setConnectionAccept(settings->value("connectionAccept"));
         QStringList list = settings->keys();
         foreach(QString key, list)
-            plugin->settings()->setValue(key, settings->value(key));
+            _settings->setValue(key, settings->value(key));
+        getDictionaryInfo();
     }
-    delete settings;
-    plugin->getDictionaryInfo();
+}
+
+
+QIcon* GooglePlugin::icon() {
+    return &_icon;
+}
+
+
+CommonDictInterface* GooglePlugin::getNew(const Settings* settings) const {
+    GooglePlugin *plugin = new GooglePlugin();
+    plugin->setSettings(settings);
     return plugin;
 }
 
-void GooglePlugin::setSettings(Settings* settings) {
-    if(settings){
-        _langFrom=settings->value("langFrom");
-        _langTo=settings->value("langTo");
-        setConnectionAccept(settings->value("connectionAccept"));
-        QStringList list = settings->keys();
-        foreach(QString key, list)
-            _settings->setValue(key, settings->value(key));
-        delete settings;
-    }
+
+QString GooglePlugin::search(QString) {
+    qDebug() << "function is not used this plugin";
+    return QString("");
 }
 
+
 Translation* GooglePlugin::getTranslationFor(QString key) {
     return (new TranslationGoogle(key,"",_infoNote,this));
 }
 
+
 QList<Translation*> GooglePlugin::searchWordList(QString word, int ) {
     QList<Translation*> translations;
     if(isAvailable()) {
-        word.replace("*","");
+        QString error("");
+        word.replace("*","");   /*remove wildcard*/
         word.replace("?","");
-        QString url = QString("/translate_a/t?client=t&sl=%1&tl=%2").arg(_langFrom,
-                                                                         _langTo);
+        QString url=QString("/translate_a/t?client=t&sl=%1&tl=%2").arg(
+                                              _settings->value("lang_from"),
+                                              _settings->value("lang_to"));
         QHttpRequestHeader head = QHttpRequestHeader("POST", url, 1,1);
         head.setValue("Host","www.google.pl");
         head.setValue("User-Agent", "Mozilla/5.0");
@@ -170,10 +183,9 @@ QList<Translation*> GooglePlugin::searchWordList(QString word, int ) {
         data.append(word.toUtf8());
         http->setHost("www.google.pl");
 
-        wait=true;
-        stopped=false;
+        wait=true;      /* bool - change in slot done (initiate by http) */
+        stopped=false;  /* bool - change in slot stop (initiate in gui)  */
         http->request(head, data);
-        QString error("");
         while(wait && (error=="" || error=="Unknown error") && !stopped)
             error=http->errorString();
 
@@ -182,6 +194,7 @@ QList<Translation*> GooglePlugin::searchWordList(QString word, int ) {
             Q_EMIT notify(Notify::Warning,
                     QString("GooglePlugin: %1").arg(error));
         }
+
         QString text = QString::fromUtf8(http->readAll());
         text=jsonParse(text);
         if(text!="") {
@@ -192,6 +205,7 @@ QList<Translation*> GooglePlugin::searchWordList(QString word, int ) {
     return translations;
 }
 
+
 QString GooglePlugin::jsonParse(QString result) {
     int pos=0,pos2=0,index=0,size=0;
     QString returnLang;
@@ -202,7 +216,6 @@ QString GooglePlugin::jsonParse(QString result) {
     QStringList list1 = result.split("\"");
 
     size=(list1.size()-1)/2;
-
     if(size<=2)
         return QString(""); // wrong format of data
 
@@ -211,7 +224,6 @@ QString GooglePlugin::jsonParse(QString result) {
     original=list1.at(index*2+1);
     pos=result.indexOf("]");
     index++;
-
     while(result.at(pos+1)==QChar(',')) {
         index++;
         translation+=list1.at(index*2+1);
@@ -225,7 +237,7 @@ QString GooglePlugin::jsonParse(QString result) {
     pos++;
     index++;
     if(result.at(pos+1)==QChar(','))
-        returnLang=list1.at(index*2+1);
+        returnLang=list1.at(index*2+1); /*return when translate sentence*/
 
     while(result.indexOf("[",pos+1)!=-1){
         partOfSpeach.append(list1.at(index*2+1));
@@ -249,6 +261,7 @@ QString GooglePlugin::jsonParse(QString result) {
             return QString("");
         pos=pos2+2;
     }
+
     if(words.size()!=partOfSpeach.size()) {
         qDebug()<<"Error in Google Plugin (JsonParse)";
         Q_EMIT notify(Notify::Warning,
@@ -257,7 +270,7 @@ QString GooglePlugin::jsonParse(QString result) {
     }
     returnLang=list1.at(index*2+1);
     if(partOfSpeach.size()==0){
-        if(translation==original){
+        if(translation.toLower()==original.toLower()){
             return QString(""); // word don't exist";
         }
         else
@@ -265,8 +278,7 @@ QString GooglePlugin::jsonParse(QString result) {
     }
     result=translation;
     for(int i=0; i<words.size();i++) {
-        result+="<br/>";
-        result+="<pos>"+partOfSpeach.at(i)+"</pos>:";
+        result+="<br/><pos>"+partOfSpeach.at(i)+"</pos>: ";
         for(int j=0; j<words.at(i)->size();j++)
             result+=words.at(i)->at(j)+", ";
         result.remove(result.size()-2,2);
@@ -274,132 +286,134 @@ QString GooglePlugin::jsonParse(QString result) {
     return result;
 }
 
+
 void GooglePlugin::done() {
     wait=false;
 }
 
+
 void GooglePlugin::stop() {
     stopped=true;
 }
 
+
 QMap<QString, QString> GooglePlugin::initLanguages() {
     QMap<QString, QString> languages;
-    languages["AFRIKAANS"] = "af";
-    languages["ALBANIAN"] = "sq";
-    languages["AMHARIC"] = "am";
-    languages["ARABIC"] = "ar";
-    languages["ARMENIAN"] = "hy";
-    languages["AZERBAIJANI"] = "az";
-    languages["BASQUE"] = "eu";
-    languages["BELARUSIAN"] = "be";
-    languages["BENGALI"] = "bn";
-    languages["BIHARI"] = "bh";
-    languages["BRETON"] = "br";
-    languages["BULGARIAN"] = "bg";
-    languages["BURMESE"] = "my";
-    languages["CATALAN"] = "ca";
-    languages["CHEROKEE"] = "chr";
-    languages["CHINESE"] = "zh";
-    languages["CHINESE_SIMPLIFIED"] = "zh-CN";
-    languages["CHINESE_TRADITIONAL"] = "zh-TW";
-    languages["CORSICAN"] = "co";
-    languages["CROATIAN"] = "hr";
-    languages["CZECH"] = "cs";
-    languages["DANISH"] = "da";
-    languages["DHIVEHI"] = "dv";
-    languages["DUTCH"] = "nl";
-    languages["ENGLISH"] = "en";
-    languages["ESPERANTO"] = "eo";
-    languages["ESTONIAN"] = "et";
-    languages["FAROESE"] = "fo";
-    languages["FILIPINO"] = "tl";
-    languages["FINNISH"] = "fi";
-    languages["FRENCH"] = "fr";
-    languages["FRISIAN"] = "fy";
-    languages["GALICIAN"] = "gl";
-    languages["GEORGIAN"] = "ka";
-    languages["GERMAN"] = "de";
-    languages["GREEK"] = "el";
-    languages["GUJARATI"] = "gu";
-    languages["HAITIAN_CREOLE"] = "ht";
-    languages["HEBREW"] = "iw";
-    languages["HINDI"] = "hi";
-    languages["HUNGARIAN"] = "hu";
-    languages["ICELANDIC"] = "is";
-    languages["INDONESIAN"] = "id";
-    languages["INUKTITUT"] = "iu";
-    languages["IRISH"] = "ga";
-    languages["ITALIAN"] = "it";
-    languages["JAPANESE"] = "ja";
-    languages["JAVANESE"] = "jw";
-    languages["KANNADA"] = "kn";
-    languages["KAZAKH"] = "kk";
-    languages["KHMER"] = "km";
-    languages["KOREAN"] = "ko";
-    languages["KURDISH"] = "ku";
-    languages["KYRGYZ"] = "ky";
-    languages["LAO"] = "lo";
-    languages["LATIN"] = "la";
-    languages["LATVIAN"] = "lv";
-    languages["LITHUANIAN"] = "lt";
-    languages["LUXEMBOURGISH"] = "lb";
-    languages["MACEDONIAN"] = "mk";
-    languages["MALAY"] = "ms";
-    languages["MALAYALAM"] = "ml";
-    languages["MALTESE"] = "mt";
-    languages["MAORI"] = "mi";
-    languages["MARATHI"] = "mr";
-    languages["MONGOLIAN"] = "mn";
-    languages["NEPALI"] = "ne";
-    languages["NORWEGIAN"] = "no";
-    languages["OCCITAN"] = "oc";
-    languages["ORIYA"] = "or";
-    languages["PASHTO"] = "ps";
-    languages["PERSIAN"] = "fa";
-    languages["POLISH"] = "pl";
-    languages["PORTUGUESE"] = "pt";
-    languages["PORTUGUESE_PORTUGAL"] = "pt-PT";
-    languages["PUNJABI"] = "pa";
-    languages["QUECHUA"] = "qu";
-    languages["ROMANIAN"] = "ro";
-    languages["RUSSIAN"] = "ru";
-    languages["SANSKRIT"] = "sa";
-    languages["SCOTS_GAELIC"] = "gd";
-    languages["SERBIAN"] = "sr";
-    languages["SINDHI"] = "sd";
-    languages["SINHALESE"] = "si";
-    languages["SLOVAK"] = "sk";
-    languages["SLOVENIAN"] = "sl";
-    languages["SPANISH"] = "es";
-    languages["SUNDANESE"] = "su";
-    languages["SWAHILI"] = "sw";
-    languages["SWEDISH"] = "sv";
-    languages["SYRIAC"] = "syr";
-    languages["TAJIK"] = "tg";
-    languages["TAMIL"] = "ta";
-    languages["TATAR"] = "tt";
-    languages["TELUGU"] = "te";
-    languages["THAI"] = "th";
-    languages["TIBETAN"] = "bo";
-    languages["TONGA"] = "to";
-    languages["TURKISH"] = "tr";
-    languages["UKRAINIAN"] = "uk";
-    languages["URDU"] = "ur";
-    languages["UZBEK"] = "uz";
-    languages["UIGHUR"] = "ug";
-    languages["VIETNAMESE"] = "vi";
-    languages["WELSH"] = "cy";
-    languages["YIDDISH"] = "yi";
-    languages["YORUBA"] = "yo";
-    languages["UNKNOWN"] = "";
-    return languages;
+    languages["Afrikaans"] = "af";
+    languages["Albanian"] = "sq";
+    languages["Arabic"] = "ar";
+    languages["Armenian"] = "hy";
+    languages["Azerbaijani"] = "az";
+    languages["Basque"] = "eu";
+    languages["Belarusian"] = "be";
+    languages["Bulgarian"] = "bg";
+    languages["Catalan"] = "ca";
+    languages["Chinese"] = "zh";
+    languages["Croatian"] = "hr";
+    languages["Czech"] = "cs";
+    languages["Danish"] = "da";
+    languages["Dutch"] = "nl";
+    languages["English"] = "en";
+    languages["Estonian"] = "et";
+    languages["Filipino"] = "tl";
+    languages["Finnish"] = "fi";
+    languages["French"] = "fr";
+    languages["Galician"] = "gl";
+    languages["Georgian"] = "ka";
+    languages["German"] = "de";
+    languages["Greek"] = "el";
+    languages["Haitian_creole"] = "ht";
+    languages["Hebrew"] = "iw";
+    languages["Hindi"] = "hi";
+    languages["Hungarian"] = "hu";
+    languages["Icelandic"] = "is";
+    languages["Indonesian"] = "id";
+    languages["Irish"] = "ga";
+    languages["Italian"] = "it";
+    languages["Japanese"] = "ja";
+    languages["Korean"] = "ko";
+    languages["Latvian"] = "lv";
+    languages["Lithuanian"] = "lt";
+    languages["Macedonian"] = "mk";
+    languages["Malay"] = "ms";
+    languages["Maltese"] = "mt";
+    languages["Norwegian"] = "no";
+    languages["Persian"] = "fa";
+    languages["Polish"] = "pl";
+    languages["Portuguese"] = "pt";
+    languages["Romanian"] = "ro";
+    languages["Russian"] = "ru";
+    languages["Serbian"] = "sr";
+    languages["Slovak"] = "sk";
+    languages["Slovenian"] = "sl";
+    languages["Spanish"] = "es";
+    languages["Swahili"] = "sw";
+    languages["Swedish"] = "sv";
+    languages["Thai"] = "th";
+    languages["Turkish"] = "tr";
+    languages["Ukrainian"] = "uk";
+    languages["Urdu"] = "ur";
+    languages["Vietnamese"] = "vi";
+    languages["Welsh"] = "cy";
+    languages["Yiddish"] = "yi";
+    languages["Detect langlage"] = "";
+//    languages["AMHARIC"] = "am";
+//    languages["BENGALI"] = "bn";
+//    languages["BIHARI"] = "bh";
+//    languages["BRETON"] = "br";
+//    languages["BURMESE"] = "my";
+//    languages["CHEROKEE"] = "chr";
+//    languages["CHINESE_SIMPLIFIED"] = "zh-CN";
+//    languages["CHINESE_TRADITIONAL"] = "zh-TW";
+//    languages["CORSICAN"] = "co";
+//    languages["DHIVEHI"] = "dv";
+//    languages["ESPERANTO"] = "eo";
+//    languages["FAROESE"] = "fo";
+//    languages["FRISIAN"] = "fy";
+//    languages["GUJARATI"] = "gu";
+//    languages["INUKTITUT"] = "iu";
+//    languages["JAVANESE"] = "jw";
+//    languages["KANNADA"] = "kn";
+//    languages["KAZAKH"] = "kk";
+//    languages["KHMER"] = "km";
+//    languages["KURDISH"] = "ku";
+//    languages["KYRGYZ"] = "ky";
+//    languages["LAO"] = "lo";
+//    languages["LATIN"] = "la";
+//    languages["LUXEMBOURGISH"] = "lb";
+//    languages["MALAYALAM"] = "ml";
+//    languages["MAORI"] = "mi";
+//    languages["MARATHI"] = "mr";
+//    languages["MONGOLIAN"] = "mn";
+//    languages["NEPALI"] = "ne";
+//    languages["OCCITAN"] = "oc";
+//    languages["ORIYA"] = "or";
+//    languages["PASHTO"] = "ps";
+//    languages["PORTUGUESE_PORTUGAL"] = "pt-PT";
+//    languages["PUNJABI"] = "pa";
+//    languages["QUECHUA"] = "qu";
+//    languages["SANSKRIT"] = "sa";
+//    languages["SCOTS_GAELIC"] = "gd";
+//    languages["SINDHI"] = "sd";
+//    languages["SINHALESE"] = "si";
+//    languages["SUNDANESE"] = "su";
+//    languages["SYRIAC"] = "syr";
+//    languages["TAJIK"] = "tg";
+//    languages["TAMIL"] = "ta";
+//    languages["TATAR"] = "tt";
+//    languages["TELUGU"] = "te";
+//    languages["TIBETAN"] = "bo";
+//    languages["TONGA"] = "to";
+//    languages["UZBEK"] = "uz";
+//    languages["UIGHUR"] = "ug";
+    return languages;  
 }
 
+
 void GooglePlugin::getDictionaryInfo() {
-    QString fullLangFrom=languages.key(_langFrom);
-    QString fullLangTo=languages.key(_langTo);
-    _infoNote=" [" + fullLangFrom + "-";
-    _infoNote+= fullLangTo + "] (" + _type + ")";
+    QString fullLangFrom=languages.key(_settings->value("lang_from"));
+    QString fullLangTo=languages.key(_settings->value("lang_to"));
+    _infoNote=" [" + fullLangFrom + "-" + fullLangTo + "] (Google)";
 }