diff --git a/src/base/bittorrent/torrent.h b/src/base/bittorrent/torrent.h index aaa548d70..526255b88 100644 --- a/src/base/bittorrent/torrent.h +++ b/src/base/bittorrent/torrent.h @@ -217,6 +217,7 @@ namespace BitTorrent virtual bool hasMissingFiles() const = 0; virtual bool hasError() const = 0; virtual int queuePosition() const = 0; + virtual QVector trackerURLs() const = 0; virtual QVector trackers() const = 0; virtual QVector urlSeeds() const = 0; virtual QString error() const = 0; diff --git a/src/base/bittorrent/torrentimpl.cpp b/src/base/bittorrent/torrentimpl.cpp index 030c87f21..f0330d7f1 100644 --- a/src/base/bittorrent/torrentimpl.cpp +++ b/src/base/bittorrent/torrentimpl.cpp @@ -517,6 +517,22 @@ void TorrentImpl::setAutoManaged(const bool enable) m_nativeHandle.unset_flags(lt::torrent_flags::auto_managed); } +QVector TorrentImpl::trackerURLs() const +{ + const std::vector nativeTrackers = m_nativeHandle.trackers(); + + QVector urls; + urls.reserve(static_cast(nativeTrackers.size())); + + for (const lt::announce_entry &tracker : nativeTrackers) + { + const QString trackerURL = QString::fromStdString(tracker.url); + urls.push_back(trackerURL); + } + + return urls; +} + QVector TorrentImpl::trackers() const { const std::vector nativeTrackers = m_nativeHandle.trackers(); diff --git a/src/base/bittorrent/torrentimpl.h b/src/base/bittorrent/torrentimpl.h index a83e144e3..0fee0d8e1 100644 --- a/src/base/bittorrent/torrentimpl.h +++ b/src/base/bittorrent/torrentimpl.h @@ -153,6 +153,7 @@ namespace BitTorrent bool hasMissingFiles() const override; bool hasError() const override; int queuePosition() const override; + QVector trackerURLs() const override; QVector trackers() const override; QVector urlSeeds() const override; QString error() const override; diff --git a/src/gui/transferlistfilterswidget.cpp b/src/gui/transferlistfilterswidget.cpp index 05268a20e..9f154c51e 100644 --- a/src/gui/transferlistfilterswidget.cpp +++ b/src/gui/transferlistfilterswidget.cpp @@ -630,12 +630,12 @@ void TrackerFiltersList::applyFilter(const int row) void TrackerFiltersList::handleNewTorrent(BitTorrent::Torrent *const torrent) { const BitTorrent::TorrentID torrentID {torrent->id()}; - const QVector trackers {torrent->trackers()}; - for (const BitTorrent::TrackerEntry &tracker : trackers) - addItem(tracker.url, torrentID); + const QVector trackerURLs {torrent->trackerURLs()}; + for (const QString &trackerURL : trackerURLs) + addItem(trackerURL, torrentID); // Check for trackerless torrent - if (trackers.isEmpty()) + if (trackerURLs.isEmpty()) addItem(NULL_HOST, torrentID); item(ALL_ROW)->setText(tr("All (%1)", "this is for the tracker filter").arg(++m_totalTorrents)); @@ -644,12 +644,12 @@ void TrackerFiltersList::handleNewTorrent(BitTorrent::Torrent *const torrent) void TrackerFiltersList::torrentAboutToBeDeleted(BitTorrent::Torrent *const torrent) { const BitTorrent::TorrentID torrentID {torrent->id()}; - const QVector trackers {torrent->trackers()}; - for (const BitTorrent::TrackerEntry &tracker : trackers) - removeItem(tracker.url, torrentID); + const QVector trackerURLs {torrent->trackerURLs()}; + for (const QString &trackerURL : trackerURLs) + removeItem(trackerURL, torrentID); // Check for trackerless torrent - if (trackers.isEmpty()) + if (trackerURLs.isEmpty()) removeItem(NULL_HOST, torrentID); item(ALL_ROW)->setText(tr("All (%1)", "this is for the tracker filter").arg(--m_totalTorrents));