diff --git a/src/base/unicodestrings.h b/src/base/unicodestrings.h index 708ca4736..33e164ddb 100644 --- a/src/base/unicodestrings.h +++ b/src/base/unicodestrings.h @@ -35,6 +35,7 @@ // we put all problematic UTF-8 chars/strings in this file. // See issue #3059 for more details (https://github.com/qbittorrent/qBittorrent/issues/3059). const char C_INFINITY[] = "∞"; +const char C_NON_BREAKING_SPACE[] = " "; const char C_UP[] = "▲"; const char C_DOWN[] = "▼"; const char C_COPYRIGHT[] = "©"; diff --git a/src/base/utils/misc.cpp b/src/base/utils/misc.cpp index 611658a03..038ac6723 100644 --- a/src/base/utils/misc.cpp +++ b/src/base/utils/misc.cpp @@ -358,14 +358,22 @@ QString Utils::Misc::friendlyUnit(qint64 bytesValue, bool isSpeed) return QCoreApplication::translate("misc", "Unknown", "Unknown (size)"); QString ret; if (unit == SizeUnit::Byte) - ret = QString::number(bytesValue) + " " + unitString(unit); + ret = QString::number(bytesValue) + QString::fromUtf8(C_NON_BREAKING_SPACE) + unitString(unit); else - ret = Utils::String::fromDouble(friendlyVal, 1) + " " + unitString(unit); + ret = Utils::String::fromDouble(friendlyVal, friendlyUnitPrecision(unit)) + QString::fromUtf8(C_NON_BREAKING_SPACE) + unitString(unit); if (isSpeed) ret += QCoreApplication::translate("misc", "/s", "per second"); return ret; } +int Utils::Misc::friendlyUnitPrecision(SizeUnit unit) +{ + // friendlyUnit's number of digits after the decimal point + if (unit <= SizeUnit::MebiByte) return 1; + else if (unit == SizeUnit::GibiByte) return 2; + else return 3; +} + qlonglong Utils::Misc::sizeInBytes(qreal size, Utils::Misc::SizeUnit unit) { for (int i = 0; i < static_cast(unit); ++i) diff --git a/src/base/utils/misc.h b/src/base/utils/misc.h index c0641cd2b..3129e0564 100644 --- a/src/base/utils/misc.h +++ b/src/base/utils/misc.h @@ -83,6 +83,7 @@ namespace Utils // value must be given in bytes bool friendlyUnit(qint64 sizeInBytes, qreal& val, SizeUnit& unit); QString friendlyUnit(qint64 bytesValue, bool isSpeed = false); + int friendlyUnitPrecision(SizeUnit unit); qint64 sizeInBytes(qreal size, SizeUnit unit); bool isPreviewable(const QString& extension);