/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 as published by the Free Software ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef _EVENTFILTER_ #define _EVENTFILTER_ #include #include #include QT_FORWARD_DECLARE_CLASS(QDebug) namespace QtDiag { // Event filter that can for example be installed on QApplication // to log relevant events. class EventFilter : public QObject { public: enum EventCategory { MouseEvents = 0x00001, MouseMoveEvents = 0x00002, TouchEvents = 0x00004, TabletEvents = 0x00008, DragAndDropEvents = 0x00010, KeyEvents = 0x00020, FocusEvents = 0x00040, GeometryEvents = 0x00080, PaintEvents = 0x00100, StateChangeEvents = 0x00200, InputMethodEvents = 0x00400, TimerEvents = 0x00800, ObjectEvents = 0x01000, GestureEvents = 0x02000, AllEvents = 0xFFFFF }; Q_DECLARE_FLAGS(EventCategories, EventCategory) enum ObjectType { QWindowType = 0x1, QWidgetType = 0x2, OtherType = 0x4 }; Q_DECLARE_FLAGS(ObjectTypes, ObjectType) explicit EventFilter(EventCategories eventCategories, QObject *p = nullptr); explicit EventFilter(QObject *p = nullptr); bool eventFilter(QObject *, QEvent *) override; ObjectTypes objectTypes() const { return m_objectTypes; } void setObjectTypes(ObjectTypes objectTypes) { m_objectTypes = objectTypes; } static void formatObject(const QObject *o, QDebug debug); private: void init(EventCategories eventCategories); QList m_eventTypes; ObjectTypes m_objectTypes; }; Q_DECLARE_OPERATORS_FOR_FLAGS(EventFilter::EventCategories) Q_DECLARE_OPERATORS_FOR_FLAGS(EventFilter::ObjectTypes) struct formatQObject { explicit formatQObject(const QObject *o) : m_object(o) {} const QObject *m_object; }; QDebug operator<<(QDebug d, const formatQObject &fo); } // namespace QtDiag #endif