* 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 <qpainter.h>
-#include <qtimer.h>
-//Added by qt3to4:
-#include <QPaintEvent>
-#include <kglobalsettings.h>
-#include <kdiskfreesp.h>
+#include <kcolorscheme.h>
+#include <kdiskfreespace.h>
+#include <kmountpoint.h>
#include <klocale.h>
#include <kio/job.h>
+#include <QTimer>
+#include <QPainter>
+#include <QKeyEvent>
+
StatusBarSpaceInfo::StatusBarSpaceInfo(QWidget* parent) :
QWidget(parent),
m_gettingSize(false),
{
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);
{
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;
const int widthDec = 3; // visual decrement for the available width
- const QColor c1 = colorGroup().background();
- 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));
painter.setPen(Qt::NoPen);
painter.setBrush(progressColor(backgrColor));
int usedWidth = barWidth - static_cast<int>((m_kBAvailable *
- static_cast<float>(barWidth)) / m_kBSize);
+ static_cast<float>(barWidth)) / m_kBSize);
const int left = 1;
- int right = usedWidth - (widthDec + 1);
+ int right = usedWidth - widthDec;
if (right < left) {
right = left;
}
- painter.drawRect(QRect(left, barTop + 2, right, barHeight - 2));
+ painter.drawRect(QRect(left, barTop + 2, right, barHeight - 1));
- text = i18n("%1% of %2 used")
- .arg( 100 - (int)(100.0 * m_kBAvailable / m_kBSize))
- .arg(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 = "";
+ text = i18nc("@info:status", "Getting size...");
+ } else {
+ text = QString();
QTimer::singleShot(0, this, SLOT(hide()));
}
}
- // draw text (usually 'X% of Y GB used')
- painter.setPen(KGlobalSettings::textColor());
- painter.drawText(QRect(1, 1, barWidth - 2, barHeight + 4),
- Qt::AlignHCenter | Qt::AlignVCenter | Qt::TextWordWrap,
+ // 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();
}
-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()));
-
- 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(slotDone()));
+ 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