1 | /* |
2 | SPDX-FileCopyrightText: 2001-2003 Lubos Lunak <l.lunak@kde.org> |
3 | |
4 | SPDX-License-Identifier: MIT |
5 | */ |
6 | |
7 | #ifndef KXMESSAGES_H |
8 | #define KXMESSAGES_H |
9 | |
10 | #include <QObject> |
11 | #include <kwindowsystem_export.h> |
12 | |
13 | #include <config-kwindowsystem.h> // KWINDOWSYSTEM_HAVE_X11 |
14 | #if KWINDOWSYSTEM_HAVE_X11 |
15 | #include <xcb/xcb.h> |
16 | typedef struct _XDisplay Display; |
17 | |
18 | class QString; |
19 | |
20 | class KXMessagesPrivate; |
21 | |
22 | /** |
23 | * Sending string messages to other applications using the X Client Messages. |
24 | * |
25 | * Used internally by KStartupInfo and kstart. |
26 | * You usually don't want to use this, use D-Bus instead. |
27 | * |
28 | * @internal |
29 | * |
30 | * @author Lubos Lunak <l.lunak@kde.org> |
31 | */ |
32 | class KWINDOWSYSTEM_EXPORT KXMessages : public QObject |
33 | { |
34 | Q_OBJECT |
35 | public: |
36 | /** |
37 | * Creates an instance which will receive X messages. |
38 | * |
39 | * @param accept_broadcast if non-nullptr, all broadcast messages with |
40 | * this message type will be received. |
41 | * @param parent the parent of this widget |
42 | */ |
43 | explicit KXMessages(const char *accept_broadcast = nullptr, QObject *parent = nullptr); |
44 | |
45 | /** |
46 | * @overload |
47 | * Overload passing in the xcb_connection_t to use instead relying on platform xcb. |
48 | * |
49 | * @param connection The xcb connection |
50 | * @param rootWindow The rootWindow to use |
51 | * @param accept_broadcast if non-nullptr, all broadcast messages with |
52 | * this message type will be received. |
53 | * @param parent the parent of this object |
54 | * @since 5.8 |
55 | **/ |
56 | explicit KXMessages(xcb_connection_t *connection, xcb_window_t rootWindow, const char *accept_broadcast = nullptr, QObject *parent = nullptr); |
57 | |
58 | ~KXMessages() override; |
59 | /** |
60 | * Broadcasts the given message with the given message type. |
61 | * @param msg_type the type of the message |
62 | * @param message the message itself |
63 | * @param screen X11 screen to use, -1 for the default |
64 | */ |
65 | void broadcastMessage(const char *msg_type, const QString &message, int screen = -1); |
66 | |
67 | /** |
68 | * Broadcasts the given message with the given message type. |
69 | * |
70 | * @param c X11 connection which will be used instead of |
71 | * QX11Info::connection() |
72 | * @param msg_type the type of the message |
73 | * @param message the message itself |
74 | * @param screenNumber X11 screen to use |
75 | * @return false when an error occurred, true otherwise |
76 | */ |
77 | static bool broadcastMessageX(xcb_connection_t *c, const char *msg_type, const QString &message, int screenNumber); |
78 | |
79 | Q_SIGNALS: |
80 | /** |
81 | * Emitted when a message was received. |
82 | * @param message the message that has been received |
83 | */ |
84 | void gotMessage(const QString &message); |
85 | |
86 | private: |
87 | friend class KXMessagesPrivate; |
88 | KXMessagesPrivate *const d; |
89 | }; |
90 | |
91 | #endif |
92 | #endif |
93 | |