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