From b311902cf31ad004da5e7de6de363f8935002977 Mon Sep 17 00:00:00 2001 From: Vladislav Tronko Date: Wed, 20 Jan 2016 19:44:22 +0200 Subject: [PATCH] Added action with all in one image search engines --- src/plugins/ImageFinder/imagefinder.cpp | 12 ++++++++---- src/plugins/ImageFinder/imagefinder.h | 5 +++-- src/plugins/ImageFinder/imagefinderplugin.cpp | 16 ++++++++++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/plugins/ImageFinder/imagefinder.cpp b/src/plugins/ImageFinder/imagefinder.cpp index 7a73078df..035403eac 100644 --- a/src/plugins/ImageFinder/imagefinder.cpp +++ b/src/plugins/ImageFinder/imagefinder.cpp @@ -51,17 +51,21 @@ void ImageFinder::setSearchEngine(ImageFinder::SearchEngine searchEngine) settings.endGroup(); } -QString ImageFinder::searchEngineName() const +QString ImageFinder::searchEngineName(SearchEngine engine) const { + if (engine == SearchEngine::None) + engine = m_searchEngine; QStringList searchEngines; searchEngines << QSL("Google") << QSL("Yandex") << QSL("TinEye"); - return searchEngines.at(m_searchEngine); + return searchEngines.at(engine); } -QUrl ImageFinder::getSearchQuery(const QUrl &imageUrl) +QUrl ImageFinder::getSearchQuery(const QUrl &imageUrl, SearchEngine engine) { - switch (m_searchEngine) + if (engine == SearchEngine::None) + engine = m_searchEngine; + switch (engine) { case SearchEngine::Google: return QUrl(QSL("https://www.google.com/searchbyimage?site=search&image_url=%1").arg(imageUrl.toString())); diff --git a/src/plugins/ImageFinder/imagefinder.h b/src/plugins/ImageFinder/imagefinder.h index 8fcea4e18..cabb4a297 100644 --- a/src/plugins/ImageFinder/imagefinder.h +++ b/src/plugins/ImageFinder/imagefinder.h @@ -27,6 +27,7 @@ class ImageFinder : public QObject Q_OBJECT public: enum SearchEngine { + None = -1, Google = 0, Yandex, TinEye @@ -37,9 +38,9 @@ public: SearchEngine searchEngine() const; void setSearchEngine(SearchEngine searchEngine); - QString searchEngineName() const; + QString searchEngineName(SearchEngine engine = SearchEngine::None) const; - QUrl getSearchQuery(const QUrl &imageUrl); + QUrl getSearchQuery(const QUrl &imageUrl, SearchEngine engine = SearchEngine::None); private: QString m_settingsFile; diff --git a/src/plugins/ImageFinder/imagefinderplugin.cpp b/src/plugins/ImageFinder/imagefinderplugin.cpp index 334972763..bb592bba8 100644 --- a/src/plugins/ImageFinder/imagefinderplugin.cpp +++ b/src/plugins/ImageFinder/imagefinderplugin.cpp @@ -95,5 +95,21 @@ void ImageFinderPlugin::populateWebViewMenu(QMenu *menu, WebView *view, const We connect(action, SIGNAL(triggered()), view, SLOT(openUrlInSelectedTab())); connect(action, SIGNAL(ctrlTriggered()), view, SLOT(openUrlInBackgroundTab())); menu->addAction(action); + + Menu* swMenu = new Menu(tr("Search image with..."), menu); + swMenu->setCloseOnMiddleClick(true); + for (int i = 0; i < 3; ++i) + { + ImageFinder::SearchEngine e = static_cast(i); + QString engineName = m_finder->searchEngineName(e); + Action* act = new Action(engineName); + act->setIcon(QIcon(QSL(":/imgfinder/data/%1.png").arg(engineName.toLower()))); + act->setData(m_finder->getSearchQuery(r.imageUrl(), e)); + connect(act, SIGNAL(triggered()), view, SLOT(openUrlInSelectedTab())); + connect(act, SIGNAL(ctrlTriggered()), view, SLOT(openUrlInBackgroundTab())); + swMenu->addAction(act); + } + + menu->addMenu(swMenu); } }