Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #ifndef INCLUDED_VCL_CMDEVT_HXX
21 : #define INCLUDED_VCL_CMDEVT_HXX
22 :
23 : #include <tools/gen.hxx>
24 : #include <tools/solar.h>
25 : #include <vcl/dllapi.h>
26 : #include <vcl/keycod.hxx>
27 : #include <vcl/font.hxx>
28 :
29 :
30 : // - CommandExtTextInputData -
31 :
32 :
33 : #define EXTTEXTINPUT_ATTR_GRAYWAVELINE ((sal_uInt16)0x0100)
34 : #define EXTTEXTINPUT_ATTR_UNDERLINE ((sal_uInt16)0x0200)
35 : #define EXTTEXTINPUT_ATTR_BOLDUNDERLINE ((sal_uInt16)0x0400)
36 : #define EXTTEXTINPUT_ATTR_DOTTEDUNDERLINE ((sal_uInt16)0x0800)
37 : #define EXTTEXTINPUT_ATTR_DASHDOTUNDERLINE ((sal_uInt16)0x1000)
38 : #define EXTTEXTINPUT_ATTR_HIGHLIGHT ((sal_uInt16)0x2000)
39 : #define EXTTEXTINPUT_ATTR_REDTEXT ((sal_uInt16)0x4000)
40 : #define EXTTEXTINPUT_ATTR_HALFTONETEXT ((sal_uInt16)0x8000)
41 :
42 : #define EXTTEXTINPUT_CURSOR_INVISIBLE ((sal_uInt16)0x0001)
43 : #define EXTTEXTINPUT_CURSOR_OVERWRITE ((sal_uInt16)0x0002)
44 :
45 : class VCL_DLLPUBLIC CommandExtTextInputData
46 : {
47 : private:
48 : OUString maText;
49 : sal_uInt16* mpTextAttr;
50 : sal_Int32 mnCursorPos;
51 : sal_uInt16 mnCursorFlags;
52 : bool mbOnlyCursor;
53 :
54 : public:
55 : CommandExtTextInputData( const OUString& rText,
56 : const sal_uInt16* pTextAttr,
57 : sal_Int32 nCursorPos,
58 : sal_uInt16 nCursorFlags,
59 : bool bOnlyCursor );
60 : CommandExtTextInputData( const CommandExtTextInputData& rData );
61 : ~CommandExtTextInputData();
62 :
63 0 : const OUString& GetText() const { return maText; }
64 0 : const sal_uInt16* GetTextAttr() const { return mpTextAttr; }
65 : sal_uInt16 GetCharTextAttr(sal_Int32 nIndex) const
66 : {
67 : assert(nIndex >= 0);
68 : if (mpTextAttr && nIndex < maText.getLength() && nIndex >=0)
69 : return mpTextAttr[nIndex];
70 : else
71 : return 0;
72 : }
73 :
74 0 : sal_Int32 GetCursorPos() const { return mnCursorPos; }
75 0 : bool IsCursorVisible() const { return (mnCursorFlags & EXTTEXTINPUT_CURSOR_INVISIBLE) == 0; }
76 0 : bool IsCursorOverwrite() const { return (mnCursorFlags & EXTTEXTINPUT_CURSOR_OVERWRITE) != 0; }
77 : sal_uInt16 GetCursorFlags() const { return mnCursorFlags; }
78 0 : bool IsOnlyCursorChanged() const { return mbOnlyCursor; }
79 : };
80 :
81 :
82 : // - CommandInputContextData -
83 :
84 :
85 : class VCL_DLLPUBLIC CommandInputContextData
86 : {
87 : private:
88 : LanguageType meLanguage;
89 :
90 : public:
91 : CommandInputContextData();
92 : CommandInputContextData( LanguageType eLang );
93 :
94 : LanguageType GetLanguage() const { return meLanguage; }
95 : };
96 :
97 : inline CommandInputContextData::CommandInputContextData()
98 : {
99 : meLanguage = LANGUAGE_DONTKNOW;
100 : }
101 :
102 0 : inline CommandInputContextData::CommandInputContextData( LanguageType eLang )
103 : {
104 0 : meLanguage = eLang;
105 0 : }
106 :
107 :
108 : // - CommandWheelData -
109 :
110 :
111 : enum class CommandWheelMode
112 : {
113 : NONE = 0,
114 : SCROLL = 1,
115 : ZOOM = 2,
116 : ZOOM_SCALE = 3,
117 : DATAZOOM = 4
118 : };
119 :
120 : // Magic value used in mnLines field in CommandWheelData
121 : #define COMMAND_WHEEL_PAGESCROLL ((sal_uLong)0xFFFFFFFF)
122 :
123 : class VCL_DLLPUBLIC CommandWheelData
124 : {
125 : private:
126 : long mnDelta;
127 : long mnNotchDelta;
128 : sal_uLong mnLines;
129 : CommandWheelMode mnWheelMode;
130 : sal_uInt16 mnCode;
131 : bool mbHorz;
132 : bool mbDeltaIsPixel;
133 :
134 : public:
135 : CommandWheelData();
136 : CommandWheelData( long nWheelDelta, long nWheelNotchDelta,
137 : sal_uLong nScrollLines,
138 : CommandWheelMode nWheelMode, sal_uInt16 nKeyModifier,
139 : bool bHorz = false, bool bDeltaIsPixel = false );
140 :
141 0 : long GetDelta() const { return mnDelta; }
142 0 : long GetNotchDelta() const { return mnNotchDelta; }
143 0 : sal_uLong GetScrollLines() const { return mnLines; }
144 0 : bool IsHorz() const { return mbHorz; }
145 0 : bool IsDeltaPixel() const { return mbDeltaIsPixel; }
146 :
147 0 : CommandWheelMode GetMode() const { return mnWheelMode; }
148 :
149 0 : sal_uInt16 GetModifier() const
150 0 : { return (mnCode & (KEY_SHIFT | KEY_MOD1 | KEY_MOD2)); }
151 0 : bool IsShift() const
152 0 : { return ((mnCode & KEY_SHIFT) != 0); }
153 0 : bool IsMod1() const
154 0 : { return ((mnCode & KEY_MOD1) != 0); }
155 0 : bool IsMod2() const
156 0 : { return ((mnCode & KEY_MOD2) != 0); }
157 : bool IsMod3() const
158 : { return ((mnCode & KEY_MOD3) != 0); }
159 : };
160 :
161 0 : inline CommandWheelData::CommandWheelData()
162 : {
163 0 : mnDelta = 0;
164 0 : mnNotchDelta = 0;
165 0 : mnLines = 0;
166 0 : mnWheelMode = CommandWheelMode::NONE;
167 0 : mnCode = 0;
168 0 : mbHorz = false;
169 0 : mbDeltaIsPixel = false;
170 0 : }
171 :
172 0 : inline CommandWheelData::CommandWheelData( long nWheelDelta, long nWheelNotchDelta,
173 : sal_uLong nScrollLines,
174 : CommandWheelMode nWheelMode, sal_uInt16 nKeyModifier,
175 : bool bHorz, bool bDeltaIsPixel )
176 : {
177 0 : mnDelta = nWheelDelta;
178 0 : mnNotchDelta = nWheelNotchDelta;
179 0 : mnLines = nScrollLines;
180 0 : mnWheelMode = nWheelMode;
181 0 : mnCode = nKeyModifier;
182 0 : mbHorz = bHorz;
183 0 : mbDeltaIsPixel = bDeltaIsPixel;
184 0 : }
185 :
186 :
187 : // - CommandScrollData -
188 :
189 :
190 : class VCL_DLLPUBLIC CommandScrollData
191 : {
192 : private:
193 : long mnDeltaX;
194 : long mnDeltaY;
195 :
196 : public:
197 : CommandScrollData();
198 : CommandScrollData( long nDeltaX, long nDeltaY );
199 :
200 0 : long GetDeltaX() const { return mnDeltaX; }
201 0 : long GetDeltaY() const { return mnDeltaY; }
202 : };
203 :
204 0 : inline CommandScrollData::CommandScrollData()
205 : {
206 0 : mnDeltaX = 0;
207 0 : mnDeltaY = 0;
208 0 : }
209 :
210 0 : inline CommandScrollData::CommandScrollData( long nDeltaX, long nDeltaY )
211 : {
212 0 : mnDeltaX = nDeltaX;
213 0 : mnDeltaY = nDeltaY;
214 0 : }
215 :
216 :
217 : // - CommandModKeyData -
218 :
219 :
220 : class VCL_DLLPUBLIC CommandModKeyData
221 : {
222 : private:
223 : sal_uInt16 mnCode;
224 :
225 : public:
226 : CommandModKeyData();
227 : CommandModKeyData( sal_uInt16 nCode );
228 :
229 : bool IsShift() const { return (mnCode & MODKEY_SHIFT) != 0; }
230 0 : bool IsMod1() const { return (mnCode & MODKEY_MOD1) != 0; }
231 0 : bool IsMod2() const { return (mnCode & MODKEY_MOD2) != 0; }
232 : bool IsMod3() const { return (mnCode & MODKEY_MOD3) != 0; }
233 :
234 0 : bool IsLeftShift() const { return (mnCode & MODKEY_LSHIFT) != 0; }
235 : bool IsLeftMod1() const { return (mnCode & MODKEY_LMOD1) != 0; }
236 : bool IsLeftMod2() const { return (mnCode & MODKEY_LMOD2) != 0; }
237 : bool IsLeftMod3() const { return (mnCode & MODKEY_LMOD3) != 0; }
238 :
239 0 : bool IsRightShift() const { return (mnCode & MODKEY_RSHIFT) != 0; }
240 : bool IsRightMod1() const { return (mnCode & MODKEY_RMOD1) != 0; }
241 : bool IsRightMod2() const { return (mnCode & MODKEY_RMOD2) != 0; }
242 : bool IsRightMod3() const { return (mnCode & MODKEY_RMOD3) != 0; }
243 : };
244 :
245 : inline CommandModKeyData::CommandModKeyData()
246 : {
247 : mnCode = 0L;
248 : }
249 :
250 0 : inline CommandModKeyData::CommandModKeyData( sal_uInt16 nCode )
251 : {
252 0 : mnCode = nCode;
253 0 : }
254 :
255 :
256 : // - CommandDialogData -
257 :
258 :
259 : enum class ShowDialogId
260 : {
261 : Preferences = 1,
262 : About = 2,
263 : };
264 :
265 : class VCL_DLLPUBLIC CommandDialogData
266 : {
267 : ShowDialogId m_nDialogId;
268 : public:
269 0 : CommandDialogData( ShowDialogId nDialogId = ShowDialogId::Preferences )
270 0 : : m_nDialogId( nDialogId )
271 0 : {}
272 :
273 0 : ShowDialogId GetDialogId() const { return m_nDialogId; }
274 : };
275 :
276 : // Media Commands
277 : enum class MediaCommand
278 : {
279 : ChannelDown = 1, // Decrement the channel value, for example, for a TV or radio tuner.
280 : ChannelUp = 2, // Increment the channel value, for example, for a TV or radio tuner.
281 : NextTrack = 3, // Go to next media track/slide.
282 : Pause = 4, // Pause. If already paused, take no further action. This is a direct PAUSE command that has no state.
283 : Play = 5, // Begin playing at the current position. If already paused, it will resume. This is a direct PLAY command that has no state.
284 : PlayPause = 6, // Play or pause playback.
285 : PreviousTrack = 7, // Go to previous media track/slide.
286 : Record = 8, // Begin recording the current stream.
287 : Rewind = 9,// Go backward in a stream at a higher rate of speed.
288 : Stop = 10,// Stop playback.
289 : MicOnOffToggle = 11,// Toggle the microphone.
290 : MicrophoneVolumeDown = 12,// Increase microphone volume.
291 : MicrophoneVolumeMute = 13,// Mute the microphone.
292 : MicrophoneVolumeUp = 14,// Decrease microphone volume.
293 : VolumeDown = 15,// Lower the volume.
294 : VolumeMute = 16,// Mute the volume.
295 : VolumeUp = 17,// Raise the volume.
296 : Menu = 18,// Button Menu pressed.
297 : MenuHold = 19,// Button Menu (long) pressed.
298 : PlayHold = 20,// Button Play (long) pressed.
299 : NextTrackHold = 21,// Button Right holding pressed.
300 : PreviousTrackHold = 22,// Button Left holding pressed.
301 : };
302 :
303 : class VCL_DLLPUBLIC CommandMediaData
304 : {
305 : MediaCommand m_nMediaId;
306 : bool m_bPassThroughToOS;
307 : public:
308 : CommandMediaData(MediaCommand nMediaId)
309 : : m_nMediaId(nMediaId)
310 : , m_bPassThroughToOS(true)
311 : {
312 : }
313 0 : MediaCommand GetMediaId() const { return m_nMediaId; }
314 0 : void SetPassThroughToOS(bool bPassThroughToOS) { m_bPassThroughToOS = bPassThroughToOS; }
315 : bool GetPassThroughToOS() const { return m_bPassThroughToOS; }
316 : };
317 :
318 : // - CommandSelectionChangeData -
319 : class VCL_DLLPUBLIC CommandSelectionChangeData
320 : {
321 : private:
322 : sal_uLong mnStart;
323 : sal_uLong mnEnd;
324 :
325 : public:
326 : CommandSelectionChangeData();
327 : CommandSelectionChangeData( sal_uLong nStart, sal_uLong nEnd );
328 :
329 0 : sal_uLong GetStart() const { return mnStart; }
330 0 : sal_uLong GetEnd() const { return mnEnd; }
331 : };
332 :
333 : inline CommandSelectionChangeData::CommandSelectionChangeData()
334 : {
335 : mnStart = mnEnd = 0;
336 : }
337 :
338 0 : inline CommandSelectionChangeData::CommandSelectionChangeData( sal_uLong nStart,
339 : sal_uLong nEnd )
340 : {
341 0 : mnStart = nStart;
342 0 : mnEnd = nEnd;
343 0 : }
344 :
345 : class VCL_DLLPUBLIC CommandSwipeData
346 : {
347 : double mnVelocityX;
348 : double mnVelocityY;
349 : public:
350 0 : CommandSwipeData()
351 : : mnVelocityX(0)
352 0 : , mnVelocityY(0)
353 : {
354 0 : }
355 0 : CommandSwipeData(double nVelocityX, double nVelocityY)
356 : : mnVelocityX(nVelocityX)
357 0 : , mnVelocityY(nVelocityY)
358 : {
359 0 : }
360 0 : double getVelocityX() const { return mnVelocityX; }
361 : double getVelocityY() const { return mnVelocityY; }
362 : };
363 :
364 : class VCL_DLLPUBLIC CommandLongPressData
365 : {
366 : double mnX;
367 : double mnY;
368 : public:
369 0 : CommandLongPressData()
370 : : mnX(0)
371 0 : , mnY(0)
372 : {
373 0 : }
374 0 : CommandLongPressData(double nX, double nY)
375 : : mnX(nX)
376 0 : , mnY(nY)
377 : {
378 0 : }
379 0 : double getX() const { return mnX; }
380 0 : double getY() const { return mnY; }
381 : };
382 :
383 :
384 : // - CommandEvent -
385 : enum class CommandEventId
386 : {
387 : NONE = 0,
388 : ContextMenu = 1,
389 : StartDrag = 2,
390 : Wheel = 3,
391 : StartAutoScroll = 4,
392 : AutoScroll = 5,
393 : StartExtTextInput = 7,
394 : ExtTextInput = 8,
395 : EndExtTextInput = 9,
396 : InputContextChange = 10,
397 : CursorPos = 11,
398 : PasteSelection = 12,
399 : ModKeyChange = 13,
400 : HangulHanjaConversion = 14,
401 : InputLanguageChange = 15,
402 : ShowDialog = 16,
403 : Media = 17,
404 : SelectionChange = 18,
405 : PrepareReconversion = 19,
406 : QueryCharPosition = 20,
407 : Swipe = 21,
408 : LongPress = 22,
409 : };
410 :
411 : class VCL_DLLPUBLIC CommandEvent
412 : {
413 : private:
414 : Point maPos;
415 : void* mpData;
416 : CommandEventId mnCommand;
417 : bool mbMouseEvent;
418 :
419 : public:
420 : CommandEvent();
421 : CommandEvent( const Point& rMousePos, CommandEventId nCmd,
422 : bool bMEvt = false, const void* pCmdData = NULL );
423 :
424 0 : CommandEventId GetCommand() const { return mnCommand; }
425 0 : const Point& GetMousePosPixel() const { return maPos; }
426 0 : bool IsMouseEvent() const { return mbMouseEvent; }
427 0 : void* GetEventData() const { return mpData; }
428 :
429 : const CommandExtTextInputData* GetExtTextInputData() const;
430 : const CommandInputContextData* GetInputContextChangeData() const;
431 : const CommandWheelData* GetWheelData() const;
432 : const CommandScrollData* GetAutoScrollData() const;
433 : const CommandModKeyData* GetModKeyData() const;
434 : const CommandDialogData* GetDialogData() const;
435 : CommandMediaData* GetMediaData() const;
436 : const CommandSelectionChangeData* GetSelectionChangeData() const;
437 : const CommandSwipeData* GetSwipeData() const;
438 : const CommandLongPressData* GetLongPressData() const;
439 : };
440 :
441 0 : inline CommandEvent::CommandEvent()
442 : {
443 0 : mpData = NULL;
444 0 : mnCommand = CommandEventId::NONE;
445 0 : mbMouseEvent = false;
446 0 : }
447 :
448 0 : inline CommandEvent::CommandEvent( const Point& rMousePos,
449 : CommandEventId nCmd, bool bMEvt, const void* pCmdData ) :
450 0 : maPos( rMousePos )
451 : {
452 0 : mpData = const_cast<void*>(pCmdData);
453 0 : mnCommand = nCmd;
454 0 : mbMouseEvent = bMEvt;
455 0 : }
456 :
457 0 : inline const CommandExtTextInputData* CommandEvent::GetExtTextInputData() const
458 : {
459 0 : if ( mnCommand == CommandEventId::ExtTextInput )
460 0 : return static_cast<const CommandExtTextInputData*>(mpData);
461 : else
462 0 : return NULL;
463 : }
464 :
465 : inline const CommandInputContextData* CommandEvent::GetInputContextChangeData() const
466 : {
467 : if ( mnCommand == CommandEventId::InputContextChange )
468 : return static_cast<const CommandInputContextData*>(mpData);
469 : else
470 : return NULL;
471 : }
472 :
473 0 : inline const CommandWheelData* CommandEvent::GetWheelData() const
474 : {
475 0 : if ( mnCommand == CommandEventId::Wheel )
476 0 : return static_cast<const CommandWheelData*>(mpData);
477 : else
478 0 : return NULL;
479 : }
480 :
481 0 : inline const CommandScrollData* CommandEvent::GetAutoScrollData() const
482 : {
483 0 : if ( mnCommand == CommandEventId::AutoScroll )
484 0 : return static_cast<const CommandScrollData*>(mpData);
485 : else
486 0 : return NULL;
487 : }
488 :
489 0 : inline const CommandModKeyData* CommandEvent::GetModKeyData() const
490 : {
491 0 : if( mnCommand == CommandEventId::ModKeyChange )
492 0 : return static_cast<const CommandModKeyData*>(mpData);
493 : else
494 0 : return NULL;
495 : }
496 :
497 0 : inline const CommandDialogData* CommandEvent::GetDialogData() const
498 : {
499 0 : if( mnCommand == CommandEventId::ShowDialog )
500 0 : return static_cast<const CommandDialogData*>(mpData);
501 : else
502 0 : return NULL;
503 : }
504 :
505 0 : inline CommandMediaData* CommandEvent::GetMediaData() const
506 : {
507 0 : if( mnCommand == CommandEventId::Media )
508 0 : return static_cast<CommandMediaData*>(mpData);
509 : else
510 0 : return NULL;
511 : }
512 :
513 0 : inline const CommandSelectionChangeData* CommandEvent::GetSelectionChangeData() const
514 : {
515 0 : if( mnCommand == CommandEventId::SelectionChange )
516 0 : return static_cast<const CommandSelectionChangeData*>(mpData);
517 : else
518 0 : return NULL;
519 : }
520 :
521 0 : inline const CommandSwipeData* CommandEvent::GetSwipeData() const
522 : {
523 0 : if( mnCommand == CommandEventId::Swipe )
524 0 : return static_cast<const CommandSwipeData*>(mpData);
525 : else
526 0 : return NULL;
527 : }
528 :
529 0 : inline const CommandLongPressData* CommandEvent::GetLongPressData() const
530 : {
531 0 : if( mnCommand == CommandEventId::LongPress )
532 0 : return static_cast<const CommandLongPressData*>(mpData);
533 : else
534 0 : return NULL;
535 : }
536 :
537 : #endif // INCLUDED_VCL_CMDEVT_HXX
538 :
539 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|