qBittorrent
searchhandler.h
Go to the documentation of this file.
1 /*
2  * Bittorrent Client using Qt and libtorrent.
3  * Copyright (C) 2015, 2018 Vladimir Golovnev <[email protected]>
4  * Copyright (C) 2006 Christophe Dumez <[email protected]>
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  * In addition, as a special exception, the copyright holders give permission to
21  * link this program with the OpenSSL project's "OpenSSL" library (or with
22  * modified versions of it that use the same license as the "OpenSSL" library),
23  * and distribute the linked executables. You must obey the GNU General Public
24  * License in all respects for all of the code used other than "OpenSSL". If you
25  * modify file(s), you may extend this exception to your version of the file(s),
26  * but you are not obligated to do so. If you do not wish to do so, delete this
27  * exception statement from your version.
28  */
29 
30 #pragma once
31 
32 #include <QByteArray>
33 #include <QList>
34 #include <QObject>
35 #include <QString>
36 #include <QtContainerFwd>
37 
38 class QProcess;
39 class QTimer;
40 
42 {
43  QString fileName;
44  QString fileUrl;
45  qlonglong fileSize;
46  qlonglong nbSeeders;
47  qlonglong nbLeechers;
48  QString siteUrl;
49  QString descrLink;
50 };
51 
53 
54 class SearchHandler : public QObject
55 {
56  Q_OBJECT
57  Q_DISABLE_COPY_MOVE(SearchHandler)
58 
59  friend class SearchPluginManager;
60 
61  SearchHandler(const QString &pattern, const QString &category
62  , const QStringList &usedPlugins, SearchPluginManager *manager);
63 
64 public:
65  bool isActive() const;
66  QString pattern() const;
68  QList<SearchResult> results() const;
69 
70  void cancelSearch();
71 
72 signals:
73  void searchFinished(bool cancelled = false);
74  void searchFailed();
75  void newSearchResults(const QVector<SearchResult> &results);
76 
77 private:
78  void readSearchOutput();
79  void processFailed();
80  void processFinished(int exitcode);
81  bool parseSearchResult(QStringView line, SearchResult &searchResult);
82 
83  const QString m_pattern;
84  const QString m_category;
85  const QStringList m_usedPlugins;
87  QProcess *m_searchProcess;
88  QTimer *m_searchTimeout;
90  bool m_searchCancelled = false;
92 };
SearchPluginManager * manager() const
QString pattern() const
void readSearchOutput()
const QString m_pattern
Definition: searchhandler.h:83
const QStringList m_usedPlugins
Definition: searchhandler.h:85
QTimer * m_searchTimeout
Definition: searchhandler.h:88
QList< SearchResult > m_results
Definition: searchhandler.h:91
bool parseSearchResult(QStringView line, SearchResult &searchResult)
QByteArray m_searchResultLineTruncated
Definition: searchhandler.h:89
bool isActive() const
QProcess * m_searchProcess
Definition: searchhandler.h:87
const QString m_category
Definition: searchhandler.h:84
QList< SearchResult > results() const
void searchFinished(bool cancelled=false)
bool m_searchCancelled
Definition: searchhandler.h:90
SearchPluginManager * m_manager
Definition: searchhandler.h:86
void processFinished(int exitcode)
void searchFailed()
void newSearchResults(const QVector< SearchResult > &results)
QString descrLink
Definition: searchhandler.h:49
QString fileUrl
Definition: searchhandler.h:44
qlonglong nbLeechers
Definition: searchhandler.h:47
qlonglong fileSize
Definition: searchhandler.h:45
qlonglong nbSeeders
Definition: searchhandler.h:46
QString siteUrl
Definition: searchhandler.h:48
QString fileName
Definition: searchhandler.h:43