From 9c0f9696edf5ecd9f5e4e414b3238404e030b618 Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Tue, 16 Oct 2018 17:32:06 +0200 Subject: [PATCH] Better beautifyInteger and beautifyFileSize. --- include/common/stringTools.h | 4 ++-- src/common/stringTools.cpp | 21 +++++++++++++-------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/include/common/stringTools.h b/include/common/stringTools.h index bd510e316..fb8c42b39 100644 --- a/include/common/stringTools.h +++ b/include/common/stringTools.h @@ -35,8 +35,8 @@ namespace kiwix { #ifndef __ANDROID__ -std::string beautifyInteger(const unsigned int number); -std::string beautifyFileSize(const unsigned int number); +std::string beautifyInteger(uint64_t number); +std::string beautifyFileSize(uint64_t number); void printStringInHexadecimal(const char* s); void printStringInHexadecimal(icu::UnicodeString s); void stringReplacement(std::string& str, diff --git a/src/common/stringTools.cpp b/src/common/stringTools.cpp index d702ed2b3..428733c29 100644 --- a/src/common/stringTools.cpp +++ b/src/common/stringTools.cpp @@ -60,7 +60,7 @@ std::string kiwix::removeAccents(const std::string& text) #ifndef __ANDROID__ /* Prepare integer for display */ -std::string kiwix::beautifyInteger(const unsigned int number) +std::string kiwix::beautifyInteger(uint64_t number) { std::stringstream numberStream; numberStream << number; @@ -75,14 +75,19 @@ std::string kiwix::beautifyInteger(const unsigned int number) return numberString; } -std::string kiwix::beautifyFileSize(const unsigned int number) +std::string kiwix::beautifyFileSize(uint64_t number) { - if (number > 1024 * 1024) { - return kiwix::beautifyInteger(number / (1024 * 1024)) + " GB"; - } else { - return kiwix::beautifyInteger(number / 1024 != 0 ? number / 1024 : 1) - + " MB"; - } + std::stringstream ss; + ss << std::fixed << std::setprecision(2); + if (number>>30) + ss << (number/(1024.0*1024*1024)) << " GB"; + else if (number>>20) + ss << (number/(1024.0*1024)) << " MB"; + else if (number>>10) + ss << (number/1024.0) << " KB"; + else + ss << number << " B"; + return ss.str(); } void kiwix::printStringInHexadecimal(icu::UnicodeString s)