Lomiri
Loading...
Searching...
No Matches
inputwatcher.h
1/*
2 * Copyright (C) 2015 Canonical Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 */
17
18#ifndef LOMIRI_INPUTWATCHER_H
19#define LOMIRI_INPUTWATCHER_H
20
21#include <QObject>
22#include <QPointer>
23
24/*
25 Monitors the target object for input events to figure out whether it's pressed
26 or not.
27 */
28class InputWatcher : public QObject
29{
30 Q_OBJECT
31 Q_PROPERTY(QObject* target READ target WRITE setTarget NOTIFY targetChanged)
32
33 // Whether the target object is pressed (by either touch or mouse)
34 Q_PROPERTY(bool targetPressed READ targetPressed NOTIFY targetPressedChanged)
35public:
36 InputWatcher(QObject *parent = nullptr);
37
38 QObject *target() const;
39 void setTarget(QObject *value);
40
41 bool targetPressed() const;
42
43 bool eventFilter(QObject *watched, QEvent *event) override;
44
45Q_SIGNALS:
46 void targetChanged(QObject *value);
47 void targetPressedChanged(bool value);
48
49private:
50 void setMousePressed(bool value);
51 void setTouchPressed(bool value);
52
53 bool m_mousePressed;
54 bool m_touchPressed;
55 QPointer<QObject> m_target;
56};
57
58#endif // LOMIRI_INPUTWATCHER_H