mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-20 17:01:22 +00:00
Places panel: show a tooltip after 500 ms
BUG: 426455 FIXED-IN: 20.12
This commit is contained in:
parent
63f4981fe0
commit
6b1524e4ff
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue