diff --git a/src/searchEngine.cpp b/src/searchEngine.cpp index b47692a05..c1eff8c4a 100644 --- a/src/searchEngine.cpp +++ b/src/searchEngine.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include "SearchListDelegate.h" #include "searchEngine.h" @@ -79,6 +80,9 @@ SearchEngine::SearchEngine(bittorrent *BTSession, QSystemTrayIcon *myTrayIcon, b connect(searchProcess, SIGNAL(started()), this, SLOT(searchStarted())); connect(searchProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(readSearchOutput())); connect(searchProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(searchFinished(int,QProcess::ExitStatus))); + searchTimeout = new QTimer(this); + searchTimeout->setSingleShot(true); + connect(searchTimeout, SIGNAL(timeout()), this, SLOT(on_stop_search_button_clicked())); // Check last enabled search engines loadEngineSettings(); // Update nova.py search plugin if necessary @@ -92,6 +96,7 @@ SearchEngine::~SearchEngine(){ saveColWidthSearchList(); searchProcess->kill(); searchProcess->waitForFinished(); + delete searchTimeout; delete searchProcess; delete searchCompleter; delete SearchListModel; @@ -245,6 +250,9 @@ void SearchEngine::on_search_button_clicked(){ searchProcess->kill(); searchProcess->waitForFinished(); } + if(searchTimeout->isActive()) { + searchTimeout->stop(); + } QString pattern = search_pattern->text().trimmed(); // No search pattern entered if(pattern.isEmpty()){ @@ -279,6 +287,7 @@ void SearchEngine::on_search_button_clicked(){ results_lbl->setText(tr("Results")+" (0):"); // Launch search searchProcess->start(misc::qBittorrentPath()+"search_engine"+QDir::separator()+"nova2.py", params, QIODevice::ReadOnly); + searchTimeout->start(180000); // 3min } void SearchEngine::searchStarted(){ @@ -448,6 +457,7 @@ void SearchEngine::on_stop_search_button_clicked(){ // Kill process searchProcess->terminate(); search_stopped = true; + searchTimeout->stop(); } // Clear search results list diff --git a/src/searchEngine.h b/src/searchEngine.h index 024e2a6e6..0da77d136 100644 --- a/src/searchEngine.h +++ b/src/searchEngine.h @@ -33,6 +33,7 @@ class SearchListDelegate; class bittorrent; class QSystemTrayIcon; class downloadThread; +class QTimer; class SearchEngine : public QWidget, public Ui::search_engine{ Q_OBJECT @@ -54,6 +55,7 @@ class SearchEngine : public QWidget, public Ui::search_engine{ bool systrayIntegration; downloadThread *downloader; QStringList enabled_engines; + QTimer *searchTimeout; public: SearchEngine(bittorrent *BTSession, QSystemTrayIcon *myTrayIcon, bool systrayIntegration);