Properly handle 0 seconds in secondsToString()
authorMichael Marley <michael@michaelmarley.com>
Sat, 2 Jul 2016 14:20:58 +0000 (10:20 -0400)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 28 Feb 2018 22:23:48 +0000 (23:23 +0100)
Previously if 0 seconds was passed in, an empty string would be
returned.  Instead, "0 sec" should be returned.

Resolves GH-223.

(cherry picked from commit 757dc75aada1e4c5077cf46969f6422bffa08ce3)

src/common/util.cpp

index a6acf58..a3d4fc4 100644 (file)
@@ -172,15 +172,20 @@ QString secondsToString(int timeInSeconds)
     timeUnit.append(qMakePair(60, QCoreApplication::translate("Quassel::secondsToString()", "min")));
     timeUnit.append(qMakePair(1, QCoreApplication::translate("Quassel::secondsToString()", "sec")));
 
-    QStringList returnString;
-    for (int i = 0; i < timeUnit.size(); i++) {
-        int n = timeInSeconds / timeUnit[i].first;
-        if (n > 0) {
-            returnString += QString("%1 %2").arg(QString::number(n), timeUnit[i].second);
+    if (timeInSeconds != 0) {
+        QStringList returnString;
+        for (int i = 0; i < timeUnit.size(); i++) {
+            int n = timeInSeconds / timeUnit[i].first;
+            if (n > 0) {
+                returnString += QString("%1 %2").arg(QString::number(n), timeUnit[i].second);
+            }
+            timeInSeconds = timeInSeconds % timeUnit[i].first;
         }
-        timeInSeconds = timeInSeconds % timeUnit[i].first;
+        return returnString.join(", ");
+    }
+    else {
+        return QString("%1 %2").arg(QString::number(timeInSeconds), timeUnit.last().second);
     }
-    return returnString.join(", ");
 }