aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/common/mouseshortcut.h
blob: e400a24799066c25d522f99ab8769795caa5319a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#ifndef MOUSESHORTCUT_H
#define MOUSESHORTCUT_H

#include <QObject>

class MouseShortcut : public QObject
{
    Q_OBJECT

    public:
        enum ClickType
        {
            SingleClick,
            DoubleClick,
            Wheel
        };

        static MouseShortcut* forButton(MouseShortcut::ClickType type,
                         Qt::MouseButtons buttons,
                         Qt::KeyboardModifiers modifiers,
                         QObject* receiver,
                         const char* slot,
                         QObject *parent);

        static MouseShortcut* forWheel(Qt::KeyboardModifiers modifiers,
                                       QObject *parent = 0);

        static MouseShortcut* forWheel(Qt::KeyboardModifiers modifiers,
                                       QObject *parent,
                                       const char *slot);
        static MouseShortcut* forWheel(Qt::KeyboardModifiers modifiers,
                                       QObject* receiver,
                                       const char* slot,
                                       QObject* parent);

        void enableDebug();

    protected:
        MouseShortcut(MouseShortcut::ClickType type,
                      Qt::MouseButtons buttons,
                      Qt::KeyboardModifiers modifiers,
                      QObject *parent = 0);

        bool eventFilter(QObject *object, QEvent *event);

    private:
        bool attributesMatch(QEvent* event);

        MouseShortcut::ClickType type;
        Qt::MouseButtons buttons;
        Qt::KeyboardModifiers modifiers;
        bool debug = false;

    signals:
        void activated(const QPoint& pos);
        void wheelActivated(int delta);
};

#endif // MOUSESHORTCUT_H