File indexing completed on 2024-12-22 04:34:59

0001 /*
0002     SPDX-FileCopyrightText: 2009 Nokia Corporation and /or its subsidiary(-ies).
0003     Contact: Qt Software Information (qt-info@nokia.com)
0004 
0005     This file is part of the QtCore module of the Qt Toolkit.
0006 
0007     $QT_BEGIN_LICENSE:LGPL$
0008     Commercial Usage
0009     Licensees holding valid Qt Commercial licenses may use this file in
0010     accordance with the Qt Commercial License Agreement provided with the
0011     Software or, alternatively, in accordance with the terms contained in
0012     a written agreement between you and Nokia.
0013 
0014     GNU Lesser General Public License Usage
0015     Alternatively, this file may be used under the terms of the GNU Lesser
0016     General Public License version 2.1 as published by the Free Software
0017     Foundation and appearing in the file LICENSE.LGPL included in the
0018     packaging of this file.  Please review the following information to
0019     ensure the GNU Lesser General Public License version 2.1 requirements
0020     will be met: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
0021 
0022     In addition, as a special exception, Nokia gives you certain
0023     additional rights. These rights are described in the Nokia Qt LGPL
0024     Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
0025     package.
0026 
0027     GNU General Public License Usage
0028     Alternatively, this file may be used under the terms of the GNU
0029     General Public License version 3.0 as published by the Free Software
0030     Foundation and appearing in the file LICENSE.GPL included in the
0031     packaging of this file.  Please review the following information to
0032     ensure the GNU General Public License version 3.0 requirements will be
0033     met: https://www.gnu.org/licenses/gpl-3.0.html.
0034 
0035     If you are unsure which license is appropriate for your use, please
0036     contact the sales department at qt-sales@nokia.com.
0037     $QT_END_LICENSE$
0038 
0039 */
0040 
0041 #ifndef QEVENTDISPATCHER_WIN_P_H
0042 #define QEVENTDISPATCHER_WIN_P_H
0043 
0044 //
0045 //  W A R N I N G
0046 //  -------------
0047 //
0048 // This file is not part of the Qt API.  It exists purely as an
0049 // implementation detail.  This header file may change from version to
0050 // version without notice, or even be removed.
0051 //
0052 // We mean it.
0053 //
0054 
0055 #include "QtCore/qabstracteventdispatcher.h"
0056 #include "QtCore/qt_windows.h"
0057 
0058 #include "k3b_export.h"
0059 
0060 QT_BEGIN_NAMESPACE
0061 
0062 class QWinEventNotifier;
0063 class QEventDispatcherWin32Private;
0064 
0065 // forward declaration
0066 LRESULT CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPARAM lp);
0067 
0068 class LIBK3B_EXPORT QEventDispatcherWin32 : public QAbstractEventDispatcher
0069 {
0070     Q_OBJECT
0071     Q_DECLARE_PRIVATE(QEventDispatcherWin32)
0072 
0073     void createInternalHwnd();
0074     friend class QGuiEventDispatcherWin32;
0075 
0076 public:
0077     explicit QEventDispatcherWin32(QObject *parent = 0);
0078     ~QEventDispatcherWin32();
0079 
0080     bool processEvents(QEventLoop::ProcessEventsFlags flags);
0081     bool hasPendingEvents();
0082 
0083     void registerSocketNotifier(QSocketNotifier *notifier);
0084     void unregisterSocketNotifier(QSocketNotifier *notifier);
0085 
0086     void registerTimer(int timerId, int interval, QObject *object);
0087     bool unregisterTimer(int timerId);
0088     bool unregisterTimers(QObject *object);
0089     QList<TimerInfo> registeredTimers(QObject *object) const;
0090 
0091     bool registerEventNotifier(QWinEventNotifier *notifier);
0092     void unregisterEventNotifier(QWinEventNotifier *notifier);
0093     void activateEventNotifiers();
0094 
0095     void wakeUp();
0096     void interrupt();
0097     void flush();
0098 
0099     void startingUp();
0100     void closingDown();
0101 
0102     bool event(QEvent *e);
0103 
0104 private:
0105     friend LRESULT CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPARAM lp);
0106 };
0107 
0108 QT_END_NAMESPACE
0109 
0110 #endif // QEVENTDISPATCHER_WIN_P_H