From c4b7622a1795be3a5b5e0af782dd1c795419340a Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Sat, 24 Nov 2007 22:16:00 +0000 Subject: [PATCH] - Do not compute data for hidden columns in order to save CPU --- src/FinishedTorrents.cpp | 24 +++++++++++---- src/downloadingTorrents.cpp | 60 +++++++++++++++++++++++++++---------- 2 files changed, 63 insertions(+), 21 deletions(-) diff --git a/src/FinishedTorrents.cpp b/src/FinishedTorrents.cpp index 8c2374856..6c53fe396 100644 --- a/src/FinishedTorrents.cpp +++ b/src/FinishedTorrents.cpp @@ -240,7 +240,9 @@ void FinishedTorrents::updateFinishedList(){ Q_ASSERT(row != -1); if(h.is_paused()) continue; if(BTSession->getTorrentsToPauseAfterChecking().indexOf(hash) != -1) { - finishedListModel->setData(finishedListModel->index(row, F_PROGRESS), QVariant((double)h.progress())); + if(!finishedList->isColumnHidden(F_PROGRESS)) { + finishedListModel->setData(finishedListModel->index(row, F_PROGRESS), QVariant((double)h.progress())); + } continue; } if(h.state() == torrent_status::downloading || (h.state() != torrent_status::checking_files && h.state() != torrent_status::queued_for_checking && h.progress() < 1.)) { @@ -254,15 +256,25 @@ void FinishedTorrents::updateFinishedList(){ if(h.state() == torrent_status::checking_files){ finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/time.png"))), Qt::DecorationRole); setRowColor(row, QString::fromUtf8("grey")); - finishedListModel->setData(finishedListModel->index(row, F_PROGRESS), QVariant((double)h.progress())); + if(!finishedList->isColumnHidden(F_PROGRESS)) { + finishedListModel->setData(finishedListModel->index(row, F_PROGRESS), QVariant((double)h.progress())); + } continue; } setRowColor(row, QString::fromUtf8("orange")); finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png"))), Qt::DecorationRole); - finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)h.upload_payload_rate())); - finishedListModel->setData(finishedListModel->index(row, F_SEEDSLEECH), misc::toQString(h.num_peers() - h.num_seeds(), true)); - finishedListModel->setData(finishedListModel->index(row, F_RATIO), QVariant(misc::toQString(BTSession->getRealRatio(hash)))); - finishedListModel->setData(finishedListModel->index(row, F_PROGRESS), QVariant((double)1.)); + if(!finishedList->isColumnHidden(F_UPSPEED)) { + finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)h.upload_payload_rate())); + } + if(!finishedList->isColumnHidden(F_SEEDSLEECH)) { + finishedListModel->setData(finishedListModel->index(row, F_SEEDSLEECH), misc::toQString(h.num_peers() - h.num_seeds(), true)); + } + if(!finishedList->isColumnHidden(F_RATIO)) { + finishedListModel->setData(finishedListModel->index(row, F_RATIO), QVariant(misc::toQString(BTSession->getRealRatio(hash)))); + } + if(!finishedList->isColumnHidden(F_PROGRESS)) { + finishedListModel->setData(finishedListModel->index(row, F_PROGRESS), QVariant((double)1.)); + } } } diff --git a/src/downloadingTorrents.cpp b/src/downloadingTorrents.cpp index 178835a49..b87a9f595 100644 --- a/src/downloadingTorrents.cpp +++ b/src/downloadingTorrents.cpp @@ -545,7 +545,9 @@ void DownloadingTorrents::updateDlList() { // No need to update a paused torrent if(h.is_paused()) continue; if(BTSession->getTorrentsToPauseAfterChecking().indexOf(hash) != -1) { - DLListModel->setData(DLListModel->index(row, PROGRESS), QVariant((double)h.progress())); + if(!downloadList->isColumnHidden(PROGRESS)) { + DLListModel->setData(DLListModel->index(row, PROGRESS), QVariant((double)h.progress())); + } continue; } // Parse download state @@ -562,43 +564,71 @@ void DownloadingTorrents::updateDlList() { case torrent_status::queued_for_checking: DLListModel->setData(DLListModel->index(row, NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/time.png"))), Qt::DecorationRole); setRowColor(row, QString::fromUtf8("grey")); - DLListModel->setData(DLListModel->index(row, PROGRESS), QVariant((double)h.progress())); + if(!downloadList->isColumnHidden(PROGRESS)) { + DLListModel->setData(DLListModel->index(row, PROGRESS), QVariant((double)h.progress())); + } break; case torrent_status::connecting_to_tracker: if(h.download_payload_rate() > 0) { // Display "Downloading" status when connecting if download speed > 0 - DLListModel->setData(DLListModel->index(row, ETA), QVariant((qlonglong)BTSession->getETA(hash))); + if(!downloadList->isColumnHidden(ETA)) { + DLListModel->setData(DLListModel->index(row, ETA), QVariant((qlonglong)BTSession->getETA(hash))); + } DLListModel->setData(DLListModel->index(row, NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/downloading.png"))), Qt::DecorationRole); setRowColor(row, QString::fromUtf8("green")); }else{ - DLListModel->setData(DLListModel->index(row, ETA), QVariant((qlonglong)-1)); + if(!downloadList->isColumnHidden(ETA)) { + DLListModel->setData(DLListModel->index(row, ETA), QVariant((qlonglong)-1)); + } DLListModel->setData(DLListModel->index(row, NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/connecting.png"))), Qt::DecorationRole); setRowColor(row, QString::fromUtf8("grey")); } - DLListModel->setData(DLListModel->index(row, PROGRESS), QVariant((double)h.progress())); - DLListModel->setData(DLListModel->index(row, DLSPEED), QVariant((double)h.download_payload_rate())); - DLListModel->setData(DLListModel->index(row, UPSPEED), QVariant((double)h.upload_payload_rate())); + if(!downloadList->isColumnHidden(PROGRESS)) { + DLListModel->setData(DLListModel->index(row, PROGRESS), QVariant((double)h.progress())); + } + if(!downloadList->isColumnHidden(DLSPEED)) { + DLListModel->setData(DLListModel->index(row, DLSPEED), QVariant((double)h.download_payload_rate())); + } + if(!downloadList->isColumnHidden(UPSPEED)) { + DLListModel->setData(DLListModel->index(row, UPSPEED), QVariant((double)h.upload_payload_rate())); + } break; case torrent_status::downloading: case torrent_status::downloading_metadata: if(h.download_payload_rate() > 0) { DLListModel->setData(DLListModel->index(row, NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/downloading.png"))), Qt::DecorationRole); - DLListModel->setData(DLListModel->index(row, ETA), QVariant((qlonglong)BTSession->getETA(hash))); + if(!downloadList->isColumnHidden(ETA)) { + DLListModel->setData(DLListModel->index(row, ETA), QVariant((qlonglong)BTSession->getETA(hash))); + } setRowColor(row, QString::fromUtf8("green")); }else{ DLListModel->setData(DLListModel->index(row, NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/stalled.png"))), Qt::DecorationRole); - DLListModel->setData(DLListModel->index(row, ETA), QVariant((qlonglong)-1)); + if(!downloadList->isColumnHidden(ETA)) { + DLListModel->setData(DLListModel->index(row, ETA), QVariant((qlonglong)-1)); + } setRowColor(row, QPalette::WindowText); } - DLListModel->setData(DLListModel->index(row, PROGRESS), QVariant((double)h.progress())); - DLListModel->setData(DLListModel->index(row, DLSPEED), QVariant((double)h.download_payload_rate())); - DLListModel->setData(DLListModel->index(row, UPSPEED), QVariant((double)h.upload_payload_rate())); + if(!downloadList->isColumnHidden(PROGRESS)) { + DLListModel->setData(DLListModel->index(row, PROGRESS), QVariant((double)h.progress())); + } + if(!downloadList->isColumnHidden(DLSPEED)) { + DLListModel->setData(DLListModel->index(row, DLSPEED), QVariant((double)h.download_payload_rate())); + } + if(!downloadList->isColumnHidden(UPSPEED)) { + DLListModel->setData(DLListModel->index(row, UPSPEED), QVariant((double)h.upload_payload_rate())); + } break; default: - DLListModel->setData(DLListModel->index(row, ETA), QVariant((qlonglong)-1)); + if(!downloadList->isColumnHidden(ETA)) { + DLListModel->setData(DLListModel->index(row, ETA), QVariant((qlonglong)-1)); + } + } + if(!downloadList->isColumnHidden(SEEDSLEECH)) { + DLListModel->setData(DLListModel->index(row, SEEDSLEECH), QVariant(misc::toQString(h.num_seeds(), true)+QString::fromUtf8("/")+misc::toQString(h.num_peers() - h.num_seeds(), true))); + } + if(!downloadList->isColumnHidden(RATIO)) { + DLListModel->setData(DLListModel->index(row, RATIO), QVariant(misc::toQString(BTSession->getRealRatio(hash)))); } - DLListModel->setData(DLListModel->index(row, SEEDSLEECH), QVariant(misc::toQString(h.num_seeds(), true)+QString::fromUtf8("/")+misc::toQString(h.num_peers() - h.num_seeds(), true))); - DLListModel->setData(DLListModel->index(row, RATIO), QVariant(misc::toQString(BTSession->getRealRatio(hash)))); }catch(invalid_handle e) { continue; }