00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "jseventmapper.h"
00023
00024 #include "kjseglobal.h"
00025
00026 namespace KJSEmbed {
00027
00028 JSEventMapper *JSEventMapper::m_inst = 0;
00029
00031 struct EventType
00032 {
00033 EventType( KJS::Identifier _id, QEvent::Type _type ) :
00034 id(_id), type(_type) {;}
00035
00036 const KJS::Identifier id;
00037 const QEvent::Type type;
00038 };
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145 static EventType events[] = {
00146 EventType( KJS::Identifier("onTimerEvent"), QEvent::Timer ),
00147 EventType( KJS::Identifier("onMouseButtonPressEvent"), QEvent::MouseButtonPress ),
00148 EventType( KJS::Identifier("onMouseButtonReleaseEvent"), QEvent::MouseButtonRelease ),
00149 EventType( KJS::Identifier("onMouseButtonDblClickEvent"), QEvent::MouseButtonDblClick ),
00150 EventType( KJS::Identifier("onMouseMoveEvent"), QEvent::MouseMove ),
00151 EventType( KJS::Identifier("onKeyPressEvent"), QEvent::KeyPress ),
00152 EventType( KJS::Identifier("onKeyReleaseEvent"), QEvent::KeyRelease ),
00153 EventType( KJS::Identifier("onFocusInEvent"), QEvent::FocusIn ),
00154 EventType( KJS::Identifier("onFocusOutEvent"), QEvent::FocusOut ),
00155 EventType( KJS::Identifier("onEnterEvent"), QEvent::Enter ),
00156 EventType( KJS::Identifier("onLeaveEvent"), QEvent::Leave ),
00157 EventType( KJS::Identifier("onPaintEvent"), QEvent::Paint ),
00158 EventType( KJS::Identifier("onMoveEvent"), QEvent::Move ),
00159 EventType( KJS::Identifier("onResizeEvent"), QEvent::Resize ),
00160 EventType( KJS::Identifier("onCreateEvent"), QEvent::Create ),
00161 EventType( KJS::Identifier("onDestroyEvent"), QEvent::Destroy ),
00162 EventType( KJS::Identifier("onShowEvent"), QEvent::Show ),
00163 EventType( KJS::Identifier("onHideEvent"), QEvent::Hide ),
00164 EventType( KJS::Identifier("onCloseEvent"), QEvent::Close ),
00165 EventType( KJS::Identifier("onQuitEvent"), QEvent::Quit ),
00166 EventType( KJS::Identifier("onParentChangeEvent"), QEvent::ParentChange ),
00167 EventType( KJS::Identifier("onParentAboutToChangeEvent"), QEvent::ParentAboutToChange ),
00168 EventType( KJS::Identifier("onThreadChangeEvent"), QEvent::ThreadChange ),
00169 EventType( KJS::Identifier("onWindowActivateEvent"), QEvent::WindowActivate ),
00170 EventType( KJS::Identifier("onWindowDeactivateEvent"), QEvent::WindowDeactivate ),
00171 EventType( KJS::Identifier("onShowToParentEvent"), QEvent::ShowToParent ),
00172 EventType( KJS::Identifier("onHideToParentEvent"), QEvent::HideToParent ),
00173 EventType( KJS::Identifier("onWheelEvent"), QEvent::Wheel ),
00174 EventType( KJS::Identifier("onWindowTitleChangeEvent"), QEvent::WindowTitleChange ),
00175 EventType( KJS::Identifier("onWindowIconChangeEvent"), QEvent::WindowIconChange ),
00176 EventType( KJS::Identifier("onApplicationWindowIconChangeEvent"), QEvent::ApplicationWindowIconChange ),
00177 EventType( KJS::Identifier("onApplicationFontChangeEvent"), QEvent::ApplicationFontChange ),
00178 EventType( KJS::Identifier("onApplicationLayoutDirectionChangeEvent"), QEvent::ApplicationLayoutDirectionChange ),
00179 EventType( KJS::Identifier("onApplicationPaletteChangeEvent"), QEvent::ApplicationPaletteChange ),
00180 EventType( KJS::Identifier("onPaletteChangeEvent"), QEvent::PaletteChange ),
00181 EventType( KJS::Identifier("onClipboardEvent"), QEvent::Clipboard ),
00182 EventType( KJS::Identifier("onSpeechEvent"), QEvent::Speech ),
00183 EventType( KJS::Identifier("onMetaCallEvent"), QEvent::MetaCall ),
00184 EventType( KJS::Identifier("onSockActEvent"), QEvent::SockAct ),
00185 EventType( KJS::Identifier("onWinEventActEvent"), QEvent::WinEventAct ),
00186 EventType( KJS::Identifier("onDeferredDeleteEvent"), QEvent::DeferredDelete ),
00187 EventType( KJS::Identifier("onDragEnterEvent"), QEvent::DragEnter ),
00188 EventType( KJS::Identifier("onDragMoveEvent"), QEvent::DragMove ),
00189 EventType( KJS::Identifier("onDragLeaveEvent"), QEvent::DragLeave ),
00190 EventType( KJS::Identifier("onDropEvent"), QEvent::Drop ),
00191 EventType( KJS::Identifier("onDragResponseEvent"), QEvent::DragResponse ),
00192 EventType( KJS::Identifier("onChildAddedEvent"), QEvent::ChildAdded ),
00193 EventType( KJS::Identifier("onChildPolishedEvent"), QEvent::ChildRemoved ),
00194 EventType( KJS::Identifier("onShowWindowRequestEvent"), QEvent::ShowWindowRequest ),
00195 EventType( KJS::Identifier("onPolishRequestEvent"), QEvent::PolishRequest ),
00196 EventType( KJS::Identifier("onPolishEvent"), QEvent::Polish ),
00197 EventType( KJS::Identifier("onLayoutRequestEvent"), QEvent::LayoutRequest ),
00198 EventType( KJS::Identifier("onUpdateRequestEvent"), QEvent::UpdateRequest ),
00199 EventType( KJS::Identifier("onEmbeddingControlEvent"), QEvent::EmbeddingControl ),
00200 EventType( KJS::Identifier("onActivateControlEvent"), QEvent::ActivateControl ),
00201 EventType( KJS::Identifier("onDeactivateControlEvent"), QEvent::DeactivateControl ),
00202 EventType( KJS::Identifier("onContextMenuEvent"), QEvent::ContextMenu ),
00203 EventType( KJS::Identifier("onInputMethodEvent"), QEvent::InputMethod ),
00204 EventType( KJS::Identifier("onAccessibilityPrepareEvent"), QEvent::AccessibilityPrepare ),
00205 EventType( KJS::Identifier("onTabletMoveEvent"), QEvent::TabletMove ),
00206 EventType( KJS::Identifier("onLocaleChangeEvent"), QEvent::LocaleChange ),
00207 EventType( KJS::Identifier("onLanguageChangeEvent"), QEvent::LanguageChange ),
00208 EventType( KJS::Identifier("onLayoutDirectionChangeEvent"), QEvent::LayoutDirectionChange ),
00209 EventType( KJS::Identifier("onStyleEvent"), QEvent::Style ),
00210 EventType( KJS::Identifier("onTabletPressEvent"), QEvent::TabletPress ),
00211 EventType( KJS::Identifier("onTabletReleaseEvent"), QEvent::TabletRelease ),
00212 EventType( KJS::Identifier("onOkRequestEvent"), QEvent::OkRequest ),
00213 EventType( KJS::Identifier("onHelpRequestEvent"), QEvent::HelpRequest ),
00214 EventType( KJS::Identifier("onIconDragEvent"), QEvent::IconDrag ),
00215 EventType( KJS::Identifier("onFontChangeEvent"), QEvent::FontChange ),
00216 EventType( KJS::Identifier("onEnabledChangeEvent"), QEvent::EnabledChange ),
00217 EventType( KJS::Identifier("onActivationChangeEvent"), QEvent::ActivationChange ),
00218 EventType( KJS::Identifier("onStyleChangeEvent"), QEvent::StyleChange ),
00219 EventType( KJS::Identifier("onIconTextChangeEvent"), QEvent::IconTextChange ),
00220 EventType( KJS::Identifier("onModifiedChangeEvent"), QEvent::ModifiedChange ),
00221 EventType( KJS::Identifier("onMouseTrackingChangeEvent"), QEvent::MouseTrackingChange ),
00222 EventType( KJS::Identifier("onWindowBlockedEvent"), QEvent::WindowBlocked ),
00223 EventType( KJS::Identifier("onWindowUnblockedEvent"), QEvent::WindowUnblocked ),
00224 EventType( KJS::Identifier("onWindowStateChangeEvent"), QEvent::WindowStateChange ),
00225 EventType( KJS::Identifier("onToolTipEvent"), QEvent::ToolTip ),
00226 EventType( KJS::Identifier("onWhatsThisEvent"), QEvent::WhatsThis ),
00227 EventType( KJS::Identifier("onStatusTipEvent"), QEvent::StatusTip ),
00228 EventType( KJS::Identifier("onActionChangedEvent"), QEvent::ActionChanged ),
00229 EventType( KJS::Identifier("onActionAddedEvent"), QEvent::ActionAdded ),
00230 EventType( KJS::Identifier("onActionRemovedEvent"), QEvent::ActionRemoved ),
00231 EventType( KJS::Identifier("onFileOpenEvent"), QEvent::FileOpen ),
00232 EventType( KJS::Identifier("onShortcutEvent"), QEvent::Shortcut ),
00233 EventType( KJS::Identifier("onShortcutOverrideEvent"), QEvent::ShortcutOverride ),
00234 EventType( KJS::Identifier("onWhatsThisClickedEvent"), QEvent::WhatsThisClicked ),
00235 EventType( KJS::Identifier("onToolBarChangeEvent"), QEvent::ToolBarChange ),
00236 EventType( KJS::Identifier("onApplicationActivatedEvent"), QEvent::ApplicationActivated ),
00237 EventType( KJS::Identifier("onApplicationDeactivatedEvent"), QEvent::ApplicationDeactivated ),
00238 EventType( KJS::Identifier("onQueryWhatsThisEvent"), QEvent::QueryWhatsThis ),
00239 EventType( KJS::Identifier("onEnterWhatsThisModeEvent"), QEvent::EnterWhatsThisMode ),
00240 EventType( KJS::Identifier("onLeaveWhatsThisModeEvent"), QEvent::LeaveWhatsThisMode ),
00241 EventType( KJS::Identifier("onZOrderChangeEvent"), QEvent::ZOrderChange ),
00242 EventType( KJS::Identifier("onHoverEnterEvent"), QEvent::HoverEnter ),
00243 EventType( KJS::Identifier("onHoverLeaveEvent"), QEvent::HoverLeave ),
00244 EventType( KJS::Identifier("onHoverMoveEvent"), QEvent::HoverMove ),
00245 EventType( KJS::Identifier("onAccessibilityHelpEvent"), QEvent::AccessibilityHelp ),
00246 EventType( KJS::Identifier("onAccessibilityDescriptionEvent"), QEvent::AccessibilityDescription ),
00247 EventType(KJS::Identifier(), QEvent::None )
00248 };
00249
00250 JSEventMapper::JSEventMapper()
00251 {
00252 int i = 0;
00253 do {
00254 addEvent( events[i].id, events[i].type );
00255 i++;
00256 } while( events[i].type != QEvent::None );
00257 }
00258
00259 JSEventMapper::~JSEventMapper()
00260 {
00261 }
00262
00263 void JSEventMapper::addEvent( const KJS::Identifier &name, QEvent::Type t )
00264 {
00265 m_handlerToEvent[ toQString(name) ] = t;
00266 m_eventToHandler[ t ] = name;
00267 }
00268
00269 QEvent::Type JSEventMapper::findEventType( const KJS::Identifier &name ) const
00270 {
00271 return m_handlerToEvent[ toQString(name) ];
00272 }
00273
00274 bool JSEventMapper::isEventHandler( const KJS::Identifier &name ) const
00275 {
00276 return m_handlerToEvent.contains( toQString(name) );
00277 }
00278
00279 KJS::Identifier JSEventMapper::findEventHandler( QEvent::Type t ) const
00280 {
00281 return m_eventToHandler[t];
00282 }
00283
00284 JSEventMapper *JSEventMapper::mapper()
00285 {
00286 if ( m_inst )
00287 return m_inst;
00288 m_inst = new JSEventMapper();
00289 return m_inst;
00290 }
00291
00292
00293 }
00294
00295
00296
00297
00298
00299