summaryrefslogtreecommitdiffstats
path: root/src/gui/embedded/qwindowsystem_p.h
diff options
context:
space:
mode:
authorQt by Nokia <qt-info@nokia.com>2011-04-27 12:05:43 +0200
committeraxis <qt-info@nokia.com>2011-04-27 12:05:43 +0200
commit38be0d13830efd2d98281c645c3a60afe05ffece (patch)
tree6ea73f3ec77f7d153333779883e8120f82820abe /src/gui/embedded/qwindowsystem_p.h
Initial import from the monolithic Qt.
This is the beginning of revision history for this module. If you want to look at revision history older than this, please refer to the Qt Git wiki for how to use Git history grafting. At the time of writing, this wiki is located here: http://qt.gitorious.org/qt/pages/GitIntroductionWithQt If you have already performed the grafting and you don't see any history beyond this commit, try running "git log" with the "--follow" argument. Branched from the monolithic repo, Qt master branch, at commit 896db169ea224deb96c59ce8af800d019de63f12
Diffstat (limited to 'src/gui/embedded/qwindowsystem_p.h')
-rw-r--r--src/gui/embedded/qwindowsystem_p.h315
1 files changed, 315 insertions, 0 deletions
diff --git a/src/gui/embedded/qwindowsystem_p.h b/src/gui/embedded/qwindowsystem_p.h
new file mode 100644
index 0000000000..31190033f2
--- /dev/null
+++ b/src/gui/embedded/qwindowsystem_p.h
@@ -0,0 +1,315 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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 QWINDOWSYSTEM_QWS_P_H
+#define QWINDOWSYSTEM_QWS_P_H
+
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of the QWSServer class. This header file may change from
+// version to version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "private/qobject_p.h"
+#include "qwindowsystem_qws.h"
+#include "qbrush.h"
+#include "qwsproperty_qws.h"
+#include "qwscommand_qws_p.h"
+#include "QtCore/qbasictimer.h"
+
+QT_BEGIN_NAMESPACE
+
+class QWSServerPrivate : public QObjectPrivate {
+ friend class QCopChannel;
+ friend class QWSMouseHandler;
+ friend class QWSWindow;
+ friend class QWSDisplay;
+ friend class QWSInputMethod;
+ Q_DECLARE_PUBLIC(QWSServer)
+
+public:
+ QWSServerPrivate()
+ : screensaverintervals(0)
+ , screensavereventblocklevel(-1), screensaverblockevents(false)
+ , saver(0), cursorClient(0), mouseState(0), nReserved(0)
+ , doClientIsActive(false)
+ {
+ }
+ ~QWSServerPrivate()
+ {
+ closeDisplay();
+
+ qDeleteAll(deletedWindows);
+ delete [] screensaverintervals;
+ delete saver;
+
+ qDeleteAll(windows);
+ windows.clear();
+
+ delete bgBrush;
+ bgBrush = 0;
+ }
+ QTime screensavertime;
+ QTimer* screensavertimer;
+ int* screensaverintervals;
+ int screensavereventblocklevel;
+ bool screensaverblockevents;
+ bool screensaverblockevent( int index, int *screensaverinterval, bool isDown );
+ QWSScreenSaver* saver;
+ QWSClient *cursorClient;
+ int mouseState;
+// bool prevWin;
+ QList<QWSWindow*> deletedWindows;
+ QList<int> crashedClientIds;
+
+ void update_regions();
+//private functions moved from class
+
+private:
+ void initServer(int flags);
+#ifndef QT_NO_COP
+ static void sendQCopEvent(QWSClient *c, const QString &ch,
+ const QString &msg, const QByteArray &data,
+ bool response = false);
+#endif
+ void move_region(const QWSRegionMoveCommand *);
+ void set_altitude(const QWSChangeAltitudeCommand *);
+ void set_opacity(const QWSSetOpacityCommand *);
+ void request_focus(const QWSRequestFocusCommand *);
+ QRegion reserve_region(QWSWindow *window, const QRegion &region);
+ void request_region(int winId, const QString &surfaceKey,
+ const QByteArray &surfaceData,
+ const QRegion &region);
+ void repaint_region(int winId, int windowFlags, bool opaque, const QRegion &);
+ void destroy_region(const QWSRegionDestroyCommand *);
+ void name_region(const QWSRegionNameCommand *);
+ void set_identity(const QWSIdentifyCommand *);
+#ifndef QT_NO_QWS_PROPERTIES
+ bool get_property(int winId, int property, const char *&data, int &len);
+#endif
+#ifndef QT_NO_QWS_INPUTMETHODS
+ void im_response(const QWSIMResponseCommand *);
+
+ void im_update(const QWSIMUpdateCommand *);
+
+ void send_im_mouse(const QWSIMMouseCommand *);
+#endif
+ // not in ifndef as this results in more readable functions.
+ static void sendKeyEventUnfiltered(int unicode, int keycode, Qt::KeyboardModifiers modifiers,
+ bool isPress, bool autoRepeat);
+ static void sendMouseEventUnfiltered(const QPoint &pos, int state, int wheel = 0);
+ static void emergency_cleanup();
+
+ static QBrush *bgBrush;
+
+ void sendMaxWindowRectEvents(const QRect &rect);
+
+ void invokeIdentify(const QWSIdentifyCommand *cmd, QWSClient *client);
+ void invokeCreate(QWSCreateCommand *cmd, QWSClient *client);
+ void invokeRegionName(const QWSRegionNameCommand *cmd, QWSClient *client);
+ void invokeRegion(QWSRegionCommand *cmd, QWSClient *client);
+ void invokeRegionMove(const QWSRegionMoveCommand *cmd, QWSClient *client);
+ void invokeRegionDestroy(const QWSRegionDestroyCommand *cmd, QWSClient *client);
+ void invokeSetAltitude(const QWSChangeAltitudeCommand *cmd, QWSClient *client);
+ void invokeSetOpacity(const QWSSetOpacityCommand *cmd, QWSClient *client);
+#ifndef QT_NO_QWS_PROPERTIES
+ void invokeAddProperty(QWSAddPropertyCommand *cmd);
+ void invokeSetProperty(QWSSetPropertyCommand *cmd);
+ void invokeRemoveProperty(QWSRemovePropertyCommand *cmd);
+ void invokeGetProperty(QWSGetPropertyCommand *cmd, QWSClient *client);
+#endif //QT_NO_QWS_PROPERTIES
+ void invokeSetSelectionOwner(QWSSetSelectionOwnerCommand *cmd);
+ void invokeConvertSelection(QWSConvertSelectionCommand *cmd);
+ void invokeSetFocus(const QWSRequestFocusCommand *cmd, QWSClient *client);
+
+ void initIO();
+ void setFocus(QWSWindow*, bool gain);
+#ifndef QT_NO_QWS_CURSOR
+ void invokeDefineCursor(QWSDefineCursorCommand *cmd, QWSClient *client);
+ void invokeSelectCursor(QWSSelectCursorCommand *cmd, QWSClient *client);
+ void invokePositionCursor(QWSPositionCursorCommand *cmd, QWSClient *client);
+#endif
+ void invokeGrabMouse(QWSGrabMouseCommand *cmd, QWSClient *client);
+ void invokeGrabKeyboard(QWSGrabKeyboardCommand *cmd, QWSClient *client);
+#ifndef QT_NO_SOUND
+ void invokePlaySound(QWSPlaySoundCommand *cmd, QWSClient *client);
+#endif
+#ifndef QT_NO_COP
+ void invokeRegisterChannel(QWSQCopRegisterChannelCommand *cmd,
+ QWSClient *client);
+ void invokeQCopSend(QWSQCopSendCommand *cmd, QWSClient *client);
+#endif
+ void invokeRepaintRegion(QWSRepaintRegionCommand *cmd,
+ QWSClient *client);
+#ifndef QT_NO_QWSEMBEDWIDGET
+ void invokeEmbed(QWSEmbedCommand *cmd, QWSClient *client);
+#endif
+#ifndef QT_NO_QWS_INPUTMETHODS
+ void invokeIMResponse(const QWSIMResponseCommand *cmd,
+ QWSClient *client);
+ void invokeIMUpdate(const QWSIMUpdateCommand *cmd,
+ QWSClient *client);
+#endif
+ void invokeFont(const QWSFontCommand *cmd, QWSClient *client);
+ void invokeScreenTransform(const QWSScreenTransformCommand *cmd,
+ QWSClient *client);
+
+ QWSMouseHandler* newMouseHandler(const QString& spec);
+ void openDisplay();
+ void closeDisplay();
+
+ void showCursor();
+ void hideCursor();
+ void initializeCursor();
+
+ void resetEngine();
+
+//private Q_SLOTS:
+
+#ifndef QT_NO_QWS_MULTIPROCESS
+ void _q_clientClosed();
+ void _q_doClient();
+ void _q_deleteWindowsLater();
+#endif
+
+ void _q_screenSaverWake();
+ void _q_screenSaverSleep();
+ void _q_screenSaverTimeout();
+#ifndef QT_NO_QWS_MULTIPROCESS
+ void _q_newConnection();
+#endif
+
+//other private moved from class
+
+ void disconnectClient(QWSClient *);
+ void screenSave(int level);
+ void doClient(QWSClient *);
+ typedef QMap<int,QWSClient*>::Iterator ClientIterator;
+ typedef QMap<int,QWSClient*> ClientMap;
+ void handleWindowClose(QWSWindow *w);
+ void releaseMouse(QWSWindow* w);
+ void releaseKeyboard(QWSWindow* w);
+ void updateClientCursorPos();
+
+ uchar* sharedram;
+ int ramlen;
+
+ ClientMap clientMap;
+#ifndef QT_NO_QWS_PROPERTIES
+ QWSPropertyManager propertyManager;
+#endif
+ struct SelectionOwner {
+ int windowid;
+ struct Time {
+ void set(int h, int m, int s, int s2) {
+ hour = h; minute = m; sec = s; ms = s2;
+ }
+ int hour, minute, sec, ms;
+ } time;
+ } selectionOwner;
+ QTime timer;
+ int* screensaverinterval;
+
+ QWSWindow *focusw;
+ QWSWindow *mouseGrabber;
+ bool mouseGrabbing;
+ bool inputMethodMouseGrabbed;
+ int swidth, sheight, sdepth;
+#ifndef QT_NO_QWS_CURSOR
+ bool haveviscurs;
+ QWSCursor *cursor; // cursor currently shown
+ QWSCursor *nextCursor; // cursor to show once grabbing is off
+#endif
+
+ bool disablePainting;
+ QList<QWSMouseHandler*> mousehandlers;
+#ifndef QT_NO_QWS_KEYBOARD
+ QList<QWSKeyboardHandler*> keyboardhandlers;
+#endif
+
+ QList<QWSCommandStruct*> commandQueue;
+
+ // Window management
+ QList<QWSWindow*> windows; // first=topmost
+ int nReserved;
+ QWSWindow* newWindow(int id, QWSClient* client);
+ QWSWindow* findWindow(int windowid, QWSClient* client = 0);
+ void moveWindowRegion(QWSWindow*, int dx, int dy);
+ void setWindowRegion(QWSWindow*, const QRegion &r);
+ void raiseWindow(QWSWindow *, int = 0);
+ void lowerWindow(QWSWindow *, int = -1);
+ void exposeRegion(const QRegion &, int index = 0);
+
+ void setCursor(QWSCursor *curs);
+
+ // multimedia
+#ifndef QT_NO_SOUND
+ QWSSoundServer *soundserver;
+#endif
+#ifndef QT_NO_COP
+ QMap<QString, QList<QWSClient*> > channels;
+#endif
+
+#ifndef QT_NO_QWS_MULTIPROCESS
+ QWSServerSocket *ssocket;
+#endif
+
+ // filename -> refcount
+ QMap<QByteArray, int> fontReferenceCount;
+ QBasicTimer fontCleanupTimer;
+ void referenceFont(QWSClientPrivate *client, const QByteArray &font);
+ void dereferenceFont(QWSClientPrivate *client, const QByteArray &font);
+ void cleanupFonts(bool force = false);
+ void sendFontRemovedEvent(const QByteArray &font);
+
+ bool doClientIsActive;
+ QList<QWSClient*> pendingDoClients;
+};
+
+QT_END_NAMESPACE
+
+#endif