#include "spaceinfoobserver.h"
#include <KLocalizedString>
-#include <KIO/Job>
+#include <KNS3/KMoreToolsMenuFactory>
-#include <QKeyEvent>
+#include <QMouseEvent>
StatusBarSpaceInfo::StatusBarSpaceInfo(QWidget* parent) :
KCapacityBar(KCapacityBar::DrawTextInline, parent),
- m_observer(0)
+ m_observer(nullptr)
{
+ setCursor(Qt::PointingHandCursor);
}
StatusBarSpaceInfo::~StatusBarSpaceInfo()
{
}
-void StatusBarSpaceInfo::setUrl(const KUrl& url)
+void StatusBarSpaceInfo::setUrl(const QUrl& url)
{
if (m_url != url) {
m_url = url;
}
}
-KUrl StatusBarSpaceInfo::url() const
+QUrl StatusBarSpaceInfo::url() const
{
return m_url;
}
+void StatusBarSpaceInfo::update()
+{
+ if (m_observer) {
+ m_observer->update();
+ }
+}
+
void StatusBarSpaceInfo::showEvent(QShowEvent* event)
{
KCapacityBar::showEvent(event);
KCapacityBar::hideEvent(event);
}
+void StatusBarSpaceInfo::mousePressEvent(QMouseEvent* event)
+{
+ if (event->button() == Qt::LeftButton) {
+ // Creates a menu with tools that help to find out more about free
+ // disk space for the given url.
+
+ // Note that this object must live long enough in case the user opens
+ // the "Configure..." dialog
+ KMoreToolsMenuFactory menuFactory(QStringLiteral("dolphin/statusbar-diskspace-menu"));
+ menuFactory.setParentWidget(this);
+ auto menu = menuFactory.createMenuFromGroupingNames(
+ { "disk-usage", "more:", "disk-partitions" }, m_url);
+
+ menu->exec(QCursor::pos());
+ }
+}
+
void StatusBarSpaceInfo::slotValuesChanged()
{
Q_ASSERT(m_observer);