diff --git a/freespacenotifier/freespacenotifier.cpp b/freespacenotifier/freespacenotifier.cpp --- a/freespacenotifier/freespacenotifier.cpp +++ b/freespacenotifier/freespacenotifier.cpp @@ -27,10 +27,11 @@ #include #include #include -#include #include #include +#include + #include "settings.h" #include "ui_freespacenotifier_prefs_base.h" @@ -71,10 +72,14 @@ return; } - KDiskFreeSpaceInfo fsInfo = KDiskFreeSpaceInfo::freeSpaceInfo(QDir::homePath()); - if (fsInfo.isValid()) { + auto *job = KIO::fileSystemFreeSpace(QUrl::fromLocalFile(QDir::homePath())); + connect(job, &KIO::FileSystemFreeSpaceJob::result, this, [this](KIO::Job* job, KIO::filesize_t size, KIO::filesize_t available) { + if (job->error()) { + return; + } + int limit = FreeSpaceNotifierSettings::minimumSpace(); // MiB - qint64 avail = fsInfo.available() / (1024 * 1024); // to MiB + qint64 avail = available / (1024 * 1024); // to MiB bool warn = false; if (avail < limit) { @@ -93,7 +98,7 @@ // do not change lastAvail otherwise, to handle free space slowly going down if (warn) { - int availpct = int(100 * fsInfo.available() / fsInfo.size()); + int availpct = int(100 * available / size); if (!m_sni) { m_sni = new KStatusNotifierItem(QStringLiteral("freespacenotifier")); m_sni->setIconByName(QStringLiteral("drive-harddisk")); @@ -138,7 +143,7 @@ m_sni = nullptr; } } - } + }); } void FreeSpaceNotifier::hideSni()