From dba7333befca8108eabcf61fd7073fb98d316096 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 5 Jan 2017 10:16:07 +0100 Subject: [PATCH] Timeline: Use the 'g' format for timestamp formatting This has the nice property of dropping trailing zeroes and allows us to simplify the code a bit. Change-Id: I4ac98743960ba552c8e3e72e02f594ba910ab81b Reviewed-by: Christian Kandeler --- src/libs/timeline/timelineformattime.cpp | 25 +++++------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/src/libs/timeline/timelineformattime.cpp b/src/libs/timeline/timelineformattime.cpp index 47f59d881c5..54f12d90dd8 100644 --- a/src/libs/timeline/timelineformattime.cpp +++ b/src/libs/timeline/timelineformattime.cpp @@ -35,19 +35,9 @@ QString formatTime(qint64 timestamp, qint64 reference) static const double minute = 60; static const double hour = 60; - int round = 0; + int round = 1; qint64 barrier = 1; - auto roundTo3 = [](double time, int round) { - // always show at least 3 significant digits - if (time < 10 && round < 2) - return 2; - else if (time < 100 && round < 1) - return 1; - else - return round; - }; - for (uint i = 0, end = sizeof(decimalUnits) / sizeof(char *); i < end; ++i) { const double dividend = barrier; if (reference < barrier) { @@ -66,32 +56,27 @@ QString formatTime(qint64 timestamp, qint64 reference) } } if (timestamp < barrier) { - double time = timestamp; - if (dividend > 1) { - time /= dividend; - round = roundTo3(time, round); - } - return QString::number(time, 'f', round) + return QString::number(timestamp / dividend, 'g', qMax(round, 3)) + QString::fromLatin1(decimalUnits[i]); } } double seconds = timestamp / second; if (seconds < minute) { - return QString::number(seconds, 'f', roundTo3(seconds, round)) + "s"; + return QString::number(seconds, 'g', qMax(round, 3)) + "s"; } else { int minutes = seconds / minute; seconds -= minutes * minute; if (minutes < hour) { return QString::fromLatin1("%1m %2s").arg(QString::number(minutes), - QString::number(seconds, 'f', round)); + QString::number(seconds, 'g', round)); } else { int hours = minutes / hour; minutes -= hours * hour; if (reference < barrier * minute) { return QString::fromLatin1("%1h %2m %3s").arg(QString::number(hours), QString::number(minutes), - QString::number(seconds, 'f', round)); + QString::number(seconds, 'g', round)); } else { return QString::fromLatin1("%1h %2m").arg(QString::number(hours), QString::number(minutes));