summaryrefslogtreecommitdiffstats
path: root/rbutil/rbutilqt
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r--rbutil/rbutilqt/base/utils.cpp36
-rw-r--r--rbutil/rbutilqt/base/utils.h7
-rw-r--r--rbutil/rbutilqt/sysinfo.cpp5
3 files changed, 41 insertions, 7 deletions
diff --git a/rbutil/rbutilqt/base/utils.cpp b/rbutil/rbutilqt/base/utils.cpp
index bd2bce0609..1a8607b8e2 100644
--- a/rbutil/rbutilqt/base/utils.cpp
+++ b/rbutil/rbutilqt/base/utils.cpp
@@ -115,6 +115,18 @@ QString Utils::resolvePathCase(QString path)
//! @return size in bytes
qulonglong Utils::filesystemFree(QString path)
{
+ return filesystemSize(path, FilesystemFree);
+}
+
+
+qulonglong Utils::filesystemTotal(QString path)
+{
+ return filesystemSize(path, FilesystemTotal);
+}
+
+
+qulonglong Utils::filesystemSize(QString path, enum Utils::Size type)
+{
qlonglong size = 0;
#if defined(Q_OS_LINUX) || defined(Q_OS_MACX)
// the usage of statfs() is deprecated by the LSB so use statvfs().
@@ -123,16 +135,30 @@ qulonglong Utils::filesystemFree(QString path)
ret = statvfs(qPrintable(path), &fs);
- if(ret == 0)
- size = (qulonglong)fs.f_frsize * (qulonglong)fs.f_bavail;
+ if(ret == 0) {
+ if(type == FilesystemFree) {
+ size = (qulonglong)fs.f_frsize * (qulonglong)fs.f_bavail;
+ }
+ if(type == FilesystemTotal) {
+ size = (qulonglong)fs.f_frsize * (qulonglong)fs.f_blocks;
+ }
+ }
#endif
#if defined(Q_OS_WIN32)
BOOL ret;
ULARGE_INTEGER freeAvailBytes;
+ ULARGE_INTEGER totalNumberBytes;
- ret = GetDiskFreeSpaceExW((LPCTSTR)path.utf16(), &freeAvailBytes, NULL, NULL);
- if(ret)
- size = freeAvailBytes.QuadPart;
+ ret = GetDiskFreeSpaceExW((LPCTSTR)path.utf16(), &freeAvailBytes,
+ &totalNumberBytes, NULL);
+ if(ret) {
+ if(type == FilesystemFree) {
+ size = freeAvailBytes.QuadPart;
+ }
+ if(type == FilesystemTotal) {
+ size = totalNumberBytes.QuadPart;
+ }
+ }
#endif
qDebug() << "[Utils] Filesystem free:" << path << size;
return size;
diff --git a/rbutil/rbutilqt/base/utils.h b/rbutil/rbutilqt/base/utils.h
index ae02a2ca95..bff05cce0a 100644
--- a/rbutil/rbutilqt/base/utils.h
+++ b/rbutil/rbutilqt/base/utils.h
@@ -31,9 +31,16 @@
class Utils : public QObject
{
public:
+ enum Size {
+ FilesystemTotal,
+ FilesystemFree
+ };
+
static bool recursiveRmdir(const QString &dirName);
static QString resolvePathCase(QString path);
static qulonglong filesystemFree(QString path);
+ static qulonglong filesystemTotal(QString path);
+ static qulonglong filesystemSize(QString path, enum Size type);
static QString findExecutable(QString name);
static QString checkEnvironment(bool permission);
static int compareVersionStrings(QString s1, QString s2);
diff --git a/rbutil/rbutilqt/sysinfo.cpp b/rbutil/rbutilqt/sysinfo.cpp
index a9fa5999b7..a28a9bb812 100644
--- a/rbutil/rbutilqt/sysinfo.cpp
+++ b/rbutil/rbutilqt/sysinfo.cpp
@@ -63,9 +63,10 @@ QString Sysinfo::getInfo()
info += "<b>" + tr("Filesystem") + "</b><br/>";
QStringList drives = Autodetection::mountpoints();
for(int i = 0; i < drives.size(); i++) {
- info += tr("%1, %2 MiB available")
+ info += tr("%1, %2 GiB of %3 GiB available")
.arg(QDir::toNativeSeparators(drives.at(i)))
- .arg(Utils::filesystemFree(drives.at(i)) / (1024*1024));
+ .arg((double)Utils::filesystemFree(drives.at(i)) / (1<<30), 0, 'f', 2)
+ .arg((double)Utils::filesystemTotal(drives.at(i)) / (1<<30), 0, 'f', 2);
if(i + 1 < drives.size())
info += "<br/>";
}