Merge branch 'master' into google
authorJakub Jaszczynski <j.j.jaszczynski@gmail.com>
Mon, 30 Aug 2010 07:14:51 +0000 (09:14 +0200)
committerJakub Jaszczynski <j.j.jaszczynski@gmail.com>
Mon, 30 Aug 2010 07:14:51 +0000 (09:14 +0200)
Conflicts:
trunk/src/plugins/google/src/GooglePlugin.cpp
trunk/src/plugins/xdxf/src/XdxfCachingDialog.cpp
trunk/src/plugins/xdxf/src/xdxfplugin.cpp

1  2 
trunk/src/base/backbone/backbone.cpp
trunk/src/plugins/google/src/GooglePlugin.cpp
trunk/src/plugins/xdxf/src/XdxfCachingDialog.cpp
trunk/src/plugins/xdxf/src/xdxfplugin.cpp

@@@ -346,8 -346,15 +346,15 @@@ void Backbone::loadPlugins() 
          }
          QObject *pl = loader.instance();
  
+         bool exists = 0;
          CommonDictInterface *plugin = qobject_cast<CommonDictInterface*>(pl);
-         _plugins.append(plugin);
+         foreach(CommonDictInterface* pl, _plugins)
+             if(pl->type() == plugin->type()) {
+                 exists = 1;
+                 break;
+            }
+         if(!exists)
+             _plugins.append(plugin);
      }
  }
  
@@@ -523,22 -530,14 +530,22 @@@ void Backbone::searchHtml(QList<Transla
      QList<TranslationPtr> dummy;
      stopped = false;
      foreach(Translation* tr, translations) {
 -        if(containsDict(tr->dict()) || !tr->dict())
 +         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));
 +        } */
 +    }
 +    if(translations.size()>0) {
 +        Translation *tr = translations.at(0);
          foreach(CommonDictInterface* dict, activeDicts()) {
              Translation* trans = dict->getTranslationFor(tr->key());
              if(trans)
                  dummy.append(TranslationPtr(trans));
          }
 -  }
 +    }
  
     _innerHtmlResult = QtConcurrent::mapped(dummy,
                                              &TranslationPtr::toHtml);
  #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");
 +
 +    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) {
      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 on this plagin";
 +    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");
          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();
  
              Q_EMIT notify(Notify::Warning,
                      QString("GooglePlugin: %1").arg(error));
          }
 +
          QString text = QString::fromUtf8(http->readAll());
          text=jsonParse(text);
          if(text!="") {
      return translations;
  }
  
 +
  QString GooglePlugin::jsonParse(QString result) {
      int pos=0,pos2=0,index=0,size=0;
      QString returnLang;
      QStringList list1 = result.split("\"");
  
      size=(list1.size()-1)/2;
 -
      if(size<=2)
          return QString(""); // wrong format of data
  
      original=list1.at(index*2+1);
      pos=result.indexOf("]");
      index++;
 -
      while(result.at(pos+1)==QChar(',')) {
          index++;
          translation+=list1.at(index*2+1);
      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));
              return QString("");
          pos=pos2+2;
      }
 +
      if(words.size()!=partOfSpeach.size()) {
          qDebug()<<"Error in Google Plugin (JsonParse)";
          Q_EMIT notify(Notify::Warning,
      }
      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
      }
      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);
      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["CROATIAN"] = "hr";
      languages["CZECH"] = "cs";
      languages["DANISH"] = "da";
 -    languages["DHIVEHI"] = "dv";
      languages["DUTCH"] = "nl";
      languages["ENGLISH"] = "en";
 -    languages["ESPERANTO"] = "eo";
      languages["ESTONIAN"] = "et";
      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["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["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["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["TURKISH"] = "tr";
      languages["UKRAINIAN"] = "uk";
      languages["URDU"] = "ur";
      languages["VIETNAMESE"] = "vi";
      languages["WELSH"] = "cy";
      languages["YIDDISH"] = "yi";
 -    languages["YORUBA"] = "yo";
 -    languages["UNKNOWN"] = "";
 -    return languages;
 +    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)";
  }
  
  
@@@ -28,8 -28,8 +28,8 @@@
  #include <QDebug>
  
  
 -XdxfCachingDialog::XdxfCachingDialog(XdxfPlugin *parent) :
 -    QDialog((QWidget*)parent)
 +XdxfCachingDialog::XdxfCachingDialog(XdxfPlugin *parent) //:
 +//    QDialog((QWidget*)parent)
  {
      verticalLayout = new QVBoxLayout(this);
      setLayout(verticalLayout);
@@@ -54,9 -54,9 +54,8 @@@
      connect(cancelButton, SIGNAL(clicked()),
              this, SIGNAL(cancelCaching()));
  
 -   // connect(parent, SIGNAL(updateCachingProgress(int, int)),
 -    //        this, SLOT(updateCachingProgress(int, int)));
 -
 +   connect(parent, SIGNAL(updateCachingProgress(int, int)),
 +           this, SLOT(updateCachingProgress(int, int)));
      time.start();
  }
  
  
  XdxfPlugin::XdxfPlugin(QObject *parent) : CommonDictInterface(parent),
                      _langFrom(tr("")), _langTo(tr("")),_name(tr("")),
 -                    _type("xdxf"), _infoNote(tr("")) {
 +                    _type(tr("xdxf")), _infoNote(tr("")) {
      _wordsCount = -1;
      _settings = new Settings();
      _dictDialog = new XdxfDictDialog(this);
 -    cachingDialog = new XdxfCachingDialog();
 +    cachingDialog = new XdxfCachingDialog(this);
 +
  
      connect(cachingDialog, SIGNAL(cancelCaching()),
              this, SLOT(stop()));
      connect(this, SIGNAL(updateCachingProgress(int,int)),
              cachingDialog, SLOT(updateCachingProgress(int,int)));
  
 +
      _settings->setValue("type","xdxf");
  
      stopped = false;
@@@ -55,7 -53,6 +54,7 @@@
  
  XdxfPlugin::~XdxfPlugin() {
      delete _settings;
 +    delete cachingDialog;
  }
  
  
@@@ -139,6 -136,7 +138,6 @@@ QList<Translation*> XdxfPlugin::searchW
  
  QList<Translation*> XdxfPlugin::searchWordListFile(QString word, int limit) {
      QTime time;
 -    time.start();
      QSet<Translation*> translations;
      QFile dictionaryFile(path);
  
      }
      stopped=false;
      dictionaryFile.close();
 -    qDebug() << time.elapsed();
      return translations.toList();
  }
  
@@@ -353,29 -352,28 +352,29 @@@ bool XdxfPlugin::isCached() 
  
  
  void XdxfPlugin::setSettings(Settings *settings) {
 +    if(settings)
 +    {
 +        QString oldPath = _settings->value("path");
 +        if(oldPath != settings->value("path")) {
 +            setPath(settings->value("path"));
 +        }
  
 -    QString oldPath = _settings->value("path");
 -    if(oldPath != settings->value("path")) {
 -        setPath(settings->value("path"));
 -    }
 +       foreach(QString key, settings->keys())
 +           if(key != "generateCache")
 +               _settings->setValue(key, settings->value(key));
  
 -   foreach(QString key, settings->keys())
 -       if(key != "generateCache")
 -           _settings->setValue(key, settings->value(key));
 +        if((_settings->value("cached") == "false" ||
 +                _settings->value("cached").isEmpty()) &&
 +                settings->value("generateCache") == "true") {
 +            makeCache("");
 +        }
 +        else if (settings->value("generateCache") != "true") {
 +           _settings->setValue("cached", "false");
 +        }
  
 -    if((_settings->value("cached") == "false" ||
 -            _settings->value("cached").isEmpty()) &&
 -            settings->value("generateCache") == "true") {
 -        makeCache("");
 -    }
 -    else if (settings->value("generateCache") != "true") {
 -       _settings->setValue("cached", "false");
 +        getDictionaryInfo();
 +        delete settings;
      }
 -
 -
 -    delete settings;
 -
      Q_EMIT settingsChanged();
  }
  
@@@ -447,7 -445,7 +446,7 @@@ int XdxfPlugin::countWords() 
      return wordsCount;
  }
  
 -bool XdxfPlugin::makeCache(QString dir) {
 +bool XdxfPlugin::makeCache(QString) {
      cachingDialog->setVisible(true);
      QCoreApplication::processEvents();
      stopped = false;
  
      QFile dictionaryFile(dictFileN.filePath());
  
 -
      if (!dictionaryFile.open(QFile::ReadOnly | QFile::Text)) {
          Q_EMIT updateCachingProgress(100, 0);
          Q_EMIT notify(Notify::Warning,