Merge pull request #4062 from glassez/speedup

Some TransferListWidget speedup.
This commit is contained in:
sledgehammer999
2015-11-13 11:14:43 -06:00
6 changed files with 37 additions and 41 deletions

View File

@@ -67,7 +67,7 @@ TorrentModel::TorrentModel(QObject *parent)
// Listen for torrent changes
connect(BitTorrent::Session::instance(), SIGNAL(torrentAdded(BitTorrent::TorrentHandle *const)), SLOT(addTorrent(BitTorrent::TorrentHandle *const)));
connect(BitTorrent::Session::instance(), SIGNAL(torrentAboutToBeRemoved(BitTorrent::TorrentHandle *const)), SLOT(handleTorrentAboutToBeRemoved(BitTorrent::TorrentHandle *const)));
connect(BitTorrent::Session::instance(), SIGNAL(torrentStatusUpdated(BitTorrent::TorrentHandle *const)), this, SLOT(handleTorrentStatusUpdated(BitTorrent::TorrentHandle *const)));
connect(BitTorrent::Session::instance(), SIGNAL(torrentsUpdated()), SLOT(handleTorrentsUpdated()));
connect(BitTorrent::Session::instance(), SIGNAL(torrentFinished(BitTorrent::TorrentHandle *const)), SLOT(handleTorrentStatusUpdated(BitTorrent::TorrentHandle *const)));
connect(BitTorrent::Session::instance(), SIGNAL(torrentMetadataLoaded(BitTorrent::TorrentHandle *const)), SLOT(handleTorrentStatusUpdated(BitTorrent::TorrentHandle *const)));
@@ -307,6 +307,11 @@ void TorrentModel::handleTorrentStatusUpdated(BitTorrent::TorrentHandle *const t
emit dataChanged(index(row, 0), index(row, columnCount() - 1));
}
void TorrentModel::handleTorrentsUpdated()
{
emit dataChanged(index(0, 0), index(rowCount() - 1, columnCount() - 1));
}
// Static functions
QIcon getIconByState(BitTorrent::TorrentState state)

View File

@@ -97,6 +97,7 @@ private slots:
void addTorrent(BitTorrent::TorrentHandle *const torrent);
void handleTorrentAboutToBeRemoved(BitTorrent::TorrentHandle *const torrent);
void handleTorrentStatusUpdated(BitTorrent::TorrentHandle *const torrent);
void handleTorrentsUpdated();
private:
QList<BitTorrent::TorrentHandle *> m_torrents;

View File

@@ -110,7 +110,7 @@ void FiltersBase::toggleFilter(bool checked)
StatusFiltersWidget::StatusFiltersWidget(QWidget *parent, TransferListWidget *transferList)
: FiltersBase(parent, transferList)
{
connect(BitTorrent::Session::instance(), SIGNAL(torrentsUpdated(const BitTorrent::TorrentStatusReport &)), SLOT(updateTorrentNumbers(const BitTorrent::TorrentStatusReport &)));
connect(BitTorrent::Session::instance(), SIGNAL(torrentsUpdated()), SLOT(updateTorrentNumbers()));
// Add status filters
QListWidgetItem *all = new QListWidgetItem(this);
@@ -148,8 +148,10 @@ StatusFiltersWidget::~StatusFiltersWidget()
Preferences::instance()->setTransSelFilter(currentRow());
}
void StatusFiltersWidget::updateTorrentNumbers(const BitTorrent::TorrentStatusReport &report)
void StatusFiltersWidget::updateTorrentNumbers()
{
auto report = BitTorrent::Session::instance()->torrentStatusReport();
item(TorrentFilter::All)->setData(Qt::DisplayRole, QVariant(tr("All (%1)").arg(report.nbActive + report.nbInactive)));
item(TorrentFilter::Downloading)->setData(Qt::DisplayRole, QVariant(tr("Downloading (%1)").arg(report.nbDownloading)));
item(TorrentFilter::Seeding)->setData(Qt::DisplayRole, QVariant(tr("Seeding (%1)").arg(report.nbSeeding)));

View File

@@ -45,7 +45,6 @@ namespace BitTorrent
{
class TorrentHandle;
class TrackerEntry;
struct TorrentStatusReport;
}
class FiltersBase: public QListWidget
@@ -80,7 +79,7 @@ public:
~StatusFiltersWidget();
private slots:
void updateTorrentNumbers(const BitTorrent::TorrentStatusReport &report);
void updateTorrentNumbers();
private:
// These 4 methods are virtual slots in the base class.