| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef _SV_EVENT_HXX |
| #define _SV_EVENT_HXX |
| |
| #include <vcl/sv.h> |
| #include <vcl/dllapi.h> |
| #include <tools/gen.hxx> |
| #include <vcl/keycod.hxx> |
| #include <vcl/cmdevt.hxx> |
| |
| class AllSettings; |
| class OutputDevice; |
| class Window; |
| struct IDataObject; |
| |
| namespace com { namespace sun { namespace star { namespace awt { |
| struct KeyEvent; |
| struct MouseEvent; |
| } } } } |
| |
| enum TextDirectionality { |
| TextDirectionality_LeftToRight_TopToBottom, |
| TextDirectionality_RightToLeft_TopToBottom, |
| TextDirectionality_TopToBottom_RightToLeft |
| }; |
| |
| // ------------ |
| // - KeyEvent - |
| // ------------ |
| class VCL_DLLPUBLIC KeyEvent |
| { |
| private: |
| KeyCode maKeyCode; |
| sal_uInt16 mnRepeat; |
| xub_Unicode mnCharCode; |
| |
| public: |
| KeyEvent(); |
| KeyEvent( xub_Unicode nChar, const KeyCode& rKeyCode, |
| sal_uInt16 nRepeat = 0 ); |
| |
| /** inits this vcl KeyEvent with all settings from the given awt event **/ |
| KeyEvent( const ::com::sun::star::awt::KeyEvent& rEvent ); |
| |
| /** fills out the given awt KeyEvent with all settings from this vcl event **/ |
| void InitKeyEvent( ::com::sun::star::awt::KeyEvent& rEvent ) const; |
| |
| xub_Unicode GetCharCode() const { return mnCharCode; } |
| const KeyCode& GetKeyCode() const { return maKeyCode; } |
| sal_uInt16 GetRepeat() const { return mnRepeat; } |
| |
| KeyEvent LogicalTextDirectionality (TextDirectionality eMode) const; |
| KeyEvent (const KeyEvent& rKeyEvent); |
| |
| }; |
| |
| inline KeyEvent::KeyEvent() |
| { |
| mnCharCode = 0; |
| mnRepeat = 0; |
| } |
| |
| inline KeyEvent::KeyEvent( xub_Unicode nChar, const KeyCode& rKeyCode, |
| sal_uInt16 nRepeat ) : |
| maKeyCode( rKeyCode ) |
| |
| { |
| mnCharCode = nChar; |
| mnRepeat = nRepeat; |
| } |
| |
| // -------------------- |
| // - MouseEvent-Types - |
| // -------------------- |
| |
| // Maus-Move-Modi |
| #define MOUSE_SIMPLEMOVE ((sal_uInt16)0x0001) |
| #define MOUSE_DRAGMOVE ((sal_uInt16)0x0002) |
| #define MOUSE_DRAGCOPY ((sal_uInt16)0x0004) |
| #define MOUSE_ENTERWINDOW ((sal_uInt16)0x0010) |
| #define MOUSE_LEAVEWINDOW ((sal_uInt16)0x0020) |
| #define MOUSE_SYNTHETIC ((sal_uInt16)0x0040) |
| #define MOUSE_MODIFIERCHANGED ((sal_uInt16)0x0080) |
| |
| // Maus-Button-Down/Up-Modi |
| #define MOUSE_SIMPLECLICK ((sal_uInt16)0x0001) |
| #define MOUSE_SELECT ((sal_uInt16)0x0002) |
| #define MOUSE_MULTISELECT ((sal_uInt16)0x0004) |
| #define MOUSE_RANGESELECT ((sal_uInt16)0x0008) |
| |
| // Maus-Buttons |
| #define MOUSE_LEFT ((sal_uInt16)0x0001) |
| #define MOUSE_MIDDLE ((sal_uInt16)0x0002) |
| #define MOUSE_RIGHT ((sal_uInt16)0x0004) |
| |
| // -------------- |
| // - MouseEvent - |
| // -------------- |
| |
| class VCL_DLLPUBLIC MouseEvent |
| { |
| private: |
| Point maPos; |
| sal_uInt16 mnMode; |
| sal_uInt16 mnClicks; |
| sal_uInt16 mnCode; |
| |
| public: |
| explicit MouseEvent(); |
| explicit MouseEvent( const Point& rPos, sal_uInt16 nClicks = 1, |
| sal_uInt16 nMode = 0, sal_uInt16 nButtons = 0, |
| sal_uInt16 nModifier = 0 ); |
| |
| const Point& GetPosPixel() const { return maPos; } |
| sal_uInt16 GetMode() const { return mnMode; } |
| /** inits this vcl KeyEvent with all settings from the given awt event **/ |
| MouseEvent( const ::com::sun::star::awt::MouseEvent& rEvent ); |
| |
| /** fills out the given awt KeyEvent with all settings from this vcl event **/ |
| void InitMouseEvent( ::com::sun::star::awt::MouseEvent& rEvent ) const; |
| |
| sal_uInt16 GetClicks() const { return mnClicks; } |
| |
| sal_Bool IsEnterWindow() const |
| { return ((mnMode & MOUSE_ENTERWINDOW) != 0); } |
| sal_Bool IsLeaveWindow() const |
| { return ((mnMode & MOUSE_LEAVEWINDOW) != 0); } |
| sal_Bool IsSynthetic() const |
| { return ((mnMode & MOUSE_SYNTHETIC) != 0); } |
| sal_Bool IsModifierChanged() const |
| { return ((mnMode & MOUSE_MODIFIERCHANGED) != 0); } |
| |
| sal_uInt16 GetButtons() const |
| { return (mnCode & (MOUSE_LEFT | MOUSE_MIDDLE | MOUSE_RIGHT)); } |
| sal_Bool IsLeft() const |
| { return ((mnCode & MOUSE_LEFT) != 0); } |
| sal_Bool IsMiddle() const |
| { return ((mnCode & MOUSE_MIDDLE) != 0); } |
| sal_Bool IsRight() const |
| { return ((mnCode & MOUSE_RIGHT) != 0); } |
| |
| sal_uInt16 GetModifier() const |
| { return (mnCode & (KEY_SHIFT | KEY_MOD1 | KEY_MOD2)); } |
| sal_Bool IsShift() const |
| { return ((mnCode & KEY_SHIFT) != 0); } |
| sal_Bool IsMod1() const |
| { return ((mnCode & KEY_MOD1) != 0); } |
| sal_Bool IsMod2() const |
| { return ((mnCode & KEY_MOD2) != 0); } |
| sal_Bool IsMod3() const |
| { return ((mnCode & KEY_MOD3) != 0); } |
| }; |
| |
| inline MouseEvent::MouseEvent() |
| { |
| mnMode = 0; |
| mnClicks = 0; |
| mnCode = 0; |
| } |
| |
| inline MouseEvent::MouseEvent( const Point& rPos, sal_uInt16 nClicks, |
| sal_uInt16 nMode, |
| sal_uInt16 nButtons, sal_uInt16 nModifier ) : |
| maPos( rPos ) |
| { |
| mnClicks = nClicks; |
| mnMode = nMode; |
| mnCode = nButtons | nModifier; |
| } |
| |
| // ------------- |
| // - HelpEvent - |
| // ------------- |
| |
| #define HELPMODE_CONTEXT ((sal_uInt16)0x0001) |
| #define HELPMODE_EXTENDED ((sal_uInt16)0x0002) |
| #define HELPMODE_BALLOON ((sal_uInt16)0x0004) |
| #define HELPMODE_QUICK ((sal_uInt16)0x0008) |
| |
| class VCL_DLLPUBLIC HelpEvent |
| { |
| private: |
| Point maPos; |
| sal_uInt16 mnMode; |
| sal_Bool mbKeyboardActivated; |
| |
| public: |
| explicit HelpEvent(); |
| explicit HelpEvent( sal_uInt16 nHelpMode ); |
| explicit HelpEvent( const Point& rMousePos, sal_uInt16 nHelpMode ); |
| |
| const Point& GetMousePosPixel() const; |
| sal_uInt16 GetMode() const { return mnMode; } |
| sal_Bool KeyboardActivated() const { return mbKeyboardActivated; } |
| void SetKeyboardActivated( sal_Bool bKeyboard ) { mbKeyboardActivated = bKeyboard; } |
| }; |
| |
| inline HelpEvent::HelpEvent() |
| { |
| mnMode = HELPMODE_CONTEXT; |
| mbKeyboardActivated = sal_True; |
| } |
| |
| inline HelpEvent::HelpEvent( const Point& rMousePos, sal_uInt16 nHelpMode ) : |
| maPos( rMousePos ) |
| { |
| mnMode = nHelpMode; |
| mbKeyboardActivated = sal_False; |
| } |
| |
| inline HelpEvent::HelpEvent( sal_uInt16 nHelpMode ) |
| { |
| mnMode = nHelpMode; |
| mbKeyboardActivated = sal_True; |
| } |
| |
| // ----------------- |
| // - UserDrawEvent - |
| // ----------------- |
| |
| class VCL_DLLPUBLIC UserDrawEvent |
| { |
| private: |
| OutputDevice* mpOutDev; |
| Rectangle maOutRect; |
| sal_uInt16 mnItemId; |
| sal_uInt16 mnStyle; |
| |
| public: |
| UserDrawEvent(); |
| UserDrawEvent( OutputDevice* pOut, |
| const Rectangle& rOutRect, |
| sal_uInt16 nId, sal_uInt16 nStyle = 0 ); |
| |
| OutputDevice* GetDevice() const { return mpOutDev; } |
| const Rectangle& GetRect() const { return maOutRect; } |
| sal_uInt16 GetItemId() const { return mnItemId; } |
| sal_uInt16 GetStyle() const { return mnStyle; } |
| }; |
| |
| inline UserDrawEvent::UserDrawEvent() |
| { |
| mpOutDev = NULL; |
| mnItemId = 0; |
| mnStyle = 0; |
| } |
| |
| inline UserDrawEvent::UserDrawEvent( OutputDevice* pOut, |
| const Rectangle& rOutRect, |
| sal_uInt16 nId, sal_uInt16 nStyle ) : |
| maOutRect( rOutRect ) |
| { |
| mpOutDev = pOut; |
| mnItemId = nId; |
| mnStyle = nStyle; |
| } |
| |
| // ------------------ |
| // - Tracking-Types - |
| // ------------------ |
| |
| #define ENDTRACK_CANCEL ((sal_uInt16)0x0001) |
| #define ENDTRACK_KEY ((sal_uInt16)0x0002) |
| #define ENDTRACK_FOCUS ((sal_uInt16)0x0004) |
| #define ENDTRACK_END ((sal_uInt16)0x1000) |
| #define ENDTRACK_DONTCALLHDL ((sal_uInt16)0x8000) |
| |
| #define TRACKING_REPEAT ((sal_uInt16)0x0100) |
| |
| // ----------------- |
| // - TrackingEvent - |
| // ----------------- |
| |
| class VCL_DLLPUBLIC TrackingEvent |
| { |
| private: |
| MouseEvent maMEvt; |
| sal_uInt16 mnFlags; |
| |
| public: |
| explicit TrackingEvent(); |
| explicit TrackingEvent( const MouseEvent&, |
| sal_uInt16 nTrackFlags = 0 ); |
| |
| const MouseEvent& GetMouseEvent() const { return maMEvt; } |
| |
| sal_Bool IsTrackingRepeat() const |
| { return ((mnFlags & TRACKING_REPEAT) != 0); } |
| |
| sal_Bool IsTrackingEnded() const |
| { return ((mnFlags & ENDTRACK_END) != 0); } |
| sal_Bool IsTrackingCanceled() const |
| { return ((mnFlags & ENDTRACK_CANCEL) != 0); } |
| sal_uInt16 GetTrackingFlags() const { return mnFlags; } |
| }; |
| |
| inline TrackingEvent::TrackingEvent() |
| { |
| mnFlags = 0; |
| } |
| |
| inline TrackingEvent::TrackingEvent( const MouseEvent& rMEvt, |
| sal_uInt16 nTrackFlags ) : |
| maMEvt( rMEvt ) |
| { |
| mnFlags = nTrackFlags; |
| } |
| |
| // --------------- |
| // - NotifyEvent - |
| // --------------- |
| |
| #define EVENT_MOUSEBUTTONDOWN 1 |
| #define EVENT_MOUSEBUTTONUP 2 |
| #define EVENT_MOUSEMOVE 3 |
| #define EVENT_KEYINPUT 4 |
| #define EVENT_KEYUP 5 |
| #define EVENT_GETFOCUS 6 |
| #define EVENT_LOSEFOCUS 7 |
| #define EVENT_COMMAND 8 |
| #define EVENT_DESTROY 9 |
| #define EVENT_INPUTENABLE 10 |
| #define EVENT_INPUTDISABLE 11 |
| #define EVENT_EXECUTEDIALOG 100 |
| #define EVENT_ENDEXECUTEDIALOG 101 |
| #define EVENT_USER 10000 |
| |
| class VCL_DLLPUBLIC NotifyEvent |
| { |
| private: |
| Window* mpWindow; |
| void* mpData; |
| sal_uInt16 mnType; |
| long mnRetValue; |
| |
| public: |
| NotifyEvent(); |
| NotifyEvent( sal_uInt16 nType, |
| Window* pWindow, |
| const void* pEvent = NULL, |
| long nRet = 0 ); |
| |
| sal_uInt16 GetType() const { return mnType; } |
| Window* GetWindow() const { return mpWindow; } |
| void* GetData() const { return mpData; } |
| |
| void SetReturnValue( long nRet ) { mnRetValue = nRet; } |
| long GetReturnValue() const { return mnRetValue; } |
| |
| const KeyEvent* GetKeyEvent() const; |
| const MouseEvent* GetMouseEvent() const; |
| const CommandEvent* GetCommandEvent() const; |
| }; |
| |
| inline NotifyEvent::NotifyEvent() |
| { |
| mpWindow = NULL; |
| mpData = NULL; |
| mnType = 0; |
| mnRetValue = 0; |
| } |
| |
| inline NotifyEvent::NotifyEvent( sal_uInt16 nType, Window* pWindow, |
| const void* pEvent, long nRet ) |
| { |
| mpWindow = pWindow; |
| mpData = (void*)pEvent; |
| mnType = nType; |
| mnRetValue = nRet; |
| } |
| |
| inline const KeyEvent* NotifyEvent::GetKeyEvent() const |
| { |
| if ( (mnType == EVENT_KEYINPUT) || (mnType == EVENT_KEYUP) ) |
| return (const KeyEvent*)mpData; |
| else |
| return NULL; |
| } |
| |
| inline const MouseEvent* NotifyEvent::GetMouseEvent() const |
| { |
| if ( (mnType >= EVENT_MOUSEBUTTONDOWN) && (mnType <= EVENT_MOUSEMOVE) ) |
| return (const MouseEvent*)mpData; |
| else |
| return NULL; |
| } |
| |
| inline const CommandEvent* NotifyEvent::GetCommandEvent() const |
| { |
| if ( mnType == EVENT_COMMAND ) |
| return (const CommandEvent*)mpData; |
| else |
| return NULL; |
| } |
| |
| // -------------------- |
| // - DataChangedEvent - |
| // -------------------- |
| |
| #define DATACHANGED_SETTINGS ((sal_uInt16)1) |
| #define DATACHANGED_DISPLAY ((sal_uInt16)2) |
| #define DATACHANGED_DATETIME ((sal_uInt16)3) |
| #define DATACHANGED_FONTS ((sal_uInt16)4) |
| #define DATACHANGED_PRINTER ((sal_uInt16)5) |
| #define DATACHANGED_FONTSUBSTITUTION ((sal_uInt16)6) |
| #define DATACHANGED_USER ((sal_uInt16)10000) |
| |
| class VCL_DLLPUBLIC DataChangedEvent |
| { |
| private: |
| void* mpData; |
| sal_uLong mnFlags; |
| sal_uInt16 mnType; |
| |
| public: |
| explicit DataChangedEvent(); |
| explicit DataChangedEvent( sal_uInt16 nType, |
| const void* pData = NULL, |
| sal_uLong nFlags = 0 ); |
| |
| sal_uInt16 GetType() const { return mnType; } |
| void* GetData() const { return mpData; } |
| sal_uLong GetFlags() const { return mnFlags; } |
| |
| const AllSettings* GetOldSettings() const; |
| }; |
| |
| inline DataChangedEvent::DataChangedEvent() |
| { |
| mpData = NULL; |
| mnFlags = 0; |
| mnType = 0; |
| } |
| |
| inline DataChangedEvent::DataChangedEvent( sal_uInt16 nType, |
| const void* pData, |
| sal_uLong nChangeFlags ) |
| { |
| mpData = (void*)pData; |
| mnFlags = nChangeFlags; |
| mnType = nType; |
| } |
| |
| inline const AllSettings* DataChangedEvent::GetOldSettings() const |
| { |
| if ( mnType == DATACHANGED_SETTINGS ) |
| return (const AllSettings*)mpData; |
| else |
| return NULL; |
| } |
| |
| #endif // _SV_EVENT_HXX |
| |