From 265a8cada86395c8f90008c14efc82762456f30a Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Fri, 19 Oct 2007 20:38:00 +0000 Subject: [PATCH] - Fixed ETA display --- TODO | 1 + src/misc.h | 47 +++++++++++++++++++---------------------------- 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/TODO b/TODO index bf4008ddf..f31c83df2 100644 --- a/TODO +++ b/TODO @@ -64,4 +64,5 @@ rc5->rc6 changelog: - BUGFIX: Fixed folders progress calculation in torrent properties - BUGFIX: Fixed deletion of subfolders when deleting torrents from hard drive - BUGFIX: Remember scan directory in program preferences now +- BUGFIX: Fixed ETA display (sometimes displayed < 1min for no reason) - I18N: Fixed swedish, French, Spanish translations \ No newline at end of file diff --git a/src/misc.h b/src/misc.h index 84da99f7e..efe3c8c7e 100644 --- a/src/misc.h +++ b/src/misc.h @@ -298,37 +298,28 @@ class misc : public QObject{ // Take a number of seconds and return an user-friendly // time duration like "1d 2h 10m". - static QString userFriendlyDuration(qlonglong seconds) { - if(seconds < 0 or seconds > 8640000) { - // We display unkown if seconds > 100 days + static QString userFriendlyDuration(const long int seconds) { + if(seconds < 0) { return tr("Unknown"); } - int level = 0; - int days = int(seconds / 86400.); - if(!days) - level = 1; - else - seconds -= days * 86400; - int hours = int(seconds / 3600.); - if(!hours) - level = 2; - else - seconds -= hours * 3600; - int minutes = int(seconds / 60.0); - if(!minutes) - level = 3; - else - seconds -= minutes * 60; - switch(level){ - case 3: - return tr("< 1m", "< 1 minute"); - case 2: - return tr("%1m","e.g: 10minutes").arg(QString::QString::fromUtf8(misc::toString(minutes).c_str())); - case 1: - return tr("%1h%2m", "e.g: 3hours 5minutes").arg(QString::fromUtf8(misc::toString(hours).c_str())).arg(QString::fromUtf8(misc::toString(minutes).c_str())); - default: - return tr("%1d%2h%3m", "e.g: 2days 10hours 2minutes").arg(QString::fromUtf8(misc::toString(days).c_str())).arg(QString::fromUtf8(misc::toString(hours).c_str())).arg(QString::fromUtf8(misc::toString(minutes).c_str())); + if(seconds < 60) { + return tr("< 1m", "< 1 minute"); } + int minutes = seconds / 60; + if(minutes < 60) { + return tr("%1m","e.g: 10minutes").arg(QString::QString::fromUtf8(misc::toString(minutes).c_str())); + } + int hours = minutes / 60; + minutes = minutes - hours*60; + if(hours < 24) { + return tr("%1h%2m", "e.g: 3hours 5minutes").arg(QString::fromUtf8(misc::toString(hours).c_str())).arg(QString::fromUtf8(misc::toString(minutes).c_str())); + } + int days = hours / 24; + hours = hours - days * 24; + if(days < 100) { + return tr("%1d%2h%3m", "e.g: 2days 10hours 2minutes").arg(QString::fromUtf8(misc::toString(days).c_str())).arg(QString::fromUtf8(misc::toString(hours).c_str())).arg(QString::fromUtf8(misc::toString(minutes).c_str())); + } + return tr("Unknown"); } };