X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/4fcc56a6200804cb4e15f3eab9cb0acd0268132c..862ceee323ad3b474ce9de11eefbddd99c528fac:/src/statusbarspaceinfo.cpp diff --git a/src/statusbarspaceinfo.cpp b/src/statusbarspaceinfo.cpp index 4322658d2..bb0ed712a 100644 --- a/src/statusbarspaceinfo.cpp +++ b/src/statusbarspaceinfo.cpp @@ -20,23 +20,28 @@ #include "statusbarspaceinfo.h" -#include -#include -#include +#include +#include +#include #include -#include +#include +#include #include #include StatusBarSpaceInfo::StatusBarSpaceInfo(QWidget* parent) : - QWidget(parent), - m_gettingSize(false), - m_kBSize(0), - m_kBAvailable(0) + QWidget(parent), + m_gettingSize(false), + m_kBSize(0), + m_kBAvailable(0) { setMinimumWidth(200); + QPalette palette; + palette.setColor(QPalette::Background, Qt::transparent); + setPalette(palette); + // Update the space information each 10 seconds. Polling is useful // here, as files can be deleted/added outside the scope of Dolphin. QTimer* timer = new QTimer(this); @@ -45,7 +50,8 @@ StatusBarSpaceInfo::StatusBarSpaceInfo(QWidget* parent) : } StatusBarSpaceInfo::~StatusBarSpaceInfo() -{} +{ +} void StatusBarSpaceInfo::setUrl(const KUrl& url) { @@ -65,11 +71,8 @@ void StatusBarSpaceInfo::paintEvent(QPaintEvent* /* event */) const int widthDec = 3; // visual decrement for the available width - const QColor c1 = palette().brush(QPalette::Background).color(); - const QColor c2 = KGlobalSettings::buttonTextColor(); - const QColor frameColor((c1.red() + c2.red()) / 2, - (c1.green() + c2.green()) / 2, - (c1.blue() + c2.blue()) / 2); + QColor frameColor = palette().brush(QPalette::Background).color(); + frameColor.setAlpha(128); painter.setPen(frameColor); const QColor backgrColor = KGlobalSettings::baseColor(); @@ -109,23 +112,17 @@ void StatusBarSpaceInfo::paintEvent(QPaintEvent* /* event */) void StatusBarSpaceInfo::slotFoundMountPoint(const unsigned long& kBSize, - const unsigned long& /* kBUsed */, - const unsigned long& kBAvailable, - const QString& /* mountPoint */) + const unsigned long& kBUsed, + const unsigned long& kBAvailable, + const QString& mountPoint) { + Q_UNUSED(kBUsed); + Q_UNUSED(mountPoint); + m_gettingSize = false; m_kBSize = kBSize; m_kBAvailable = kBAvailable; - // Bypass a the issue (?) of KDiskFreeSp that for protocols like - // FTP, SMB the size of root partition is returned. - // TODO: check whether KDiskFreeSp is buggy or Dolphin uses it in a wrong way - const QString protocol(m_url.protocol()); - if (!protocol.isEmpty() && (protocol != "file")) { - m_kBSize = 0; - m_kBAvailable = 0; - } - update(); } @@ -137,13 +134,19 @@ void StatusBarSpaceInfo::showResult() void StatusBarSpaceInfo::refresh() { - m_gettingSize = true; m_kBSize = 0; m_kBAvailable = 0; - const QString mountPoint(KIO::findPathMountPoint(m_url.path())); + // KDiskFreeSpace is for local paths only + if (!m_url.isLocalFile()) + return; + + m_gettingSize = true; + KMountPoint::Ptr mp = KMountPoint::currentMountPoints().findByPath(m_url.path()); + if (!mp) + return; - KDiskFreeSp* job = new KDiskFreeSp(this); + KDiskFreeSpace* job = new KDiskFreeSpace(this); connect(job, SIGNAL(foundMountPoint(const unsigned long&, const unsigned long&, const unsigned long&, @@ -155,7 +158,7 @@ void StatusBarSpaceInfo::refresh() connect(job, SIGNAL(done()), this, SLOT(showResult())); - job->readDF(mountPoint); + job->readDF(mp->mountPoint()); } QColor StatusBarSpaceInfo::progressColor(const QColor& bgColor) const