From 08c8afc8f045f92ea4ec20d93fb4f51a70b3bc87 Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Mon, 9 Apr 2012 23:53:46 +0200 Subject: [PATCH] Add a Tools class with a humanReadableFileSize() method. --- src/core/Tools.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/core/Tools.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/core/Tools.cpp create mode 100644 src/core/Tools.h diff --git a/src/core/Tools.cpp b/src/core/Tools.cpp new file mode 100644 index 000000000..263e557fb --- /dev/null +++ b/src/core/Tools.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2012 Felix Geyer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "Tools.h" + +#include +#include + +QString Tools::humanReadableFileSize(qint64 bytes) +{ + double size = bytes; + + QStringList units = QStringList() << "B" << "KiB" << "MiB" << "GiB"; + int i = 0; + int maxI = units.size() - 1; + + while ((size >= 1024) && (i < maxI)) { + size /= 1024; + i++; + } + + return QString("%1 %2").arg(QLocale().toString(size, 'f', 2), units.at(i)); +} diff --git a/src/core/Tools.h b/src/core/Tools.h new file mode 100644 index 000000000..eb5c3c17d --- /dev/null +++ b/src/core/Tools.h @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2012 Felix Geyer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef KEEPASSX_TOOLS_H +#define KEEPASSX_TOOLS_H + +#include + +namespace Tools { + +QString humanReadableFileSize(qint64 bytes); + +} + +#endif // KEEPASSX_TOOLS_H