Browse Source

BUGFIX: Disable ETA calculation when ETA column is hidden

adaptive-webui-19844
Christophe Dumez 16 years ago
parent
commit
bb959ba465
  1. 1
      Changelog
  2. 57
      src/bittorrent.cpp
  3. 2
      src/bittorrent.h
  4. 8
      src/downloadingTorrents.cpp

1
Changelog

@ -3,6 +3,7 @@
- FEATURE: DHT is always ON (no longer used as fallback) - FEATURE: DHT is always ON (no longer used as fallback)
- FEATURE: The number of DHT nodes is displayed - FEATURE: The number of DHT nodes is displayed
- FEATURE: RSS can now be disabled from program preferences - FEATURE: RSS can now be disabled from program preferences
- BUGFIX: Disable ETA calculation when ETA column is hidden
- COSMETIC: Transfer speed, ratio and DHT nodes are displayed in status bar - COSMETIC: Transfer speed, ratio and DHT nodes are displayed in status bar
- COSMETIC: RSS Tab is now hidden as a default - COSMETIC: RSS Tab is now hidden as a default

57
src/bittorrent.cpp

@ -43,7 +43,7 @@
#define MAX_TRACKER_ERRORS 2 #define MAX_TRACKER_ERRORS 2
// Main constructor // Main constructor
bittorrent::bittorrent() : timerScan(0), DHTEnabled(false), preAllocateAll(false), addInPause(false), maxConnecsPerTorrent(500), maxUploadsPerTorrent(4), max_ratio(-1), UPnPEnabled(false), NATPMPEnabled(false), LSDEnabled(false), folderScanInterval(5), queueingEnabled(false) { bittorrent::bittorrent() : timerScan(0), DHTEnabled(false), preAllocateAll(false), addInPause(false), maxConnecsPerTorrent(500), maxUploadsPerTorrent(4), max_ratio(-1), UPnPEnabled(false), NATPMPEnabled(false), LSDEnabled(false), folderScanInterval(5), queueingEnabled(false), calculateETA(true) {
// To avoid some exceptions // To avoid some exceptions
fs::path::default_name_check(fs::no_check); fs::path::default_name_check(fs::no_check);
// Creating bittorrent session // Creating bittorrent session
@ -154,6 +154,24 @@ void bittorrent::deleteBigRatios() {
} }
} }
void bittorrent::setETACalculation(bool enable) {
if(calculateETA != enable) {
calculateETA = enable;
if(calculateETA) {
foreach(QString hash, unfinishedTorrents) {
QTorrentHandle h = getTorrentHandle(hash);
if(!h.is_paused()) {
TorrentsStartData[hash] = h.total_payload_download();
TorrentsStartTime[hash] = QDateTime::currentDateTime();
}
}
} else {
TorrentsStartData.clear();
TorrentsStartTime.clear();
}
}
}
void bittorrent::setDownloadLimit(QString hash, long val) { void bittorrent::setDownloadLimit(QString hash, long val) {
QTorrentHandle h = getTorrentHandle(hash); QTorrentHandle h = getTorrentHandle(hash);
if(h.is_valid()) if(h.is_valid())
@ -505,6 +523,7 @@ void bittorrent::updateDownloadQueue() {
// Calculate the ETA using GASA // Calculate the ETA using GASA
// GASA: global Average Speed Algorithm // GASA: global Average Speed Algorithm
qlonglong bittorrent::getETA(QString hash) const { qlonglong bittorrent::getETA(QString hash) const {
Q_ASSERT(calculateETA);
QTorrentHandle h = getTorrentHandle(hash); QTorrentHandle h = getTorrentHandle(hash);
if(!h.is_valid()) return -1; if(!h.is_valid()) return -1;
switch(h.state()) { switch(h.state()) {
@ -597,8 +616,10 @@ void bittorrent::deleteTorrent(QString hash, bool permanent) {
torrentBackup.remove(file); torrentBackup.remove(file);
} }
// Remove it from TorrentsStartTime hash table // Remove it from TorrentsStartTime hash table
TorrentsStartTime.remove(hash); if(calculateETA) {
TorrentsStartData.remove(hash); TorrentsStartTime.remove(hash);
TorrentsStartData.remove(hash);
}
// Remove tracker errors // Remove tracker errors
trackersErrors.remove(hash); trackersErrors.remove(hash);
// Remove it from ratio table // Remove it from ratio table
@ -665,8 +686,10 @@ void bittorrent::setUnfinishedTorrent(QString hash) {
if(!unfinishedTorrents.contains(hash)) { if(!unfinishedTorrents.contains(hash)) {
unfinishedTorrents << hash; unfinishedTorrents << hash;
QTorrentHandle h = getTorrentHandle(hash); QTorrentHandle h = getTorrentHandle(hash);
TorrentsStartData[hash] = h.total_payload_download(); if(calculateETA) {
TorrentsStartTime[hash] = QDateTime::currentDateTime(); TorrentsStartData[hash] = h.total_payload_download();
TorrentsStartTime[hash] = QDateTime::currentDateTime();
}
} }
if(queueingEnabled) { if(queueingEnabled) {
// Remove it from uploadQueue // Remove it from uploadQueue
@ -703,8 +726,10 @@ void bittorrent::setFinishedTorrent(QString hash) {
unfinishedTorrents.removeAt(index); unfinishedTorrents.removeAt(index);
} }
// Remove it from TorrentsStartTime hash table // Remove it from TorrentsStartTime hash table
TorrentsStartTime.remove(hash); if(calculateETA) {
TorrentsStartData.remove(hash); TorrentsStartTime.remove(hash);
TorrentsStartData.remove(hash);
}
// Remove it from // Remove it from
if(queueingEnabled) { if(queueingEnabled) {
downloadQueue->removeAll(hash); downloadQueue->removeAll(hash);
@ -761,8 +786,10 @@ bool bittorrent::pauseTorrent(QString hash) {
paused_file.close(); paused_file.close();
} }
// Remove it from TorrentsStartTime hash table // Remove it from TorrentsStartTime hash table
TorrentsStartTime.remove(hash); if(calculateETA) {
TorrentsStartData.remove(hash); TorrentsStartTime.remove(hash);
TorrentsStartData.remove(hash);
}
return change; return change;
} }
@ -773,8 +800,10 @@ bool bittorrent::resumeTorrent(QString hash) {
if(h.is_valid() && h.is_paused()) { if(h.is_valid() && h.is_paused()) {
if(!(queueingEnabled && (isDownloadQueued(hash)||isUploadQueued(hash)))) { if(!(queueingEnabled && (isDownloadQueued(hash)||isUploadQueued(hash)))) {
// Save Addition DateTime // Save Addition DateTime
TorrentsStartData[hash] = h.total_payload_download(); if(calculateETA) {
TorrentsStartTime[hash] = QDateTime::currentDateTime(); TorrentsStartData[hash] = h.total_payload_download();
TorrentsStartTime[hash] = QDateTime::currentDateTime();
}
h.resume(); h.resume();
success = true; success = true;
emit resumedTorrent(hash); emit resumedTorrent(hash);
@ -1702,8 +1731,10 @@ void bittorrent::readAlerts() {
qDebug("%s was paused after checking", hash.toUtf8().data()); qDebug("%s was paused after checking", hash.toUtf8().data());
} else { } else {
// Save Addition DateTime // Save Addition DateTime
TorrentsStartTime[hash] = QDateTime::currentDateTime(); if(calculateETA) {
TorrentsStartData[hash] = h.total_payload_download(); TorrentsStartTime[hash] = QDateTime::currentDateTime();
TorrentsStartData[hash] = h.total_payload_download();
}
} }
emit torrentFinishedChecking(hash); emit torrentFinishedChecking(hash);
} }

2
src/bittorrent.h

@ -78,6 +78,7 @@ class bittorrent : public QObject{
QStringList *queuedDownloads; QStringList *queuedDownloads;
QStringList *uploadQueue; QStringList *uploadQueue;
QStringList *queuedUploads; QStringList *queuedUploads;
bool calculateETA;
protected: protected:
QString getSavePath(QString hash); QString getSavePath(QString hash);
@ -175,6 +176,7 @@ class bittorrent : public QObject{
void setTimerScanInterval(int secs); void setTimerScanInterval(int secs);
void setMaxActiveDownloads(int val); void setMaxActiveDownloads(int val);
void setMaxActiveTorrents(int val); void setMaxActiveTorrents(int val);
void setETACalculation(bool enable);
protected slots: protected slots:
void scanDirectory(); void scanDirectory();

8
src/downloadingTorrents.cpp

@ -364,11 +364,19 @@ void DownloadingTorrents::hideOrShowColumn(int index) {
downloadList->setColumnHidden(index, true); downloadList->setColumnHidden(index, true);
getActionHoSCol(index)->setIcon(QIcon(QString::fromUtf8(":/Icons/button_cancel.png"))); getActionHoSCol(index)->setIcon(QIcon(QString::fromUtf8(":/Icons/button_cancel.png")));
--nbVisibleColumns; --nbVisibleColumns;
if(index == ETA) {
BTSession->setETACalculation(false);
qDebug("Disable ETA calculation");
}
} else { } else {
// User want to display the column // User want to display the column
downloadList->setColumnHidden(index, false); downloadList->setColumnHidden(index, false);
getActionHoSCol(index)->setIcon(QIcon(QString::fromUtf8(":/Icons/button_ok.png"))); getActionHoSCol(index)->setIcon(QIcon(QString::fromUtf8(":/Icons/button_ok.png")));
++nbVisibleColumns; ++nbVisibleColumns;
if(index == ETA) {
BTSession->setETACalculation(true);
qDebug("Enable ETA calculation");
}
} }
//resize all others non-hidden columns //resize all others non-hidden columns
for(unsigned int i=0; i<nbCols; ++i) { for(unsigned int i=0; i<nbCols; ++i) {

Loading…
Cancel
Save