diff options
-rw-r--r-- | common/util.cpp | 39 | ||||
-rw-r--r-- | common/util.h | 12 | ||||
-rw-r--r-- | gui/downloaddialog.cpp | 38 | ||||
-rw-r--r-- | gui/options.cpp | 5 |
4 files changed, 56 insertions, 38 deletions
diff --git a/common/util.cpp b/common/util.cpp index 9a4214eda8..7c309ce364 100644 --- a/common/util.cpp +++ b/common/util.cpp @@ -163,4 +163,43 @@ bool isGraph(int c) { return isgraph((byte)c); } + +#pragma mark - + + +Common::String getHumanReadableBytes(uint64 bytes, Common::String &unitsOut) { + Common::String result = Common::String::format("%lu", bytes); + unitsOut = "B"; + + if (bytes >= 1024) { + bytes /= 1024; + result = Common::String::format("%lu", bytes); + unitsOut = "KB"; + } + + double floating = bytes; + + if (bytes >= 1024) { + bytes /= 1024; + floating /= 1024.0; + unitsOut = "MB"; + } + + if (bytes >= 1024) { + bytes /= 1024; + floating /= 1024.0; + unitsOut = "GB"; + } + + if (bytes >= 1024) { // woah + bytes /= 1024; + floating /= 1024.0; + unitsOut = "TB"; + } + + // print one digit after floating point + result = Common::String::format("%.1f", floating); + return result; +} + } // End of namespace Common diff --git a/common/util.h b/common/util.h index a90ea72167..8254e972d0 100644 --- a/common/util.h +++ b/common/util.h @@ -220,6 +220,18 @@ bool isCntrl(int c); */ bool isGraph(int c); + +/** + * Represent bytes size of a file as a number with floating point and + * largest suitable units. For example, 1474560 bytes as 1.4 MB. + * + * @param bytes size in bytes to be represented + * @param unitsOut (out-parameter) string with units + * @note use _() to translate units correctly + * @return string with a floating point number representing given size + */ +Common::String getHumanReadableBytes(uint64 bytes, Common::String &unitsOut); + } // End of namespace Common #endif diff --git a/gui/downloaddialog.cpp b/gui/downloaddialog.cpp index 526a89538f..8b7408c8cd 100644 --- a/gui/downloaddialog.cpp +++ b/gui/downloaddialog.cpp @@ -24,6 +24,7 @@ #include "backends/cloud/cloudmanager.h" #include "common/config-manager.h" #include "common/translation.h" +#include "common/util.h" #include "engines/metaengine.h" #include "gui/browser.h" #include "gui/chooser.h" @@ -207,43 +208,6 @@ void DownloadDialog::reflowLayout() { refreshWidgets(); } -namespace { -Common::String getHumanReadableBytes(uint64 bytes, Common::String &unitsOut) { - Common::String result = Common::String::format("%lu", bytes); - unitsOut = "B"; - - if (bytes >= 1024) { - bytes /= 1024; - result = Common::String::format("%lu", bytes); - unitsOut = "KB"; - } - - double floating = bytes; - - if (bytes >= 1024) { - bytes /= 1024; - floating /= 1024.0; - unitsOut = "MB"; - } - - if (bytes >= 1024) { - bytes /= 1024; - floating /= 1024.0; - unitsOut = "GB"; - } - - if (bytes >= 1024) { // woah - bytes /= 1024; - floating /= 1024.0; - unitsOut = "TB"; - } - - // print one digit after floating point - result = Common::String::format("%.1f", floating); - return result; -} -} - Common::String DownloadDialog::getSizeLabelText() { Common::String downloaded, downloadedUnits, total, totalUnits; downloaded = getHumanReadableBytes(CloudMan.getDownloadBytesNumber(), downloadedUnits); diff --git a/gui/options.cpp b/gui/options.cpp index 8d2bda5af0..5d90b70813 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -38,6 +38,7 @@ #include "common/textconsole.h" #include "common/translation.h" #include "common/updates.h" +#include "common/util.h" #include "audio/mididrv.h" #include "audio/musicplugin.h" @@ -2340,7 +2341,9 @@ void GlobalOptionsDialog::setupCloudTab() { if (_storageUsedSpaceDesc) _storageUsedSpaceDesc->setVisible(shown); if (_storageUsedSpace) { uint64 usedSpace = CloudMan.getStorageUsedSpace(_selectedStorageIndex); - _storageUsedSpace->setLabel(Common::String::format(_("%llu bytes"), usedSpace)); + Common::String usedSpaceNumber, usedSpaceUnits; + usedSpaceNumber = Common::getHumanReadableBytes(usedSpace, usedSpaceUnits); + _storageUsedSpace->setLabel(Common::String::format("%s %s", usedSpaceNumber.c_str(), _(usedSpaceUnits.c_str()))); _storageUsedSpace->setVisible(shown); } if (_storageLastSyncDesc) _storageLastSyncDesc->setVisible(shown); |