qBittorrent
torrentfilter.h
Go to the documentation of this file.
1 /*
2  * Bittorrent Client using Qt and libtorrent.
3  * Copyright (C) 2014 Vladimir Golovnev <glassez@yandex.ru>
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  *
19  * In addition, as a special exception, the copyright holders give permission to
20  * link this program with the OpenSSL project's "OpenSSL" library (or with
21  * modified versions of it that use the same license as the "OpenSSL" library),
22  * and distribute the linked executables. You must obey the GNU General Public
23  * License in all respects for all of the code used other than "OpenSSL". If you
24  * modify file(s), you may extend this exception to your version of the file(s),
25  * but you are not obligated to do so. If you do not wish to do so, delete this
26  * exception statement from your version.
27  */
28 
29 #pragma once
30 
31 #include <QSet>
32 #include <QString>
33 
35 
36 namespace BitTorrent
37 {
38  class Torrent;
39 }
40 
41 using TorrentIDSet = QSet<BitTorrent::TorrentID>;
42 
44 {
45 public:
46  enum Type
47  {
48  All,
60  Errored
61  };
62 
63  // These mean any permutation, including no category / tag.
64  static const QString AnyCategory;
65  static const TorrentIDSet AnyID;
66  static const QString AnyTag;
67 
80 
81  TorrentFilter() = default;
82  // category & tags: pass empty string for uncategorized / untagged torrents.
83  // Pass null string (QString()) to disable filtering (i.e. all torrents).
84  TorrentFilter(Type type, const TorrentIDSet &idSet = AnyID, const QString &category = AnyCategory, const QString &tag = AnyTag);
85  TorrentFilter(const QString &filter, const TorrentIDSet &idSet = AnyID, const QString &category = AnyCategory, const QString &tags = AnyTag);
86 
87  bool setType(Type type);
88  bool setTypeByName(const QString &filter);
89  bool setTorrentIDSet(const TorrentIDSet &idSet);
90  bool setCategory(const QString &category);
91  bool setTag(const QString &tag);
92 
93  bool match(const BitTorrent::Torrent *torrent) const;
94 
95 private:
96  bool matchState(const BitTorrent::Torrent *torrent) const;
97  bool matchHash(const BitTorrent::Torrent *torrent) const;
98  bool matchCategory(const BitTorrent::Torrent *torrent) const;
99  bool matchTag(const BitTorrent::Torrent *torrent) const;
100 
102  QString m_category;
103  QString m_tag;
105 };
bool setType(Type type)
static const QString AnyCategory
Definition: torrentfilter.h:64
bool setCategory(const QString &category)
static const TorrentIDSet AnyID
Definition: torrentfilter.h:65
QString m_category
static const TorrentFilter ActiveTorrent
Definition: torrentfilter.h:73
bool setTag(const QString &tag)
static const TorrentFilter InactiveTorrent
Definition: torrentfilter.h:74
static const TorrentFilter CheckingTorrent
Definition: torrentfilter.h:78
static const QString AnyTag
Definition: torrentfilter.h:66
static const TorrentFilter DownloadingTorrent
Definition: torrentfilter.h:68
static const TorrentFilter ResumedTorrent
Definition: torrentfilter.h:72
bool match(const BitTorrent::Torrent *torrent) const
bool matchTag(const BitTorrent::Torrent *torrent) const
TorrentFilter()=default
static const TorrentFilter PausedTorrent
Definition: torrentfilter.h:71
static const TorrentFilter ErroredTorrent
Definition: torrentfilter.h:79
bool setTorrentIDSet(const TorrentIDSet &idSet)
static const TorrentFilter StalledUploadingTorrent
Definition: torrentfilter.h:76
TorrentIDSet m_idSet
static const TorrentFilter SeedingTorrent
Definition: torrentfilter.h:69
bool matchHash(const BitTorrent::Torrent *torrent) const
bool matchState(const BitTorrent::Torrent *torrent) const
static const TorrentFilter StalledDownloadingTorrent
Definition: torrentfilter.h:77
bool setTypeByName(const QString &filter)
bool matchCategory(const BitTorrent::Torrent *torrent) const
static const TorrentFilter CompletedTorrent
Definition: torrentfilter.h:70
static const TorrentFilter StalledTorrent
Definition: torrentfilter.h:75
QSet< BitTorrent::TorrentID > TorrentIDSet
Definition: torrentfilter.h:41