From 4f62900cd300fd923ca8dfc4eb54f34d53d821ab Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Thu, 26 May 2022 19:55:00 +0300 Subject: [PATCH] Update torrent status filter counters consistently PR #17097. Closes #15981. Closes #16490. --- src/base/torrentfilter.cpp | 3 +-- src/gui/transferlistfilterswidget.cpp | 30 ++++++++++++--------------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/base/torrentfilter.cpp b/src/base/torrentfilter.cpp index 0e1bf5e1c..92d90fe92 100644 --- a/src/base/torrentfilter.cpp +++ b/src/base/torrentfilter.cpp @@ -157,6 +157,7 @@ bool TorrentFilter::matchState(const BitTorrent::Torrent *const torrent) const switch (m_type) { case All: + default: return true; case Downloading: return torrent->isDownloading(); @@ -185,8 +186,6 @@ bool TorrentFilter::matchState(const BitTorrent::Torrent *const torrent) const || (torrent->state() == BitTorrent::TorrentState::CheckingResumeData); case Errored: return torrent->isErrored(); - default: // All - return true; } } diff --git a/src/gui/transferlistfilterswidget.cpp b/src/gui/transferlistfilterswidget.cpp index 65f6ba1db..a7956eca9 100644 --- a/src/gui/transferlistfilterswidget.cpp +++ b/src/gui/transferlistfilterswidget.cpp @@ -241,9 +241,10 @@ void StatusFilterWidget::updateTorrentStatus(const BitTorrent::Torrent *torrent) { TorrentFilterBitset &torrentStatus = m_torrentsStatus[torrent]; - const auto update = [&torrentStatus](const TorrentFilter::Type status, const bool needStatus, int &counter) + const auto update = [torrent, &torrentStatus](const TorrentFilter::Type status, int &counter) { const bool hasStatus = torrentStatus[status]; + const bool needStatus = TorrentFilter(status).match(torrent); if (needStatus && !hasStatus) { ++counter; @@ -256,22 +257,17 @@ void StatusFilterWidget::updateTorrentStatus(const BitTorrent::Torrent *torrent) } }; - update(TorrentFilter::Downloading, torrent->isDownloading(), m_nbDownloading); - update(TorrentFilter::Seeding, torrent->isUploading(), m_nbSeeding); - update(TorrentFilter::Completed, torrent->isCompleted(), m_nbCompleted); - update(TorrentFilter::Resumed, torrent->isResumed(), m_nbResumed); - update(TorrentFilter::Paused, torrent->isPaused(), m_nbPaused); - update(TorrentFilter::Active, torrent->isActive(), m_nbActive); - update(TorrentFilter::Inactive, torrent->isInactive(), m_nbInactive); - - const bool isStalledUploading = (torrent->state() == BitTorrent::TorrentState::StalledUploading); - update(TorrentFilter::StalledUploading, isStalledUploading, m_nbStalledUploading); - - const bool isStalledDownloading = (torrent->state() == BitTorrent::TorrentState::StalledDownloading); - update(TorrentFilter::StalledDownloading, isStalledDownloading, m_nbStalledDownloading); - - update(TorrentFilter::Checking, torrent->isChecking(), m_nbChecking); - update(TorrentFilter::Errored, torrent->isErrored(), m_nbErrored); + update(TorrentFilter::Downloading, m_nbDownloading); + update(TorrentFilter::Seeding, m_nbSeeding); + update(TorrentFilter::Completed, m_nbCompleted); + update(TorrentFilter::Resumed, m_nbResumed); + update(TorrentFilter::Paused, m_nbPaused); + update(TorrentFilter::Active, m_nbActive); + update(TorrentFilter::Inactive, m_nbInactive); + update(TorrentFilter::StalledUploading, m_nbStalledUploading); + update(TorrentFilter::StalledDownloading, m_nbStalledDownloading); + update(TorrentFilter::Checking, m_nbChecking); + update(TorrentFilter::Errored, m_nbErrored); m_nbStalled = m_nbStalledUploading + m_nbStalledDownloading; }