mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-22 16:37:21 -06:00
Merge pull request #16587 from jagannatharjun/tracker-filter
Optimize torrent filters in GUI
This commit is contained in:
@@ -2090,6 +2090,11 @@ QVector<Torrent *> Session::torrents() const
|
||||
return result;
|
||||
}
|
||||
|
||||
qsizetype Session::torrentsCount() const
|
||||
{
|
||||
return m_torrents.size();
|
||||
}
|
||||
|
||||
bool Session::addTorrent(const QString &source, const AddTorrentParams ¶ms)
|
||||
{
|
||||
// `source`: .torrent file path/url or magnet uri
|
||||
|
||||
@@ -463,6 +463,7 @@ namespace BitTorrent
|
||||
void startUpTorrents();
|
||||
Torrent *findTorrent(const TorrentID &id) const;
|
||||
QVector<Torrent *> torrents() const;
|
||||
qsizetype torrentsCount() const;
|
||||
bool hasActiveTorrents() const;
|
||||
bool hasUnfinishedTorrents() const;
|
||||
bool hasRunningSeed() const;
|
||||
|
||||
@@ -217,6 +217,7 @@ namespace BitTorrent
|
||||
virtual bool hasMissingFiles() const = 0;
|
||||
virtual bool hasError() const = 0;
|
||||
virtual int queuePosition() const = 0;
|
||||
virtual QVector<QString> trackerURLs() const = 0;
|
||||
virtual QVector<TrackerEntry> trackers() const = 0;
|
||||
virtual QVector<QUrl> urlSeeds() const = 0;
|
||||
virtual QString error() const = 0;
|
||||
|
||||
@@ -517,6 +517,22 @@ void TorrentImpl::setAutoManaged(const bool enable)
|
||||
m_nativeHandle.unset_flags(lt::torrent_flags::auto_managed);
|
||||
}
|
||||
|
||||
QVector<QString> TorrentImpl::trackerURLs() const
|
||||
{
|
||||
const std::vector<lt::announce_entry> nativeTrackers = m_nativeHandle.trackers();
|
||||
|
||||
QVector<QString> urls;
|
||||
urls.reserve(static_cast<decltype(urls)::size_type>(nativeTrackers.size()));
|
||||
|
||||
for (const lt::announce_entry &tracker : nativeTrackers)
|
||||
{
|
||||
const QString trackerURL = QString::fromStdString(tracker.url);
|
||||
urls.push_back(trackerURL);
|
||||
}
|
||||
|
||||
return urls;
|
||||
}
|
||||
|
||||
QVector<TrackerEntry> TorrentImpl::trackers() const
|
||||
{
|
||||
const std::vector<lt::announce_entry> nativeTrackers = m_nativeHandle.trackers();
|
||||
|
||||
@@ -153,6 +153,7 @@ namespace BitTorrent
|
||||
bool hasMissingFiles() const override;
|
||||
bool hasError() const override;
|
||||
int queuePosition() const override;
|
||||
QVector<QString> trackerURLs() const override;
|
||||
QVector<TrackerEntry> trackers() const override;
|
||||
QVector<QUrl> urlSeeds() const override;
|
||||
QString error() const override;
|
||||
|
||||
@@ -50,8 +50,7 @@ public:
|
||||
{
|
||||
m_dataPtr->valid = true;
|
||||
m_dataPtr->nativeDigest = nativeDigest;
|
||||
const QByteArray raw = QByteArray::fromRawData(nativeDigest.data(), length());
|
||||
m_dataPtr->hashString = QString::fromLatin1(raw.toHex());
|
||||
m_dataPtr->hashString.clear(); // hashString is created on demand
|
||||
}
|
||||
|
||||
static constexpr int length()
|
||||
@@ -91,6 +90,12 @@ public:
|
||||
|
||||
QString toString() const
|
||||
{
|
||||
if (m_dataPtr->hashString.isEmpty())
|
||||
{
|
||||
const QByteArray raw = QByteArray::fromRawData(m_dataPtr->nativeDigest.data(), length());
|
||||
const_cast<Digest32 *>(this)->m_dataPtr->hashString = QString::fromLatin1(raw.toHex());
|
||||
}
|
||||
|
||||
return m_dataPtr->hashString;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user