1 /****************************************************************************
2 **
3 ** Copyright (C) 2015 The Qt Company Ltd.
4 ** Contact: http://www.qt.io/licensing/
5 **
6 ** This file is part of the QtGui module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see http://www.qt.io/terms-conditions. For further
15 ** information use the contact form at http://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 or version 3 as published by the Free
20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and
21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the
22 ** following information to ensure the GNU Lesser General Public License
23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25 **
26 ** As a special exception, The Qt Company gives you certain additional
27 ** rights. These rights are described in The Qt Company LGPL Exception
28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29 **
30 ** GNU General Public License Usage
31 ** Alternatively, this file may be used under the terms of the GNU
32 ** General Public License version 3.0 as published by the Free Software
33 ** Foundation and appearing in the file LICENSE.GPL included in the
34 ** packaging of this file.  Please review the following information to
35 ** ensure the GNU General Public License version 3.0 requirements will be
36 ** met: http://www.gnu.org/copyleft/gpl.html.
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 #include "qwsevent_qws.h"
43 
44 QT_BEGIN_NAMESPACE
45 
factory(int type)46 QWSEvent *QWSEvent::factory(int type)
47 {
48     QWSEvent *event = 0;
49     switch (type) {
50     case QWSEvent::Connected:
51         event = new QWSConnectedEvent;
52         break;
53     case QWSEvent::MaxWindowRect:
54         event = new QWSMaxWindowRectEvent;
55         break;
56     case QWSEvent::Mouse:
57         event = new QWSMouseEvent;
58         break;
59     case QWSEvent::Focus:
60         event = new QWSFocusEvent;
61         break;
62     case QWSEvent::Key:
63         event = new QWSKeyEvent;
64         break;
65     case QWSEvent::Region:
66         event = new QWSRegionEvent;
67         break;
68     case QWSEvent::Creation:
69         event = new QWSCreationEvent;
70         break;
71 #ifndef QT_NO_QWS_PROPERTIES
72     case QWSEvent::PropertyNotify:
73         event = new QWSPropertyNotifyEvent;
74         break;
75     case QWSEvent::PropertyReply:
76         event = new QWSPropertyReplyEvent;
77         break;
78 #endif // QT_NO_QWS_PROPERTIES
79     case QWSEvent::SelectionClear:
80         event = new QWSSelectionClearEvent;
81         break;
82     case QWSEvent::SelectionRequest:
83         event = new QWSSelectionRequestEvent;
84         break;
85     case QWSEvent::SelectionNotify:
86         event = new QWSSelectionNotifyEvent;
87         break;
88 #ifndef QT_NO_COP
89     case QWSEvent::QCopMessage:
90         event = new QWSQCopMessageEvent;
91         break;
92 #endif
93     case QWSEvent::WindowOperation:
94         event = new QWSWindowOperationEvent;
95         break;
96 
97 #ifndef QT_NO_QWS_INPUTMETHODS
98     case QWSEvent::IMEvent:
99         event = new QWSIMEvent;
100         break;
101     case QWSEvent::IMQuery:
102         event = new QWSIMQueryEvent;
103         break;
104     case QWSEvent::IMInit:
105         event = new QWSIMInitEvent;
106         break;
107 #endif
108 #ifndef QT_NO_QWSEMBEDWIDGET
109     case QWSEvent::Embed:
110         event = new QWSEmbedEvent;
111         break;
112 #endif
113     case QWSEvent::Font:
114         event = new QWSFontEvent;
115         break;
116     case QWSEvent::ScreenTransformation:
117         event = new QWSScreenTransformationEvent;
118         break;
119     default:
120         qCritical("QWSEvent::factory() : Unknown event type %08x!", type);
121     }
122     return event;
123 }
124 
125 /*!
126     \class QWSEvent
127     \ingroup qws
128 
129     \brief The QWSEvent class encapsulates an event in Qt for Embedded Linux.
130 
131     When running a \l{Qt for Embedded Linux} application, it either runs as a
132     server or connects to an existing server. All system generated
133     events are passed to the server application which then propagates
134     the event to the appropriate client.
135 
136     Whenever the server receives an event, it queries its stack of
137     top-level windows to find the window containing the event's
138     position. Each window can identify the client application that
139     created it, and returns its ID to the server upon
140     request. Finally, the server forwards the event, encapsulated by
141     an instance of the QWSEvent class, to the appropriate client.
142 
143     \image qt-embedded-client.png
144 
145     The server communicates with the client applications over the UNIX
146     domain socket. You can retrieve direct access to all the events a
147     client receives from the server, by reimplementing QApplication's
148     \l {QApplication::}{qwsEventFilter()} function.
149 
150     QWSEvent provides the \l Type enum specifying the origin of the
151     event. Internally, each type is represented by a QWSEvent
152     subclass, e.g., \c QWSKeyEvent.
153 
154     \sa QWSServer, QWSClient, {Qt for Embedded Linux Architecture}
155 */
156 
157 /*!
158     \enum QWSEvent::Type
159 
160     This enum describes the origin of the event.
161 
162     \value NoEvent No event has occurred.
163     \value Connected An application has connected to the server.
164     \value Mouse A mouse button is pressed or released, or the mouse cursor is moved.
165              See also \l{Qt for Embedded Linux Pointer Handling}.
166     \value Focus A window has lost or received focus.
167     \value Key A key is pressed or released. See also \l{Qt for Embedded Linux Character Input}.
168     \value Region A region has changed.
169     \value Creation The server has created an ID, typically for a window.
170     \value PropertyNotify A property has changed.
171     \value PropertyReply The server is responding to a request for a property's value.
172     \value SelectionClear A selection is deleted.
173     \value SelectionRequest The server has queried for a selection.
174     \value SelectionNotify A new selection has been created.
175     \value MaxWindowRect The server has changed the maximum window for an application.
176     \value QCopMessage A new Qt Cop message has appeared. See also QCopChannel
177     \value WindowOperation A window operation, e.g. resizing, has occurred.
178     \value IMEvent An input method has been used  to enter text for languages with
179               non-Latin alphabets. See also QWSInputMethod.
180     \value IMQuery An input method query for a specified property has occurred.
181              See also QWSInputMethod.
182     \value NEvent The number of events has changed.
183     \value Embed An event used internally to implement embedded windows. See also
184            QWSEmbedWidget.
185     \value ScreenTransformation An event used internally to notify the client processes
186     that the screen has changed for example, rotation, etc.
187     \omitvalue Font
188     \omitvalue IMInit
189 */
190 
191 /*!
192    \fn  QWSMouseEvent *QWSEvent::asMouse()
193    \internal
194 */
195 
196 /*!
197    \fn  int QWSEvent::window()
198    \internal
199 */
200 
201 /*!
202    \fn  int QWSEvent::window() const
203    \internal
204 */
205 
206 /*!
207    \fn  QWSEvent *QWSEvent::factory(int type)
208    \internal
209 */
210 
211 /*!
212    \fn  QWSEvent::QWSEvent( int t, int len, char * ptr)
213    \internal
214 */
215 
216 QT_END_NAMESPACE
217