Merge pull request #16587 from jagannatharjun/tracker-filter

Optimize torrent filters in GUI
This commit is contained in:
Chocobo1
2022-03-12 12:48:49 +08:00
committed by GitHub
8 changed files with 217 additions and 88 deletions

View File

@@ -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 &params)
{
// `source`: .torrent file path/url or magnet uri

View File

@@ -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;

View File

@@ -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;

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;
}