- KDiskFreeSpace* job = new KDiskFreeSpace(this);
- connect(job, SIGNAL(foundMountPoint(const QString&,
- quint64,
- quint64,
- quint64)),
- this, SLOT(slotFoundMountPoint(const QString&,
- quint64,
- quint64,
- quint64)));
-
- job->readDF(mp->mountPoint());
+ KDiskFreeSpaceInfo job = KDiskFreeSpaceInfo::freeSpaceInfo(mp->mountPoint());
+ if (!job.isValid()) {
+ setText(i18nc("@info:status", "Unknown size"));
+ setValue(0);
+ update();
+ return;
+ }
+
+ KIO::filesize_t kBSize = job.size() / 1024;
+ KIO::filesize_t kBUsed = job.used() / 1024;
+
+ const bool valuesChanged = (kBUsed != static_cast<quint64>(value())) || (kBSize != m_kBSize);
+ if (valuesChanged) {
+ setText(i18nc("@info:status Free disk space", "%1 free",
+ KIO::convertSize(job.available())));
+
+ setUpdatesEnabled(false);
+ m_kBSize = kBSize;
+ setValue(kBSize > 0 ? (kBUsed * 100) / kBSize : 0);
+ setUpdatesEnabled(true);
+ update();
+ }