X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/7a593fc92bf28fbdcdec0e241e18ee8ba2ad7334..5f57256a2f293622c7a10844adae29190907b9eb:/src/statusbar/statusbarspaceinfo.cpp diff --git a/src/statusbar/statusbarspaceinfo.cpp b/src/statusbar/statusbarspaceinfo.cpp index 3692947b1..6b6a6d610 100644 --- a/src/statusbar/statusbarspaceinfo.cpp +++ b/src/statusbar/statusbarspaceinfo.cpp @@ -22,22 +22,25 @@ #include "spaceinfoobserver.h" -#include -#include +#include -#include +#include +#include +#include +#include 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; @@ -47,7 +50,7 @@ void StatusBarSpaceInfo::setUrl(const KUrl& url) } } -KUrl StatusBarSpaceInfo::url() const +QUrl StatusBarSpaceInfo::url() const { return m_url; } @@ -57,7 +60,7 @@ void StatusBarSpaceInfo::showEvent(QShowEvent* event) KCapacityBar::showEvent(event); m_observer.reset(new SpaceInfoObserver(m_url, this)); slotValuesChanged(); - connect(m_observer.data(), SIGNAL(valuesChanged()), this, SLOT(slotValuesChanged())); + connect(m_observer.data(), &SpaceInfoObserver::valuesChanged, this, &StatusBarSpaceInfo::slotValuesChanged); } void StatusBarSpaceInfo::hideEvent(QHideEvent* event) @@ -66,6 +69,25 @@ void StatusBarSpaceInfo::hideEvent(QHideEvent* 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")); +#if KNEWSTUFF_VERSION >= QT_VERSION_CHECK(5, 37, 0) + menuFactory.setParentWidget(this); +#endif + auto menu = menuFactory.createMenuFromGroupingNames( + { "disk-usage", "more:", "disk-partitions" }, m_url); + + menu->exec(QCursor::pos()); + } +} + void StatusBarSpaceInfo::slotValuesChanged() { Q_ASSERT(m_observer); @@ -87,4 +109,3 @@ void StatusBarSpaceInfo::slotValuesChanged() } } -#include "statusbarspaceinfo.moc"