#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");
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["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)";
}