xref: /glogg/src/menuactiontooltipbehavior.h (revision 6e2e573c451ec24d720c967fab68538eaa3f3ab5)
1 /*
2  * Copyright (C) 2009, 2010 Nicolas Bonnefon and other contributors
3  *
4  * This file is part of glogg.
5  *
6  * glogg is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * glogg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with glogg.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef MANUACTIONTOOLTIPBEHAVIOR_H
21 #define MANUACTIONTOOLTIPBEHAVIOR_H
22 
23 #include <QObject>
24 #include <QPoint>
25 
26 class QAction;
27 class QMenu;
28 class QTimerEvent;
29 
30 
31 // Provides a behavior to show an action's tooltip after mouse is unmoved for
32 // a specified number of 'ms'. E.g. used for tooltips with full-path for recent
33 // files in the file menu. Not thread-safe.
34 class MenuActionToolTipBehavior : public QObject
35 {
36     Q_OBJECT;
37 
38  public:
39     MenuActionToolTipBehavior(QAction *action, QMenu *parentMenu,
40                               QObject *parent);
41 
42     // Time in ms that mouse needs to stay unmoved for tooltip to be shown
43     int toolTipDelay(); /* ms */
44     void setToolTipDelay(int ms);
45 
46  private:
47     void timerEvent(QTimerEvent *event);
48     void showToolTip(const QPoint &position);
49 
50  private slots:
51     void onActionHovered();
52 
53  private:
54     QAction *action;
55     QMenu *parentMenu;
56     int toolTipDelayMs;
57     int timerId;
58     QPoint hoverPoint;
59 };
60 
61 #endif
62