/****************************************************************************+ −
**+ −
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).+ −
** All rights reserved.+ −
** Contact: Nokia Corporation (qt-info@nokia.com)+ −
**+ −
** This file is part of the QtGui module of the Qt Toolkit.+ −
**+ −
** $QT_BEGIN_LICENSE:LGPL$+ −
** No Commercial Usage+ −
** This file contains pre-release code and may not be distributed.+ −
** You may use this file in accordance with the terms and conditions+ −
** contained in the Technology Preview License Agreement accompanying+ −
** this package.+ −
**+ −
** GNU Lesser General Public License Usage+ −
** Alternatively, this file may be used under the terms of the GNU Lesser+ −
** General Public License version 2.1 as published by the Free Software+ −
** Foundation and appearing in the file LICENSE.LGPL included in the+ −
** packaging of this file. Please review the following information to+ −
** ensure the GNU Lesser General Public License version 2.1 requirements+ −
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.+ −
**+ −
** In addition, as a special exception, Nokia gives you certain additional+ −
** rights. These rights are described in the Nokia Qt LGPL Exception+ −
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.+ −
**+ −
** If you have questions regarding the use of this file, please contact+ −
** Nokia at qt-info@nokia.com.+ −
**+ −
**+ −
**+ −
**+ −
**+ −
**+ −
**+ −
**+ −
** $QT_END_LICENSE$+ −
**+ −
****************************************************************************/+ −
+ −
#ifndef QWSEVENT_QWS_H+ −
#define QWSEVENT_QWS_H+ −
+ −
#include <QtGui/qwsutils_qws.h>+ −
#include <QtGui/qwsprotocolitem_qws.h>+ −
#include <QtCore/qrect.h>+ −
#include <QtGui/qregion.h>+ −
#include <QtCore/qvector.h>+ −
+ −
QT_BEGIN_HEADER+ −
+ −
QT_BEGIN_NAMESPACE+ −
+ −
QT_MODULE(Gui)+ −
+ −
struct QWSMouseEvent;+ −
+ −
struct QWSEvent : QWSProtocolItem {+ −
+ −
QWSEvent(int t, int len, char *ptr) : QWSProtocolItem(t,len,ptr) {}+ −
+ −
+ −
+ −
enum Type {+ −
NoEvent,+ −
Connected,+ −
Mouse,+ −
Focus,+ −
Key,+ −
Region,+ −
Creation,+ −
PropertyNotify,+ −
PropertyReply,+ −
SelectionClear,+ −
SelectionRequest,+ −
SelectionNotify,+ −
MaxWindowRect,+ −
QCopMessage,+ −
WindowOperation,+ −
IMEvent,+ −
IMQuery,+ −
IMInit,+ −
Embed,+ −
Font,+ −
ScreenTransformation,+ −
NEvent+ −
};+ −
+ −
QWSMouseEvent *asMouse()+ −
{ return type == Mouse ? reinterpret_cast<QWSMouseEvent*>(this) : 0; }+ −
int window() { return *(reinterpret_cast<int*>(simpleDataPtr)); }+ −
int window() const { return *(reinterpret_cast<int*>(simpleDataPtr)); }+ −
static QWSEvent *factory(int type);+ −
};+ −
+ −
+ −
//All events must start with windowID+ −
+ −
struct QWSConnectedEvent : QWSEvent {+ −
QWSConnectedEvent()+ −
: QWSEvent(QWSEvent::Connected, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData)) {}+ −
+ −
void setData(const char *d, int len, bool allocateMem = true) {+ −
QWSEvent::setData(d, len, allocateMem);+ −
display = reinterpret_cast<char*>(rawDataPtr);+ −
}+ −
+ −
struct SimpleData {+ −
int window;+ −
int len;+ −
int clientId;+ −
int servershmid;+ −
} simpleData;+ −
+ −
char *display;+ −
};+ −
+ −
struct QWSMaxWindowRectEvent : QWSEvent {+ −
QWSMaxWindowRectEvent()+ −
: QWSEvent(MaxWindowRect, sizeof(simpleData), reinterpret_cast<char*>(&simpleData)) { }+ −
struct SimpleData {+ −
int window;+ −
QRect rect;+ −
} simpleData;+ −
};+ −
+ −
struct QWSMouseEvent : QWSEvent {+ −
QWSMouseEvent()+ −
: QWSEvent(QWSEvent::Mouse, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData)) {}+ −
struct SimpleData {+ −
int window;+ −
int x_root, y_root, state, delta;+ −
int time; // milliseconds+ −
} simpleData;+ −
};+ −
+ −
struct QWSFocusEvent : QWSEvent {+ −
QWSFocusEvent()+ −
: QWSEvent(QWSEvent::Focus, sizeof(simpleData), reinterpret_cast<char*>(&simpleData))+ −
{ memset(reinterpret_cast<char*>(&simpleData),0,sizeof(simpleData)); }+ −
struct SimpleData {+ −
int window;+ −
uint get_focus:1;+ −
} simpleData;+ −
};+ −
+ −
struct QWSKeyEvent: QWSEvent {+ −
QWSKeyEvent()+ −
: QWSEvent(QWSEvent::Key, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData)) {}+ −
struct SimpleData {+ −
int window;+ −
uint keycode;+ −
Qt::KeyboardModifiers modifiers;+ −
ushort unicode;+ −
uint is_press:1;+ −
uint is_auto_repeat:1;+ −
} simpleData;+ −
};+ −
+ −
+ −
struct QWSCreationEvent : QWSEvent {+ −
QWSCreationEvent()+ −
: QWSEvent(QWSEvent::Creation, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData)) {}+ −
struct SimpleData {+ −
int objectid;+ −
int count;+ −
} simpleData;+ −
};+ −
+ −
#ifndef QT_NO_QWS_PROPERTIES+ −
struct QWSPropertyNotifyEvent : QWSEvent {+ −
QWSPropertyNotifyEvent()+ −
: QWSEvent(QWSEvent::PropertyNotify, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData)) {}+ −
enum State {+ −
PropertyNewValue,+ −
PropertyDeleted+ −
};+ −
struct SimpleData {+ −
int window;+ −
int property;+ −
int state;+ −
} simpleData;+ −
};+ −
#endif+ −
+ −
struct QWSSelectionClearEvent : QWSEvent {+ −
QWSSelectionClearEvent()+ −
: QWSEvent(QWSEvent::SelectionClear, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData)) {}+ −
struct SimpleData {+ −
int window;+ −
} simpleData;+ −
};+ −
+ −
struct QWSSelectionRequestEvent : QWSEvent {+ −
QWSSelectionRequestEvent()+ −
: QWSEvent(QWSEvent::SelectionRequest, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData)) {}+ −
struct SimpleData {+ −
int window;+ −
int requestor; // window which wants the selection+ −
int property; // property on requestor into which the selection should be stored, normally QWSProperty::PropSelection+ −
int mimeTypes; // Value is stored in the property mimeType on the requestor window. This value may contain+ −
// multiple mimeTypes separated by ;; where the order reflects the priority+ −
} simpleData;+ −
};+ −
+ −
struct QWSSelectionNotifyEvent : QWSEvent {+ −
QWSSelectionNotifyEvent()+ −
: QWSEvent(QWSEvent::SelectionNotify, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData)) {}+ −
struct SimpleData {+ −
int window;+ −
int requestor; // the window which wanted the selection and to which this event is sent+ −
int property; // property of requestor in which the data of the selection is stored+ −
int mimeType; // a property on the requestor in which the mime type in which the selection is, is stored+ −
} simpleData;+ −
};+ −
+ −
//complex events:+ −
+ −
struct QWSRegionEvent : QWSEvent {+ −
QWSRegionEvent()+ −
: QWSEvent(QWSEvent::Region, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData))+ −
{ memset(reinterpret_cast<char*>(&simpleData),0,sizeof(simpleData)); }+ −
+ −
void setData(const char *d, int len, bool allocateMem = true) {+ −
QWSEvent::setData(d, len, allocateMem);+ −
rectangles = reinterpret_cast<QRect*>(rawDataPtr);+ −
}+ −
+ −
void setData(int winId, const QRegion ®ion, uint type) {+ −
const QVector<QRect> rects = region.rects();+ −
setData(reinterpret_cast<const char*>(rects.constData()),+ −
rects.size() * sizeof(QRect));+ −
simpleData.window = winId;+ −
simpleData.nrectangles = rects.size();+ −
simpleData.type = type;+ −
#ifdef QT_QWS_CLIENTBLIT+ −
simpleData.id = 0;+ −
#endif+ −
}+ −
+ −
enum Type {Allocation+ −
#ifdef QT_QWS_CLIENTBLIT+ −
, DirectPaint+ −
#endif+ −
};+ −
struct SimpleData {+ −
int window;+ −
int nrectangles;+ −
#ifdef QT_QWS_CLIENTBLIT+ −
int id;+ −
#endif+ −
uint type:8;+ −
} simpleData;+ −
+ −
QRect *rectangles;+ −
};+ −
+ −
#ifndef QT_NO_QWSEMBEDWIDGET+ −
struct QWSEmbedEvent : QWSEvent+ −
{+ −
QWSEmbedEvent() : QWSEvent(QWSEvent::Embed, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData))+ −
{}+ −
+ −
enum Type { StartEmbed = 1, StopEmbed = 2, Region = 4 };+ −
+ −
void setData(const char *d, int len, bool allocateMem = true) {+ −
QWSEvent::setData(d, len, allocateMem);+ −
region.setRects(reinterpret_cast<const QRect *>(rawDataPtr),+ −
simpleData.nrectangles);+ −
}+ −
+ −
void setData(int winId, Type type, const QRegion ® = QRegion()) {+ −
simpleData.window = winId;+ −
simpleData.nrectangles = reg.rects().size();+ −
simpleData.type = type;+ −
region = reg;+ −
const QVector<QRect> rects = reg.rects();+ −
QWSEvent::setData(reinterpret_cast<const char*>(rects.data()),+ −
rects.size() * sizeof(QRect));+ −
}+ −
+ −
struct SimpleData {+ −
int window;+ −
int nrectangles;+ −
Type type;+ −
} simpleData;+ −
+ −
QRegion region;+ −
};+ −
#endif // QT_NO_QWSEMBEDWIDGET+ −
+ −
#ifndef QT_NO_QWS_PROPERTIES+ −
struct QWSPropertyReplyEvent : QWSEvent {+ −
QWSPropertyReplyEvent()+ −
: QWSEvent(QWSEvent::PropertyReply, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData)) {}+ −
+ −
void setData(const char *d, int len, bool allocateMem = true) {+ −
QWSEvent::setData(d, len, allocateMem);+ −
data = reinterpret_cast<char*>(rawDataPtr);+ −
}+ −
+ −
struct SimpleData {+ −
int window;+ −
int property;+ −
int len;+ −
} simpleData;+ −
char *data;+ −
};+ −
#endif //QT_NO_QWS_PROPERTIES+ −
+ −
#ifndef QT_NO_COP+ −
struct QWSQCopMessageEvent : QWSEvent {+ −
QWSQCopMessageEvent()+ −
: QWSEvent(QWSEvent::QCopMessage, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData))+ −
{ memset(reinterpret_cast<char*>(&simpleData),0,sizeof(simpleData)); }+ −
+ −
void setData(const char *d, int len, bool allocateMem = true) {+ −
QWSEvent::setData(d, len, allocateMem);+ −
char* p = rawDataPtr;+ −
channel = QByteArray(p, simpleData.lchannel);+ −
p += simpleData.lchannel;+ −
message = QByteArray(p, simpleData.lmessage);+ −
p += simpleData.lmessage;+ −
data = QByteArray(p, simpleData.ldata);+ −
}+ −
+ −
void setDataDirect(const char *d, int len) {+ −
QWSEvent::setData(d, len, false);+ −
deleteRaw = true;+ −
}+ −
+ −
struct SimpleData {+ −
bool is_response;+ −
int lchannel;+ −
int lmessage;+ −
int ldata;+ −
} simpleData;+ −
+ −
QByteArray channel;+ −
QByteArray message;+ −
QByteArray data;+ −
};+ −
+ −
#endif+ −
+ −
struct QWSWindowOperationEvent : QWSEvent {+ −
QWSWindowOperationEvent()+ −
: QWSEvent(WindowOperation, sizeof(simpleData), reinterpret_cast<char*>(&simpleData)) { }+ −
+ −
enum Operation { Show, Hide, ShowMaximized, ShowNormal, ShowMinimized, Close };+ −
struct SimpleData {+ −
int window;+ −
Operation op;+ −
} simpleData;+ −
};+ −
+ −
#ifndef QT_NO_QWS_INPUTMETHODS+ −
+ −
+ −
struct QWSIMEvent : QWSEvent {+ −
QWSIMEvent()+ −
: QWSEvent(IMEvent, sizeof(simpleData), reinterpret_cast<char*>(&simpleData))+ −
{ memset(reinterpret_cast<char*>(&simpleData),0,sizeof(simpleData)); }+ −
+ −
struct SimpleData {+ −
int window;+ −
int replaceFrom;+ −
int replaceLength;+ −
} simpleData;+ −
+ −
void setData(const char *d, int len, bool allocateMem = true) {+ −
QWSEvent::setData(d, len, allocateMem);+ −
streamingData = QByteArray::fromRawData(rawDataPtr, len);+ −
}+ −
QByteArray streamingData;+ −
};+ −
+ −
+ −
struct QWSIMInitEvent : QWSEvent {+ −
QWSIMInitEvent()+ −
: QWSEvent(IMInit, sizeof(simpleData), reinterpret_cast<char*>(&simpleData))+ −
{ memset(reinterpret_cast<char*>(&simpleData),0,sizeof(simpleData)); }+ −
+ −
struct SimpleData {+ −
int window;+ −
int existence;+ −
} simpleData;+ −
+ −
void setData(const char *d, int len, bool allocateMem = true) {+ −
QWSEvent::setData(d, len, allocateMem);+ −
streamingData = QByteArray::fromRawData(rawDataPtr, len);+ −
}+ −
QByteArray streamingData;+ −
};+ −
+ −
+ −
struct QWSIMQueryEvent : QWSEvent {+ −
QWSIMQueryEvent()+ −
: QWSEvent(QWSEvent::IMQuery, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData)) {}+ −
+ −
struct SimpleData {+ −
int window;+ −
int property;+ −
} simpleData;+ −
+ −
};+ −
+ −
#endif+ −
+ −
struct QWSFontEvent : QWSEvent {+ −
QWSFontEvent()+ −
: QWSEvent(QWSEvent::Font, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData)) {}+ −
+ −
enum EventType {+ −
FontRemoved+ −
};+ −
+ −
void setData(const char *d, int len, bool allocateMem = true) {+ −
QWSEvent::setData(d, len, allocateMem);+ −
fontName = QByteArray::fromRawData(rawDataPtr, len);+ −
}+ −
+ −
struct SimpleData {+ −
uchar type;+ −
} simpleData;+ −
QByteArray fontName;+ −
};+ −
+ −
struct QWSScreenTransformationEvent : QWSEvent {+ −
QWSScreenTransformationEvent()+ −
: QWSEvent(QWSEvent::ScreenTransformation, sizeof(simpleData),+ −
reinterpret_cast<char*>(&simpleData)) {}+ −
+ −
struct SimpleData {+ −
int screen;+ −
int transformation;+ −
} simpleData;+ −
};+ −
+ −
QT_END_NAMESPACE+ −
+ −
QT_END_HEADER+ −
+ −
#endif // QWSEVENT_QWS_H+ −