┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels
diff options
context:
space:
mode:
authorMéven Car <[email protected]>2020-11-07 19:45:56 +0100
committerMéven Car <[email protected]>2020-11-10 08:04:15 +0000
commit6b1524e4ff115f9cbee93c3c14c09fb347885d56 (patch)
tree68cfe02f8ce0ca064e39848eb6eae1c29e5f0158 /src/panels
parent63f4981fe01d88b2ef1b27e0577d7f5d4c8cc485 (diff)
Places panel: show a tooltip after 500 ms
BUG: 426455 FIXED-IN: 20.12
Diffstat (limited to 'src/panels')
-rw-r--r--src/panels/places/placespanel.cpp32
-rw-r--r--src/panels/places/placespanel.h7
2 files changed, 38 insertions, 1 deletions
diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp
index 336b9deb8..66770ee86 100644
--- a/src/panels/places/placespanel.cpp
+++ b/src/panels/places/placespanel.cpp
@@ -39,6 +39,8 @@
#include <QMenu>
#include <QMimeData>
#include <QVBoxLayout>
+#include <QToolTip>
+#include <QTimer>
PlacesPanel::PlacesPanel(QWidget* parent) :
Panel(parent),
@@ -49,8 +51,12 @@ PlacesPanel::PlacesPanel(QWidget* parent) :
m_triggerStorageSetupButton(),
m_itemDropEventIndex(-1),
m_itemDropEventMimeData(nullptr),
- m_itemDropEvent(nullptr)
+ m_itemDropEvent(nullptr),
+ m_tooltipTimer()
{
+ m_tooltipTimer.setInterval(500);
+ m_tooltipTimer.setSingleShot(true);
+ connect(&m_tooltipTimer, &QTimer::timeout, this, &PlacesPanel::slotShowTooltip);
}
PlacesPanel::~PlacesPanel()
@@ -111,6 +117,8 @@ void PlacesPanel::showEvent(QShowEvent* event)
m_view->setWidgetCreator(new KItemListWidgetCreator<PlacesItemListWidget>());
m_view->setGroupHeaderCreator(new KItemListGroupHeaderCreator<PlacesItemListGroupHeader>());
+ installEventFilter(this);
+
m_controller = new KItemListController(m_model, m_view, this);
m_controller->setSelectionBehavior(KItemListController::SingleSelection);
m_controller->setSingleClickActivationEnforced(true);
@@ -137,6 +145,21 @@ void PlacesPanel::showEvent(QShowEvent* event)
Panel::showEvent(event);
}
+bool PlacesPanel::eventFilter(QObject * /* obj */, QEvent *event)
+{
+ if (event->type() == QEvent::ToolTip) {
+
+ QHelpEvent *hoverEvent = reinterpret_cast<QHelpEvent *>(event);
+
+ m_hoveredIndex = m_view->itemAt(hoverEvent->pos());
+ m_hoverPos = mapToGlobal(hoverEvent->pos());
+
+ m_tooltipTimer.start();
+ return true;
+ }
+ return false;
+}
+
void PlacesPanel::slotItemActivated(int index)
{
triggerItem(index, Qt::LeftButton);
@@ -460,6 +483,13 @@ void PlacesPanel::slotStorageSetupDone(int index, bool success)
}
}
+void PlacesPanel::slotShowTooltip()
+{
+ const QUrl url = m_model->data(m_hoveredIndex).value("url").value<QUrl>();
+ const QString text = url.isLocalFile() ? url.path() : url.toString();
+ QToolTip::showText(m_hoverPos, text);
+}
+
void PlacesPanel::addEntry()
{
const int index = m_controller->selectionManager()->currentItem();
diff --git a/src/panels/places/placespanel.h b/src/panels/places/placespanel.h
index 38bfa4c53..fe4f46ba6 100644
--- a/src/panels/places/placespanel.h
+++ b/src/panels/places/placespanel.h
@@ -11,6 +11,7 @@
#include "panels/panel.h"
#include <QUrl>
+#include <QTimer>
class KItemListController;
class PlacesItemModel;
@@ -30,6 +31,8 @@ public:
~PlacesPanel() override;
void proceedWithTearDown();
+ bool eventFilter(QObject *obj, QEvent *event) override;
+
signals:
void placeActivated(const QUrl& url);
void placeMiddleClicked(const QUrl& url);
@@ -58,6 +61,7 @@ private slots:
void slotAboveItemDropEvent(int index, QGraphicsSceneDragDropEvent* event);
void slotUrlsDropped(const QUrl& dest, QDropEvent* event, QWidget* parent);
void slotStorageSetupDone(int index, bool success);
+ void slotShowTooltip();
private:
void addEntry();
@@ -84,6 +88,9 @@ private:
int m_itemDropEventIndex;
QMimeData* m_itemDropEventMimeData;
QDropEvent* m_itemDropEvent;
+ QTimer m_tooltipTimer;
+ int m_hoveredIndex;
+ QPoint m_hoverPos;
};
#endif // PLACESPANEL_H