X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/820c4ae062b6ca026ce16cffa98c3bade607399e..629ec98952bcf38bc99f2b11bc37bdc2ec7aabcc:/src/statusbarspaceinfo.cpp diff --git a/src/statusbarspaceinfo.cpp b/src/statusbarspaceinfo.cpp index 3a2f77aef..c674a387a 100644 --- a/src/statusbarspaceinfo.cpp +++ b/src/statusbarspaceinfo.cpp @@ -31,6 +31,7 @@ StatusBarSpaceInfo::StatusBarSpaceInfo(QWidget* parent) : QProgressBar(parent), m_gettingSize(false), + m_foundMountPoint(false), m_text() { setMinimum(0); @@ -65,17 +66,32 @@ void StatusBarSpaceInfo::slotFoundMountPoint(const QString& mountPoint, quint64 kBUsed, quint64 kBAvailable) { - Q_UNUSED(kBSize); Q_UNUSED(mountPoint); m_gettingSize = false; + m_foundMountPoint = true; const bool valuesChanged = (kBUsed != static_cast(value())) || - (kBAvailable != static_cast(maximum())); + (kBSize != static_cast(maximum())); if (valuesChanged) { - m_text = i18nc("@info:status", "%1 free", KIO::convertSizeFromKiB(kBAvailable)); + m_text = i18nc("@info:status Free disk space", "%1 free", KIO::convertSize(kBAvailable * 1024)); + setUpdatesEnabled(false); setMaximum(kBSize); setValue(kBUsed); + setUpdatesEnabled(true); + update(); + } +} + +void StatusBarSpaceInfo::slotDiskFreeSpaceDone() +{ + if (m_foundMountPoint) { + return; } + + m_gettingSize = false; + m_text = i18nc("@info:status", "Unknown size"); + setValue(0); + update(); } void StatusBarSpaceInfo::refresh() @@ -83,6 +99,7 @@ void StatusBarSpaceInfo::refresh() // KDiskFreeSpace is for local paths only if (!m_url.isLocalFile()) { m_text = i18nc("@info:status", "Unknown size"); + setValue(0); update(); return; } @@ -93,6 +110,7 @@ void StatusBarSpaceInfo::refresh() } m_gettingSize = true; + m_foundMountPoint = false; KDiskFreeSpace* job = new KDiskFreeSpace(this); connect(job, SIGNAL(foundMountPoint(const QString&, quint64, @@ -102,6 +120,7 @@ void StatusBarSpaceInfo::refresh() quint64, quint64, quint64))); + connect(job, SIGNAL(done()), this, SLOT(slotDiskFreeSpaceDone())); job->readDF(mp->mountPoint()); @@ -116,9 +135,8 @@ void StatusBarSpaceInfo::showGettingSizeInfo() { if (m_gettingSize) { m_text = i18nc("@info:status", "Getting size..."); - update(); - setMinimum(0); setMaximum(0); + update(); } }