mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-02-02 01:44:26 +00:00
BUGFIX: Disable ETA calculation when ETA column is hidden
This commit is contained in:
parent
b77e28fb12
commit
bb959ba465
@ -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
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -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…
x
Reference in New Issue
Block a user