X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/352dd42ccb46cb83ee65fc381372a2a209199b09..da795d20e2f2fa57ac9cafdffcfac4d092d8eaea:/src/statusbarspaceinfo.cpp diff --git a/src/statusbarspaceinfo.cpp b/src/statusbarspaceinfo.cpp index d63b12eb7..999f0ad54 100644 --- a/src/statusbarspaceinfo.cpp +++ b/src/statusbarspaceinfo.cpp @@ -15,17 +15,18 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ #include "statusbarspaceinfo.h" -#include -#include -#include +#include +#include +#include #include -#include +#include +#include #include #include @@ -52,15 +53,15 @@ void StatusBarSpaceInfo::setUrl(const KUrl& url) { m_url = url; refresh(); - update(); + QTimer::singleShot(300, this, SLOT(update())); } void StatusBarSpaceInfo::paintEvent(QPaintEvent* /* event */) { QPainter painter(this); const int barWidth = width(); - const int barTop = 2; - const int barHeight = height() - 4; + const int barTop = 1; + const int barHeight = height() - 5; QString text; @@ -83,7 +84,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,19 +92,17 @@ void StatusBarSpaceInfo::paintEvent(QPaintEvent* /* event */) } painter.drawRect(QRect(left, barTop + 2, right, barHeight - 1)); - text = i18n("%1% of %2 used", QString::number(100 - (int)(100.0 * m_kBAvailable / m_kBSize)), KIO::convertSizeFromKiB(m_kBSize)); - } - else { + text = i18n("%1 free", KIO::convertSizeFromKiB(m_kBAvailable)); + } else { if (m_gettingSize) { text = i18n("Getting size..."); - } - else { - text = ""; + } else { + text = QString(); QTimer::singleShot(0, this, SLOT(hide())); } } - // draw text (usually 'X% of Y GB used') + // draw text painter.setPen(KGlobalSettings::textColor()); painter.drawText(QRect(1, 1, barWidth - 2, barHeight + 6), Qt::AlignCenter | Qt::TextWordWrap, @@ -112,57 +111,53 @@ void StatusBarSpaceInfo::paintEvent(QPaintEvent* /* event */) void StatusBarSpaceInfo::slotFoundMountPoint(const unsigned long& kBSize, - const unsigned long& /* kBUsed */, + const unsigned long& kBUsed, const unsigned long& kBAvailable, - const QString& /* mountPoint */) + 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(); } -void StatusBarSpaceInfo::slotDone() +void StatusBarSpaceInfo::showResult() { m_gettingSize = false; - if ((m_kBSize > 0) && (m_kBAvailable > 0)) { - show(); - } - update(); } 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&, - const QString& )), + const QString&)), this, SLOT(slotFoundMountPoint(const unsigned long&, const unsigned long&, const unsigned long&, - const QString& ))); + const QString&))); connect(job, SIGNAL(done()), - this, SLOT(slotDone())); + this, SLOT(showResult())); - job->readDF(mountPoint); + job->readDF(mp->mountPoint()); } QColor StatusBarSpaceInfo::progressColor(const QColor& bgColor) const