diff options
author | Marius Bugge Monsen <mmonsen@trolltech.com> | 2010-02-10 14:42:20 +0100 |
---|---|---|
committer | Marius Bugge Monsen <mmonsen@trolltech.com> | 2010-02-10 14:42:20 +0100 |
commit | 835a1416e58a6facf10550d830546433aaca1b43 (patch) | |
tree | e7de63d48aa976b58d098f217f3f7e1f52b94281 | |
parent | 1f4a0e464aa766bfe58f2a8d1246a204678239bc (diff) |
Add license header to the protocol.
-rw-r--r-- | protocol.h | 89 | ||||
-rw-r--r-- | qgraphicssystem_dd.cpp | 75 | ||||
-rw-r--r-- | qgraphicssystem_dd.h | 5 |
3 files changed, 128 insertions, 41 deletions
@@ -1,7 +1,49 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 PROTOCOL_H #define PROTOCOL_H #include <QtCore/QRectF> +#include <QtCore/QDataStream> struct Message { @@ -13,12 +55,14 @@ struct Message EventMessage }; - inline Message(MessageType message = InvalidMessage, quint16 type = -1, quint32 id = -1, const QRectF &rect = QRectF()) - : message(message), type(type), id(id), rect(rect) {} + inline Message(MessageType message = InvalidMessage, quint16 type = -1, quint32 id = -1, + quint32 value = 0, const QRectF &rect = QRectF()) + : message(message), type(type), id(id), value(value), rect(rect) {} quint16 message; quint16 type; quint32 id; + quint32 value; QRectF rect; }; @@ -27,18 +71,19 @@ struct Request : public Message enum RequestType { InvalidRequest, - CreateRequest, - DestroyRequest, - ShowRequest, - HideRequest, - RaiseRequest, - LowerRequest, - UpdateRequest, - SetGeometryRequest, + CreateWindowRequest, + DestroyWindowRequest, + ShowWindowRequest, + HideWindowRequest, + RaiseWindowRequest, + LowerWindowRequest, + UpdateWindowRequest, + SetWindowGeometryRequest, }; - inline Request(RequestType type = InvalidRequest, quint32 id = -1, const QRectF &rect = QRectF()) - : Message(RequestMessage, type, id, rect) {} + inline Request(RequestType type = InvalidRequest, quint32 id = -1, + quint32 value = 0, const QRectF &rect = QRectF()) + : Message(RequestMessage, type, id, value, rect) {} }; struct Response : public Message @@ -46,11 +91,12 @@ struct Response : public Message enum ResponseType { InvalidResponse, - CreatedResponse + CreatedWindowResponse }; - inline Response(ResponseType type = InvalidResponse, quint32 id = -1, const QRectF &rect = QRectF()) - : Message(ResponseMessage, type, id, rect) {} + inline Response(ResponseType type = InvalidResponse, quint32 id = -1, + quint32 value = 0, const QRectF &rect = QRectF()) + : Message(ResponseMessage, type, id, value, rect) {} }; struct Event : public Message @@ -59,16 +105,17 @@ struct Event : public Message { InvalidEvent, ErrorEvent, - ShowEvent, - HideEvent, - PaintEvent, GeometryChangeEvent, MousePressEvent, MouseReleaseEvent, + MouseMoveEvent, + KeyPressEvent, + KeyReleaseEvent }; - inline Event(EventType type = InvalidEvent, quint32 id = -1, const QRectF &rect = QRectF()) - : Message(EventMessage, type, id, rect) {} + inline Event(EventType type = InvalidEvent, quint32 id = -1, + quint32 value = 0, const QRectF &rect = QRectF()) + : Message(EventMessage, type, id, value, rect) {} }; inline QDataStream &operator>>(QDataStream &in, Message &message) @@ -76,6 +123,7 @@ inline QDataStream &operator>>(QDataStream &in, Message &message) in >> message.message; in >> message.type; in >> message.id; + in >> message.value; in >> message.rect; return in; } @@ -85,6 +133,7 @@ inline QDataStream &operator<<(QDataStream &out, const Message &message) out << message.message; out << message.type; out << message.id; + out << message.value; out << message.rect; return out; } diff --git a/qgraphicssystem_dd.cpp b/qgraphicssystem_dd.cpp index 28f8c18..8916ba9 100644 --- a/qgraphicssystem_dd.cpp +++ b/qgraphicssystem_dd.cpp @@ -63,7 +63,7 @@ QDevDaysWindowSurface::QDevDaysWindowSurface(QWidget *window, QDevDaysGraphicsSy { quint32 parentId = system->m_ids.value(window->parentWidget(), 0); - Request request(Request::CreateRequest, parentId); + Request request(Request::CreateWindowRequest, parentId); system->sendRequest(request); Response response; @@ -76,7 +76,7 @@ QDevDaysWindowSurface::QDevDaysWindowSurface(QWidget *window, QDevDaysGraphicsSy QDevDaysWindowSurface::~QDevDaysWindowSurface() { - Request request(Request::DestroyRequest, m_id); + Request request(Request::DestroyWindowRequest, m_id); m_system->sendRequest(request); m_system->m_surfaces.remove(m_id); m_system->m_ids.remove(window()); @@ -95,7 +95,7 @@ void QDevDaysWindowSurface::flush(QWidget *widget, const QRegion ®ion, const Q_UNUSED(offset); qDebug() << "WINDOW: flush"; // send an update request to the server - Request request(Request::UpdateRequest, m_id); // ### rect + Request request(Request::UpdateWindowRequest, m_id); // ### rect m_system->sendRequest(request); // we don't expect any response } @@ -104,21 +104,22 @@ void QDevDaysWindowSurface::setGeometry(const QRect &rect) { qDebug() << "WINDOW: setGeometry"; QWindowSurface::setGeometry(rect); + qDebug() << "WINDOW: geometry" << geometry(); // create or resize the shared memory qint32 byteCount = rect.width() * rect.height() * sizeof(quint32); // ### server should hold the pixel format qDebug() << "WINDOW: byte count" << byteCount; if (byteCount > m_shared.size()) { - if (m_shared.key().isEmpty()) - m_shared.setKey(QString::number(m_id)); - else - m_shared.detach(); + if (!m_shared.key().isEmpty()) + m_shared.setKey(QString()); // detach + m_shared.setKey(QString::number(m_id)); if (!m_shared.create(byteCount) && !m_shared.attach()) qWarning() << m_shared.errorString() << m_shared.key(); qDebug() << "WINDOW: data" << m_shared.data() << "key" << m_shared.key(); + Q_ASSERT(m_shared.data()); } - Request request(Request::SetGeometryRequest, m_id, rect); + Request request(Request::SetWindowGeometryRequest, m_id, 0, rect); m_system->sendRequest(request); } @@ -151,7 +152,7 @@ void QDevDaysWindowSurface::endPaint(const QRegion ®ion) else qDebug() << "WINDOW: failed to unlock shared memory"; } - +/* void QDevDaysWindowSurface::handleMouseEvent(const Event &event) { QEvent::Type type = QEvent::None; @@ -163,6 +164,9 @@ void QDevDaysWindowSurface::handleMouseEvent(const Event &event) case Event::MouseReleaseEvent: type = QEvent::MouseButtonPress; break; + case Event::MouseMoveEvent: + type = QEvent::MouseMove; + break; default: break; } @@ -170,11 +174,28 @@ void QDevDaysWindowSurface::handleMouseEvent(const Event &event) QApplicationPrivate::handleMouseEvent(window(), mouseEvent); } +void QDevDaysWindowSurface::handleKeyEvent(const Event &event) +{ + QEvent::Type type = QEvent::None; + quint32 key = 0; + + switch (event.type) { + case Event::KeyPressEvent: + type = QEvent::KeyPress; + break; + case Event::KeyReleaseEvent: + type = QEvent::KeyRelease; + break; + } + QKeyEvent keyEvent(type, key, Qt::NoModifier, QString(), true, 0); + QApplicationPrivate::handleKeyEvent(window(), keyEvent); +} + void QDevDaysWindowSurface::handleGeometryChanged(const Event &event) { QApplicationPrivate::handleGeometryChange(window(), event.rect.toRect()); } - +*/ // // graphics system // @@ -256,22 +277,38 @@ void QDevDaysGraphicsSystem::eventDispatcher() QDataStream in(&m_connection); in >> m_message; switch (m_message.message) { - case Event::EventMessage: - qDebug() << "SYSTEM: received event" << m_message.type; + case Event::EventMessage: { QDevDaysWindowSurface *surface = m_surfaces.value(m_message.id); + QWidget *window = surface ? surface->window() : 0; + qDebug() << "SYSTEM: received event" << m_message.type << window; switch (m_message.type) { + case Event::GeometryChangeEvent: { + QApplicationPrivate::handleGeometryChange(window, m_message.rect.toRect()); + break; } case Event::MousePressEvent: { - // ### we don't support multiple buttons or keyboard modifiers - QMouseEvent me(QEvent::MouseButtonPress, m_message.rect.topLeft().toPoint(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier); - QApplicationPrivate::handleMouseEvent(surface->window(), me); + // ### we don't support multiple buttons or any keyboard modifiers + QPoint pos = m_message.rect.topLeft().toPoint(); + QMouseEvent me(QEvent::MouseButtonPress, pos, pos + window->pos(), + Qt::LeftButton, Qt::NoButton, Qt::NoModifier); + QApplicationPrivate::handleMouseEvent(window, me); break; } case Event::MouseReleaseEvent: { - // ### we don't support multiple buttons or keyboard modifiers - QMouseEvent me(QEvent::MouseButtonRelease, m_message.rect.topLeft().toPoint(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier); - QApplicationPrivate::handleMouseEvent(surface->window(), me); + // ### we don't support multiple buttons or any keyboard modifiers + QPoint pos = m_message.rect.topLeft().toPoint(); + QMouseEvent me(QEvent::MouseButtonRelease, pos, pos + window->pos(), + Qt::LeftButton, Qt::NoButton, Qt::NoModifier); + QApplicationPrivate::handleMouseEvent(window, me); + break; } + case Event::KeyPressEvent: { + QKeyEvent ke(QEvent::KeyPress, m_message.value, Qt::NoModifier); + QApplicationPrivate::handleKeyEvent(window, &ke); + break; } + case Event::KeyReleaseEvent: { + QKeyEvent ke(QEvent::KeyRelease, m_message.value, Qt::NoModifier); + QApplicationPrivate::handleKeyEvent(window, &ke); break; } } - break; + break; } case Response::ResponseMessage: case Request::RequestMessage: default: diff --git a/qgraphicssystem_dd.h b/qgraphicssystem_dd.h index 9e8af8a..5fd2045 100644 --- a/qgraphicssystem_dd.h +++ b/qgraphicssystem_dd.h @@ -69,8 +69,9 @@ public: void endPaint(const QRegion ®ion); // event handlers - void handleMouseEvent(const Event &event); - void handleGeometryChanged(const Event &event); + //void handleMouseEvent(const Event &event); + //void handleKeyEvent(const Event &event); + //void handleGeometryChanged(const Event &event); private: QDevDaysGraphicsSystem *m_system; |