Copyright 2010 Comarch S.A.
*******************************************************************************/
+/*!
+ \file GooglePlugin.cpp
+ \brief Implementation of google plugin's main class.
-/*! \file GooglePlugin.cpp
\author Jakub Jaszczynski <j.j.jaszczynski@gmail.com>
*/
#include <QDebug>
#include "GoogleDictDialog.h"
+QMap<QString, QString> GooglePlugin::languages;
+bool GooglePlugin::noNetworkErrorShowed = false;
+
+
GooglePlugin::GooglePlugin(QObject *parent): CommonDictInterface(parent),
_name(""),_infoNote("") {
_settings = new Settings();
_settings->setValue("type","google");
_settings->setValue("connection_accepted","true");
_dictDialog = new GoogleDictDialog(this,this);
- _icon = QIcon(":/icons/drawing.png");
+ _icon = QIcon("/usr/share/mdictionary/google.png");
stopped = false;
- languages=initLanguages();
+ 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");
+ }
+ QCoreApplication::installTranslator(translator);
}
_settings->setValue("connection_accepted","false");
}
+
bool GooglePlugin::isConnectionAccept() const {
if(_settings->value("connection_accepted")=="true")
return true;
}
-uint GooglePlugin::hash() const {
- return _hash;
-}
-
-
-void GooglePlugin::setHash(uint _hash) {
- this->_hash=_hash;
-}
-
-
Settings* GooglePlugin::settings() {
-/* Settings *returnSettings=new Settings;
- QStringList list = _settings->keys();
- foreach(QString key, list)
- returnSettings->setValue(key,_settings->value(key));
- return returnSettings;
-*/
return _settings;
}
QString GooglePlugin::search(QString) {
- qDebug() << "function is not used in this plugin";
+ qDebug() << "function is not used in google plugin";
return QString("");
}
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"));
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") {
- qDebug()<<error;
- Q_EMIT notify(Notify::Warning,
- tr("GooglePlugin: %1").arg(error));
+ if(!noNetworkErrorShowed) {
+ noNetworkErrorShowed = true;
+ Q_EMIT notify(Notify::Warning,
+ tr("GooglePlugin: %1").arg(error));
+ }
}
QString text = QString::fromUtf8(http->readAll());
}
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+"\"";
}
}
-QMap<QString, QString> GooglePlugin::initLanguages() {
- QMap<QString, QString> languages;
+void GooglePlugin::initLanguages() {
+ if(languages.count() != 0) return;
+
languages["Afrikaans"] = "af";
languages["Albanian"] = "sq";
languages["Arabic"] = "ar";
// languages["TONGA"] = "to";
// languages["UZBEK"] = "uz";
// languages["UIGHUR"] = "ug";
- return languages;
}