X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/9c8e7f4e43d23c6d014ca4ffe2083ad8cc737753..ec00f379dc42b00a64ab1af25bb4bb1a06bd7449:/src/statusbarspaceinfo.cpp diff --git a/src/statusbarspaceinfo.cpp b/src/statusbarspaceinfo.cpp index c648351eb..117d63f16 100644 --- a/src/statusbarspaceinfo.cpp +++ b/src/statusbarspaceinfo.cpp @@ -20,15 +20,16 @@ #include "statusbarspaceinfo.h" -#include -#include -#include - -#include -#include +#include +#include +#include #include #include +#include +#include +#include + StatusBarSpaceInfo::StatusBarSpaceInfo(QWidget* parent) : QWidget(parent), m_gettingSize(false), @@ -37,6 +38,10 @@ StatusBarSpaceInfo::StatusBarSpaceInfo(QWidget* parent) : { 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); @@ -66,14 +71,11 @@ 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(); + const QColor backgrColor = KColorScheme(KColorScheme::View).background(); painter.setBrush(backgrColor); painter.drawRect(QRect(0, barTop + 1 , barWidth - widthDec, barHeight)); @@ -83,7 +85,7 @@ void StatusBarSpaceInfo::paintEvent(QPaintEvent* /* event */) painter.setPen(Qt::NoPen); painter.setBrush(progressColor(backgrColor)); int usedWidth = barWidth - static_cast((m_kBAvailable * - static_cast(barWidth)) / m_kBSize); + static_cast(barWidth)) / m_kBSize); const int left = 1; int right = usedWidth - widthDec; if (right < left) { @@ -91,44 +93,36 @@ void StatusBarSpaceInfo::paintEvent(QPaintEvent* /* event */) } painter.drawRect(QRect(left, barTop + 2, right, barHeight - 1)); - text = i18n("%1% of %2 used", 100 - (int)(100.0 * m_kBAvailable / m_kBSize), KIO::convertSizeFromKiB(m_kBSize)); - } - else { + text = i18nc("@info:status", "%1 free", KIO::convertSizeFromKiB(m_kBAvailable)); + } else { if (m_gettingSize) { - text = i18n("Getting size..."); - } - else { + text = i18nc("@info:status", "Getting size..."); + } else { text = QString(); - QTimer::singleShot(0, this, SLOT(hide())); + QMetaObject::invokeMethod(this, "hide", Qt::QueuedConnection); } } - // draw text (usually 'X% of Y GB used') - painter.setPen(KGlobalSettings::textColor()); + // draw text + painter.setPen(KColorScheme(KColorScheme::View).foreground()); painter.drawText(QRect(1, 1, barWidth - 2, barHeight + 6), Qt::AlignCenter | Qt::TextWordWrap, text); } -void StatusBarSpaceInfo::slotFoundMountPoint(const unsigned long& kBSize, - const unsigned long& /* kBUsed */, - const unsigned long& kBAvailable, - const QString& /* mountPoint */) +void StatusBarSpaceInfo::slotFoundMountPoint(const QString& mountPoint, + quint64 kBSize, + quint64 kBUsed, + quint64 kBAvailable) { + 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(); } @@ -140,30 +134,37 @@ void StatusBarSpaceInfo::showResult() void StatusBarSpaceInfo::refresh() { - m_gettingSize = true; m_kBSize = 0; m_kBAvailable = 0; - const QString mountPoint(KIO::findPathMountPoint(m_url.path())); - - KDiskFreeSp* job = new KDiskFreeSp(this); - connect(job, SIGNAL(foundMountPoint(const unsigned long&, - const unsigned long&, - const unsigned long&, - const QString& )), - this, SLOT(slotFoundMountPoint(const unsigned long&, - const unsigned long&, - const unsigned long&, - const QString& ))); + // 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; + + KDiskFreeSpace* job = new KDiskFreeSpace(this); + connect(job, SIGNAL(foundMountPoint(const QString&, + quint64, + quint64, + quint64)), + this, SLOT(slotFoundMountPoint(const QString&, + quint64, + quint64, + quint64))); connect(job, SIGNAL(done()), this, SLOT(showResult())); - job->readDF(mountPoint); + job->readDF(mp->mountPoint()); } QColor StatusBarSpaceInfo::progressColor(const QColor& bgColor) const { - QColor color = KGlobalSettings::buttonBackground(); + QColor color = KColorScheme(KColorScheme::Button).background(); // assure that enough contrast is given between the background color // and the progressbar color