diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2011-05-07 00:02:01 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@nokia.com> | 2011-05-07 00:02:01 +0200 |
commit | f67b8df3ebdba2d398b9cce686b7c644adffff08 (patch) | |
tree | 062dd469f7cf8daa01a32d3e7b767b8fbdb7573a /src/widgets/statemachine/qguistatemachine.cpp | |
parent | 32ce4fe9e6a94e77828e976776cf08da85254ff2 (diff) |
library split
Diffstat (limited to 'src/widgets/statemachine/qguistatemachine.cpp')
-rw-r--r-- | src/widgets/statemachine/qguistatemachine.cpp | 500 |
1 files changed, 500 insertions, 0 deletions
diff --git a/src/widgets/statemachine/qguistatemachine.cpp b/src/widgets/statemachine/qguistatemachine.cpp new file mode 100644 index 0000000000..031c135158 --- /dev/null +++ b/src/widgets/statemachine/qguistatemachine.cpp @@ -0,0 +1,500 @@ +/**************************************************************************** +** +** 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$ +** +****************************************************************************/ + +#include <QtCore/qstatemachine.h> + +#ifndef QT_NO_STATEMACHINE + +#include <private/qstatemachine_p.h> +#include <QtGui/qevent.h> +#include <QtGui/qgraphicssceneevent.h> + +QT_BEGIN_NAMESPACE + +Q_CORE_EXPORT const QStateMachinePrivate::Handler *qcoreStateMachineHandler(); + +static QEvent *cloneEvent(QEvent *e) +{ + switch (e->type()) { + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + case QEvent::MouseButtonDblClick: + case QEvent::MouseMove: + return new QMouseEvent(*static_cast<QMouseEvent*>(e)); + case QEvent::KeyPress: + case QEvent::KeyRelease: + return new QKeyEvent(*static_cast<QKeyEvent*>(e)); + case QEvent::FocusIn: + case QEvent::FocusOut: + return new QFocusEvent(*static_cast<QFocusEvent*>(e)); + case QEvent::Enter: + return new QEvent(*e); + case QEvent::Leave: + return new QEvent(*e); + break; + case QEvent::Paint: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; + case QEvent::Move: + return new QMoveEvent(*static_cast<QMoveEvent*>(e)); + case QEvent::Resize: + return new QResizeEvent(*static_cast<QResizeEvent*>(e)); + case QEvent::Create: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; + case QEvent::Destroy: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; + case QEvent::Show: + return new QShowEvent(*static_cast<QShowEvent*>(e)); + case QEvent::Hide: + return new QHideEvent(*static_cast<QHideEvent*>(e)); + case QEvent::Close: + return new QCloseEvent(*static_cast<QCloseEvent*>(e)); + case QEvent::Quit: + return new QEvent(*e); + case QEvent::ParentChange: + return new QEvent(*e); + case QEvent::ParentAboutToChange: + return new QEvent(*e); + case QEvent::ThreadChange: + return new QEvent(*e); + + case QEvent::WindowActivate: + case QEvent::WindowDeactivate: + return new QEvent(*e); + + case QEvent::ShowToParent: + return new QEvent(*e); + case QEvent::HideToParent: + return new QEvent(*e); +#ifndef QT_NO_WHEELEVENT + case QEvent::Wheel: + return new QWheelEvent(*static_cast<QWheelEvent*>(e)); +#endif //QT_NO_WHEELEVENT + case QEvent::WindowTitleChange: + return new QEvent(*e); + case QEvent::WindowIconChange: + return new QEvent(*e); + case QEvent::ApplicationWindowIconChange: + return new QEvent(*e); + case QEvent::ApplicationFontChange: + return new QEvent(*e); + case QEvent::ApplicationLayoutDirectionChange: + return new QEvent(*e); + case QEvent::ApplicationPaletteChange: + return new QEvent(*e); + case QEvent::PaletteChange: + return new QEvent(*e); + case QEvent::Clipboard: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; + case QEvent::Speech: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; + case QEvent::MetaCall: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; + case QEvent::SockAct: + return new QEvent(*e); + case QEvent::WinEventAct: + return new QEvent(*e); + case QEvent::DeferredDelete: + return new QEvent(*e); +#ifndef QT_NO_DRAGANDDROP + case QEvent::DragEnter: + return new QDragEnterEvent(*static_cast<QDragEnterEvent*>(e)); + case QEvent::DragMove: + return new QDragMoveEvent(*static_cast<QDragMoveEvent*>(e)); + case QEvent::DragLeave: + return new QDragLeaveEvent(*static_cast<QDragLeaveEvent*>(e)); + case QEvent::Drop: + return new QDropEvent(*static_cast<QDragMoveEvent*>(e)); + case QEvent::DragResponse: + return new QDragResponseEvent(*static_cast<QDragResponseEvent*>(e)); +#endif + case QEvent::ChildAdded: + return new QChildEvent(*static_cast<QChildEvent*>(e)); + case QEvent::ChildPolished: + return new QChildEvent(*static_cast<QChildEvent*>(e)); + case QEvent::ChildRemoved: + return new QChildEvent(*static_cast<QChildEvent*>(e)); + case QEvent::ShowWindowRequest: + return new QEvent(*e); + case QEvent::PolishRequest: + return new QEvent(*e); + case QEvent::Polish: + return new QEvent(*e); + case QEvent::LayoutRequest: + return new QEvent(*e); + case QEvent::UpdateRequest: + return new QEvent(*e); + case QEvent::UpdateLater: + return new QEvent(*e); + + case QEvent::EmbeddingControl: + return new QEvent(*e); + case QEvent::ActivateControl: + return new QEvent(*e); + case QEvent::DeactivateControl: + return new QEvent(*e); + +#ifndef QT_NO_CONTEXTMENU + case QEvent::ContextMenu: + return new QContextMenuEvent(*static_cast<QContextMenuEvent*>(e)); +#endif + case QEvent::InputMethod: + return new QInputMethodEvent(*static_cast<QInputMethodEvent*>(e)); + case QEvent::AccessibilityPrepare: + return new QEvent(*e); +#ifndef QT_NO_TABLETEVENT + case QEvent::TabletMove: + return new QTabletEvent(*static_cast<QTabletEvent*>(e)); +#endif //QT_NO_TABLETEVENT + case QEvent::LocaleChange: + return new QEvent(*e); + case QEvent::LanguageChange: + return new QEvent(*e); + case QEvent::LayoutDirectionChange: + return new QEvent(*e); + case QEvent::Style: + return new QEvent(*e); +#ifndef QT_NO_TABLETEVENT + case QEvent::TabletPress: + return new QTabletEvent(*static_cast<QTabletEvent*>(e)); + case QEvent::TabletRelease: + return new QTabletEvent(*static_cast<QTabletEvent*>(e)); +#endif //QT_NO_TABLETEVENT + case QEvent::OkRequest: + return new QEvent(*e); + case QEvent::HelpRequest: + return new QEvent(*e); + + case QEvent::IconDrag: + return new QIconDragEvent(*static_cast<QIconDragEvent*>(e)); + + case QEvent::FontChange: + return new QEvent(*e); + case QEvent::EnabledChange: + return new QEvent(*e); + case QEvent::ActivationChange: + return new QEvent(*e); + case QEvent::StyleChange: + return new QEvent(*e); + case QEvent::IconTextChange: + return new QEvent(*e); + case QEvent::ModifiedChange: + return new QEvent(*e); + case QEvent::MouseTrackingChange: + return new QEvent(*e); + + case QEvent::WindowBlocked: + return new QEvent(*e); + case QEvent::WindowUnblocked: + return new QEvent(*e); + case QEvent::WindowStateChange: + return new QWindowStateChangeEvent(*static_cast<QWindowStateChangeEvent*>(e)); + + case QEvent::ToolTip: + return new QHelpEvent(*static_cast<QHelpEvent*>(e)); + case QEvent::WhatsThis: + return new QHelpEvent(*static_cast<QHelpEvent*>(e)); +#ifndef QT_NO_STATUSTIP + case QEvent::StatusTip: + return new QStatusTipEvent(*static_cast<QStatusTipEvent*>(e)); +#endif //QT_NO_STATUSTIP +#ifndef QT_NO_ACTION + case QEvent::ActionChanged: + case QEvent::ActionAdded: + case QEvent::ActionRemoved: + return new QActionEvent(*static_cast<QActionEvent*>(e)); +#endif + case QEvent::FileOpen: + return new QFileOpenEvent(*static_cast<QFileOpenEvent*>(e)); + +#ifndef QT_NO_SHORTCUT + case QEvent::Shortcut: + return new QShortcutEvent(*static_cast<QShortcutEvent*>(e)); +#endif //QT_NO_SHORTCUT + case QEvent::ShortcutOverride: + return new QKeyEvent(*static_cast<QKeyEvent*>(e)); + +#ifndef QT_NO_WHATSTHIS + case QEvent::WhatsThisClicked: + return new QWhatsThisClickedEvent(*static_cast<QWhatsThisClickedEvent*>(e)); +#endif //QT_NO_WHATSTHIS + +#ifndef QT_NO_TOOLBAR + case QEvent::ToolBarChange: + return new QToolBarChangeEvent(*static_cast<QToolBarChangeEvent*>(e)); +#endif //QT_NO_TOOLBAR + + case QEvent::ApplicationActivate: + return new QEvent(*e); + case QEvent::ApplicationDeactivate: + return new QEvent(*e); + + case QEvent::QueryWhatsThis: + return new QHelpEvent(*static_cast<QHelpEvent*>(e)); + case QEvent::EnterWhatsThisMode: + return new QEvent(*e); + case QEvent::LeaveWhatsThisMode: + return new QEvent(*e); + + case QEvent::ZOrderChange: + return new QEvent(*e); + + case QEvent::HoverEnter: + case QEvent::HoverLeave: + case QEvent::HoverMove: + return new QHoverEvent(*static_cast<QHoverEvent*>(e)); + + case QEvent::AccessibilityHelp: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; + case QEvent::AccessibilityDescription: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; + +#ifdef QT_KEYPAD_NAVIGATION + case QEvent::EnterEditFocus: + return new QEvent(*e); + case QEvent::LeaveEditFocus: + return new QEvent(*e); +#endif + case QEvent::AcceptDropsChange: + return new QEvent(*e); + + case QEvent::ZeroTimerEvent: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; +#ifndef QT_NO_GRAPHICSVIEW + case QEvent::GraphicsSceneMouseMove: + case QEvent::GraphicsSceneMousePress: + case QEvent::GraphicsSceneMouseRelease: + case QEvent::GraphicsSceneMouseDoubleClick: { + QGraphicsSceneMouseEvent *me = static_cast<QGraphicsSceneMouseEvent*>(e); + QGraphicsSceneMouseEvent *me2 = new QGraphicsSceneMouseEvent(me->type()); + me2->setWidget(me->widget()); + me2->setPos(me->pos()); + me2->setScenePos(me->scenePos()); + me2->setScreenPos(me->screenPos()); +// ### for all buttons + me2->setButtonDownPos(Qt::LeftButton, me->buttonDownPos(Qt::LeftButton)); + me2->setButtonDownPos(Qt::RightButton, me->buttonDownPos(Qt::RightButton)); + me2->setButtonDownScreenPos(Qt::LeftButton, me->buttonDownScreenPos(Qt::LeftButton)); + me2->setButtonDownScreenPos(Qt::RightButton, me->buttonDownScreenPos(Qt::RightButton)); + me2->setLastPos(me->lastPos()); + me2->setLastScenePos(me->lastScenePos()); + me2->setLastScreenPos(me->lastScreenPos()); + me2->setButtons(me->buttons()); + me2->setButton(me->button()); + me2->setModifiers(me->modifiers()); + return me2; + } + + case QEvent::GraphicsSceneContextMenu: { + QGraphicsSceneContextMenuEvent *me = static_cast<QGraphicsSceneContextMenuEvent*>(e); + QGraphicsSceneContextMenuEvent *me2 = new QGraphicsSceneContextMenuEvent(me->type()); + me2->setWidget(me->widget()); + me2->setPos(me->pos()); + me2->setScenePos(me->scenePos()); + me2->setScreenPos(me->screenPos()); + me2->setModifiers(me->modifiers()); + me2->setReason(me->reason()); + return me2; + } + + case QEvent::GraphicsSceneHoverEnter: + case QEvent::GraphicsSceneHoverMove: + case QEvent::GraphicsSceneHoverLeave: { + QGraphicsSceneHoverEvent *he = static_cast<QGraphicsSceneHoverEvent*>(e); + QGraphicsSceneHoverEvent *he2 = new QGraphicsSceneHoverEvent(he->type()); + he2->setPos(he->pos()); + he2->setScenePos(he->scenePos()); + he2->setScreenPos(he->screenPos()); + he2->setLastPos(he->lastPos()); + he2->setLastScenePos(he->lastScenePos()); + he2->setLastScreenPos(he->lastScreenPos()); + he2->setModifiers(he->modifiers()); + return he2; + } + case QEvent::GraphicsSceneHelp: + return new QHelpEvent(*static_cast<QHelpEvent*>(e)); + case QEvent::GraphicsSceneDragEnter: + case QEvent::GraphicsSceneDragMove: + case QEvent::GraphicsSceneDragLeave: + case QEvent::GraphicsSceneDrop: { + QGraphicsSceneDragDropEvent *dde = static_cast<QGraphicsSceneDragDropEvent*>(e); + QGraphicsSceneDragDropEvent *dde2 = new QGraphicsSceneDragDropEvent(dde->type()); + dde2->setPos(dde->pos()); + dde2->setScenePos(dde->scenePos()); + dde2->setScreenPos(dde->screenPos()); + dde2->setButtons(dde->buttons()); + dde2->setModifiers(dde->modifiers()); + return dde2; + } + case QEvent::GraphicsSceneWheel: { + QGraphicsSceneWheelEvent *we = static_cast<QGraphicsSceneWheelEvent*>(e); + QGraphicsSceneWheelEvent *we2 = new QGraphicsSceneWheelEvent(we->type()); + we2->setPos(we->pos()); + we2->setScenePos(we->scenePos()); + we2->setScreenPos(we->screenPos()); + we2->setButtons(we->buttons()); + we2->setModifiers(we->modifiers()); + we2->setOrientation(we->orientation()); + we2->setDelta(we->delta()); + return we2; + } +#endif + case QEvent::KeyboardLayoutChange: + return new QEvent(*e); + + case QEvent::DynamicPropertyChange: + return new QDynamicPropertyChangeEvent(*static_cast<QDynamicPropertyChangeEvent*>(e)); + +#ifndef QT_NO_TABLETEVENT + case QEvent::TabletEnterProximity: + case QEvent::TabletLeaveProximity: + return new QTabletEvent(*static_cast<QTabletEvent*>(e)); +#endif //QT_NO_TABLETEVENT + + case QEvent::NonClientAreaMouseMove: + case QEvent::NonClientAreaMouseButtonPress: + case QEvent::NonClientAreaMouseButtonRelease: + case QEvent::NonClientAreaMouseButtonDblClick: + return new QMouseEvent(*static_cast<QMouseEvent*>(e)); + + case QEvent::MacSizeChange: + return new QEvent(*e); + + case QEvent::ContentsRectChange: + return new QEvent(*e); + + case QEvent::MacGLWindowChange: + return new QEvent(*e); + + case QEvent::FutureCallOut: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; +#ifndef QT_NO_GRAPHICSVIEW + case QEvent::GraphicsSceneResize: { + QGraphicsSceneResizeEvent *re = static_cast<QGraphicsSceneResizeEvent*>(e); + QGraphicsSceneResizeEvent *re2 = new QGraphicsSceneResizeEvent(); + re2->setOldSize(re->oldSize()); + re2->setNewSize(re->newSize()); + return re2; + } + case QEvent::GraphicsSceneMove: { + QGraphicsSceneMoveEvent *me = static_cast<QGraphicsSceneMoveEvent*>(e); + QGraphicsSceneMoveEvent *me2 = new QGraphicsSceneMoveEvent(); + me2->setWidget(me->widget()); + me2->setNewPos(me->newPos()); + me2->setOldPos(me->oldPos()); + return me2; + } +#endif + case QEvent::CursorChange: + return new QEvent(*e); + case QEvent::ToolTipChange: + return new QEvent(*e); + + case QEvent::NetworkReplyUpdated: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; + + case QEvent::GrabMouse: + case QEvent::UngrabMouse: + case QEvent::GrabKeyboard: + case QEvent::UngrabKeyboard: + return new QEvent(*e); + + case QEvent::TouchBegin: + case QEvent::TouchUpdate: + case QEvent::TouchEnd: + return new QTouchEvent(*static_cast<QTouchEvent*>(e)); + +#ifndef QT_NO_GESTURES + case QEvent::NativeGesture: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; +#endif + + case QEvent::RequestSoftwareInputPanel: + case QEvent::CloseSoftwareInputPanel: + return new QEvent(*e); + + case QEvent::UpdateSoftKeys: + return new QEvent(*e); + + case QEvent::User: + case QEvent::MaxUser: + Q_ASSERT_X(false, "cloneEvent()", "not implemented"); + break; + default: + ; + } + return qcoreStateMachineHandler()->cloneEvent(e); +} + +const QStateMachinePrivate::Handler qt_gui_statemachine_handler = { + cloneEvent +}; + +static const QStateMachinePrivate::Handler *qt_guistatemachine_last_handler = 0; +int qRegisterGuiStateMachine() +{ + qt_guistatemachine_last_handler = QStateMachinePrivate::handler; + QStateMachinePrivate::handler = &qt_gui_statemachine_handler; + return 1; +} +Q_CONSTRUCTOR_FUNCTION(qRegisterGuiStateMachine) + +int qUnregisterGuiStateMachine() +{ + QStateMachinePrivate::handler = qt_guistatemachine_last_handler; + return 1; +} +Q_DESTRUCTOR_FUNCTION(qUnregisterGuiStateMachine) + +QT_END_NAMESPACE + +#endif //QT_NO_STATEMACHINE |