JS8Call-Improved master
Loading...
Searching...
No Matches
EventFilter.h
Go to the documentation of this file.
1
10
11#ifndef EVENTFILTER_HPP__
12#define EVENTFILTER_HPP__
13
14#include <QEvent>
15#include <QKeyEvent>
16#include <QMouseEvent>
17#include <QObject>
18
19#include <functional>
20
21namespace EventFilter {
29class FocusOut final : public QObject {
30 public:
31 using Filter = std::function<void()>;
32
33 FocusOut(Filter filter, QObject *parent = nullptr)
34 : QObject{parent}, filter_{filter} {}
35
36 bool eventFilter(QObject *, QEvent *event) override {
37 if (event->type() == QEvent::FocusOut)
38 filter_();
39 return false;
40 }
41
42 private:
43 Filter filter_;
44};
45
53class EscapeKeyPress final : public QObject {
54 public:
55 using Filter = std::function<bool(QKeyEvent *)>;
56
57 EscapeKeyPress(Filter filter, QObject *parent = nullptr)
58 : QObject{parent}, filter_{filter} {}
59
60 bool eventFilter(QObject *, QEvent *event) override {
61 if (event->type() == QEvent::KeyPress) {
62 if (auto const keyEvent = static_cast<QKeyEvent *>(event);
63 keyEvent->key() == Qt::Key_Escape) {
64 return filter_(keyEvent);
65 }
66 }
67 return false;
68 }
69
70 private:
71 Filter filter_;
72};
73
81class EnterKeyPress final : public QObject {
82 public:
83 using Filter = std::function<bool(QKeyEvent *)>;
84
85 EnterKeyPress(Filter filter, QObject *parent = nullptr)
86 : QObject{parent}, filter_{filter} {}
87
88 bool eventFilter(QObject *, QEvent *const event) override {
89 if (event->type() == QEvent::KeyPress) {
90 if (auto const keyEvent = static_cast<QKeyEvent *>(event);
91 keyEvent->key() == Qt::Key_Enter ||
92 keyEvent->key() == Qt::Key_Return) {
93 return filter_(keyEvent);
94 }
95 }
96 return false;
97 }
98
99 private:
100 Filter filter_;
101};
102
110class MouseButtonPress final : public QObject {
111 public:
112 using Filter = std::function<bool(QMouseEvent *)>;
113
114 MouseButtonPress(Filter filter, QObject *parent = nullptr)
115 : QObject{parent}, filter_{filter} {}
116
117 bool eventFilter(QObject *, QEvent *event) override {
118 if (event->type() == QEvent::MouseButtonPress) {
119 return filter_(static_cast<QMouseEvent *>(event));
120 }
121 return false;
122 }
123
124 private:
125 Filter filter_;
126};
127
135class MouseButtonDblClick final : public QObject {
136 public:
137 using Filter = std::function<bool(QMouseEvent *)>;
138
139 MouseButtonDblClick(Filter filter, QObject *parent = nullptr)
140 : QObject{parent}, filter_{filter} {}
141
142 bool eventFilter(QObject *, QEvent *event) override {
143 if (event->type() == QEvent::MouseButtonDblClick) {
144 return filter_(static_cast<QMouseEvent *>(event));
145 }
146 return false;
147 }
148
149 private:
150 Filter filter_;
151};
152} // namespace EventFilter
153
154#endif