Update torrent status filter counters consistently

PR #17097.
Closes #15981.
Closes #16490.
This commit is contained in:
Vladimir Golovnev 2022-05-26 19:55:00 +03:00 committed by GitHub
parent 2c9e1d942b
commit 4f62900cd3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 19 deletions

View file

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

View file

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