From 674a4adf7dc194521ec2d109d14324d474d73408 Mon Sep 17 00:00:00 2001 From: Jakub Jaszczynski Date: Fri, 1 Oct 2010 12:49:30 +0200 Subject: [PATCH] google translation can be added to bookmark --- src/mdictionary/backbone/Bookmarks.cpp | 17 ++++++++++++++++- src/mdictionary/backbone/Bookmarks.h | 2 ++ src/mdictionary/backbone/backbone.cpp | 28 ++++++++++++++++++++++++++++ src/mdictionary/backbone/backbone.h | 12 ++++-------- src/mdictionary/gui/MainWindow.cpp | 7 +++++++ src/plugins/google/GooglePlugin.cpp | 26 +++++++++++++++++++++----- src/plugins/google/GooglePlugin.h | 1 + src/plugins/google/TranslationGoogle.cpp | 13 ++++++------- src/plugins/google/TranslationGoogle.h | 2 +- 9 files changed, 86 insertions(+), 22 deletions(-) diff --git a/src/mdictionary/backbone/Bookmarks.cpp b/src/mdictionary/backbone/Bookmarks.cpp index a2f55c8..56d8020 100644 --- a/src/mdictionary/backbone/Bookmarks.cpp +++ b/src/mdictionary/backbone/Bookmarks.cpp @@ -55,7 +55,7 @@ void Bookmarks::clear() { void Bookmarks::add(Translation* translation) { if (!translation) return ; - checkAndCreateDb(); + checkAndCreateDb(); QSqlDatabase db = getDbCnx(); if(!db.isOpen() && !db.open()) { qDebug() << "Database error: " << db.lastError().text() << endl; @@ -70,6 +70,21 @@ void Bookmarks::add(Translation* translation) { cur.exec(); } +void Bookmarks::add(QString key,QString removeAccentKey,QString value){ + checkAndCreateDb(); + QSqlDatabase db = getDbCnx(); + if(!db.isOpen() && !db.open()) { + qDebug() << "Database error: " << db.lastError().text() << endl; + return ; + } + QSqlQuery cur(db); + cur.prepare("insert into bookmarks values (?,?,?)"); + cur.addBindValue(key); + cur.addBindValue(removeAccentKey); + cur.addBindValue(value); + cur.exec(); +} + void Bookmarks::remove(Translation* translation) { if (!translation) diff --git a/src/mdictionary/backbone/Bookmarks.h b/src/mdictionary/backbone/Bookmarks.h index 74e4721..1731499 100644 --- a/src/mdictionary/backbone/Bookmarks.h +++ b/src/mdictionary/backbone/Bookmarks.h @@ -63,6 +63,8 @@ public: */ void add(Translation* translation); + void add(QString key,QString removeAccentKey,QString value); + /*! Removes word and corresponding translation cache from bookmarks list \param translation translation to be removed */ diff --git a/src/mdictionary/backbone/backbone.cpp b/src/mdictionary/backbone/backbone.cpp index 4ab57cc..e441ecb 100644 --- a/src/mdictionary/backbone/backbone.cpp +++ b/src/mdictionary/backbone/backbone.cpp @@ -514,6 +514,34 @@ QStringList Backbone::xmls() { return _xmlResult; } +void Backbone::addBookmark(QList translations) { + if(translations.size()>0) { + Translation *tr = translations.at(0); + foreach(CommonDictInterface* dict, activeDicts()) { + Translation* trans = dict->getTranslationFor(tr->key()); + if(trans) { + translations.append(trans); + } + } + } + + Translation* translation; + QHash trans; + foreach(translation,translations){ + translation->setBookmark(true); + trans.insert(translation->toXml(),translation->key()); + } + + foreach(QString value,trans.keys()){ + QString key= trans.value(value); + _bookmarks.add(key,key,value); + } + + // Translation* translation; + // foreach(translation, translations) + // _bookmarks.add(translation); + // emit bookmarkReady(); +} void Backbone::searchXml(QList translations) { diff --git a/src/mdictionary/backbone/backbone.h b/src/mdictionary/backbone/backbone.h index 58ec3bd..e5c619d 100644 --- a/src/mdictionary/backbone/backbone.h +++ b/src/mdictionary/backbone/backbone.h @@ -45,6 +45,7 @@ #include #include #include +#include #include "../../include/CommonDictInterface.h" #include "../../include/settings.h" #include "../../include/translation.h" @@ -194,11 +195,7 @@ public Q_SLOTS: added to bookmarks data base (key and translation stored in db)) \param translations list of Translation objects to be stored in db */ - void addBookmark(QList translations) { - Translation* translation; - foreach(translation, translations) - _bookmarks.add(translation); - } + void addBookmark(QList translations); /*! Removes bookmarks to given translations @@ -234,15 +231,12 @@ public Q_SLOTS: _bookmarkSearchWatcher.setFuture(_innerBookmarks); } - - /*! Sets settings for backbone: history_size, search_limit, searching backends (search_bookmarks, search_dictionaries) \param settings settings object with options set */ void setSettings(Settings* settings); - /*! \return corresponding settings object with history_size, search_limit, searching backends (search_bookmarks, search_dictionaries) */ @@ -277,6 +271,8 @@ Q_SIGNALS: */ void notify(Notify::NotifyType, QString); + void bookmarkReady(); + private Q_SLOTS: void bookmarksListReady(); diff --git a/src/mdictionary/gui/MainWindow.cpp b/src/mdictionary/gui/MainWindow.cpp index e347a7b..51384d6 100644 --- a/src/mdictionary/gui/MainWindow.cpp +++ b/src/mdictionary/gui/MainWindow.cpp @@ -464,6 +464,13 @@ void MainWindow::connectBackbone() { connect(backbone, SIGNAL(closeOk()), this, SLOT(close())); + + + //connect(wordListWidget, SIGNAL(addBookmark(QList)), + // this, SIGNAL(setBusy())); + + //connect(backbone, SIGNAL(bookmarkReady()), + // this, SIGNAL(setIdle())); } void MainWindow::connectSearchBar() { diff --git a/src/plugins/google/GooglePlugin.cpp b/src/plugins/google/GooglePlugin.cpp index 37eaf20..0d85f4c 100644 --- a/src/plugins/google/GooglePlugin.cpp +++ b/src/plugins/google/GooglePlugin.cpp @@ -44,8 +44,11 @@ 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() { @@ -189,10 +192,22 @@ QList 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; + //qDebug()<<"google3"; 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(); + // qDebug()< GooglePlugin::searchWordList(QString word, int ) { QString GooglePlugin::jsonParse(QString result) { - qDebug()<<"Json"<at(j)+", "; result.remove(result.size()-2,2); } - qDebug()<<"PO"<"; + result+=" bookmark=\"true\" > \n"; else - result+="bookmark=\"false\" >"; - - //qDebug()<<"trans: "<<_trans; + result+=" bookmark=\"false\" > \n"; if(_trans!="") return result+=_dictionaryInfo+ ""+_trans +""; - QList translations=googlePlugin->searchWordList(_key); - //qDebug()<<"test: "<0 && translations.at(0)) + if(translations.size()>0 && translations.at(0)){ + if(isBookmark()) + translations.at(0)->setBookmark(true); return translations.at(0)->toXml(); + } return ""; } diff --git a/src/plugins/google/TranslationGoogle.h b/src/plugins/google/TranslationGoogle.h index 5ce1f76..4eb41cc 100644 --- a/src/plugins/google/TranslationGoogle.h +++ b/src/plugins/google/TranslationGoogle.h @@ -55,7 +55,7 @@ public: //! \return whether given translation is taken from bookmarks int isBookmark() const { return _bookmark; - } + } //! \returns corresponding dict object uint dict() const {return _dictHash;} -- 1.7.9.5